Linux常用命令三之进程及任务管理命令
一、基础概念
1、 进程:触发任何一个事件时,系统都会将它定义成为一个进程,并且给予这个进程一个ID,称为PID,同时依据触发这个进程的用户与相关属性关系,给予这个PID一组有效的权限设置。通常,程序一般是放在磁盘中,然后通过用户的执行来触发。触发后会加载到内存中成为一个个体,那就是进程。为了操作系统可管理这个进程,因此进程有给予执行者的权限/属性等参数,并包括进程所需要的脚本与数据或文件数据等,最后再给予一个PID。
二、相关命令
1、 top:top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,常用于服务端性能分析。
top命令显示的结果可以分为两个部分:统计信息、进程信息。
(1)统计信息:
第一行显示的是:目前开机时间、开机到目前为止所经历的时间、已经登陆系统的用户人数、系统在间隔时间内的 平均负载。
第二行显示的是:目前进程的总量与个别进程在什么状态(running sleepingstopped zombie)。最后显示的是僵尸进程,需要特别注意。
第三行显示的是:CPU整体负载数,其中wa表示的是I/O等待,通常系统会变慢是由于I/O产生的问题。因此要注意这个选 项耗用的CPU资源。
第四行和第五行显示的是:目前物理内存和虚拟内存的使用情况。值得注意的是要注意的是 swap使用量尽量少!否则表示系统的物理内存实在不足!
(2)进程信息
PID:进程ID号
USER:进程所有者
PR:进程有限执行顺序,越小越早被执行;
NI:nice值,负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES: 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR : 共享内存大小,单位kb
S : 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU : CPU时间占用百分比
%MEM — 进程使用的物理内存和总内存百分比
TIME+ — 该进程启动后占用CPU时间,即占用CPU使用时间的累加值,单位1/100秒
COMMAND — 进程启动命令名称(命令名/命令行)
top在执行过程中可以使用交互命令(即按键命令),常用的命令如下:
<空格> 立即刷新显示;
h或者? 显示在top当中可以输入的按键命令
P 以cpu的使用资源排序显示
M 以内存的占用资源排序显示
t 切换显示进程和CPU装态信息
q 退出
2、htop:与Linux传统的top相比,htop更加人性化。它可让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标操作。
3、 ps:该命令是最基本同时也是非常强大的进程查看命令。使用该命令可以查看有哪些进程正在运行以及运行的状态,进程是否结束进程有没有僵死,哪些进程占用了过多的资源等等。
① 在终端输入ps,显示如下:
该命令显示当前登录用户的执行进程。显示的项目共分为四项依次为PID(进程ID)、TTY(终端名称)、TIME(进程执 行时间)、CMD(该进程的命令行输入)
② 在终端输入 ps –ef,显示如下:
该命令将显示所有执行进程的信息。显示的项目依次为UID(执行进程的用户ID)、PID(进程ID)、PPID(父进程 ID)、TTY(终端名称)、STIME(进程启动时间)、TIME(进程执行时间) 、CMD(该进程的命令行输入)
③ 在终端输入 ps –ef|gerp 特定进程,显示如下:
将只显示出包含liuying的输出行,可以查询执行进程的用户为liuying的所有进程。
4、进程管理命令
(1)kill:可以用来终止后台进程。kill命令是通过向进程发送指定的信号来结束进程的。
① 常见的signal:
上面利用 kill -l 列出所有信号,其中:
SIGHUP(1):启动被终止的进程,可让该PID重新读取自己的配置文件,类似重新启动。
SIGKILL(9):代表强制中断一个进程的进行,如果该进程进行到一半,那么尚未完成的部分可能会有“半产 品”产生,类似vim会有.filename.swp保留下来。
SIGTERM(15):以正常的结束进程来终止该进程。由于是正常的终止,所以后续的操作会将它完成。
② 常见的命令
kill –s信号进程号:其中,发出的信号既可以是信号名也可以对应数字。例如
kill -9 1234命令,将终止PID(进程号)为1234的进程
③ ps -ef|grep vim:用ps查找(进程pid号),然后杀掉。
首先在终端执行sleep 30
然后在另一终端ps其pid号
在第一个终端显示:
(2)killall:杀死所有同名进程。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还
需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。
(3)pkill
(4) nice:给予新的nice值。nice命令可以修改进程的优先级,进而调整进程调度。nice值的范围是[-20, 19], -20表示进程的最高优先级,19表示进程的最低优先级。Linux进程的默认nice值为0。使用nice可调整进程的优先级,这样调度器就会依据进程优先级,为其分配CPU资源。
①sleep 200&后,ps -el | grep sleep抓取,无nice命令,优先级数值为0
nice sleep 200&后,ps -el | grep sleep抓取,优先级NI数值为10
②普通用户,无权拉高优先级 ,若设置优先级则需要进入root
使用场景:在实际应用中,如果要运行一个CPU密集型程序,最好通过nice命令来启动它,这样可以保证其他进程获得更高的优先级,即使服务器或台式机在负载很重的情况下,也可以快速响应。
(5)renice:renice命令是与nice关联的一个命令,由re两个字母就知道可以重新调整进程执行的优先级,可以指定群组或者用户名调整优先级等级,并修改隶属于该群组或者用户的所有程序优先级。等级范围为[-20,19]。同样仅系统管理员可以拉高优先级。nice在进程拉起时调整,renice在进程执行时调整。
使用场景:一个紧急进程,需要更多CPU资源时,可以拉低之前运行进程的优先级。