R(运行):正在运行或在运行队列中等待。
S(中断):休眠中, 在等待某个条件的造成或接受到信号。
D(不可中断):收到信号不唤醒和不可运行, 进程必须等待直到有中断发生。
Z:(僵死):进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放。
T:(中止):进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后中止运行。
ps命令用于查看系统中的进程状态,格式为:“ps [参数]”。
查看进程与状态:“ps -aux”
查找某个特定的进程信息:”ps -aux | grep 进程名”linux
USER | PID | %CPU | %MEM | VSZ | RSS | TTY | STAT | START | TIME | COMMAND |
进程的全部者 | 进程ID号 | 运算器占用率 | 内容占用率 | 虚拟内存使用量(单位是KB) | 占用的固定内存量(单位是KB) | 所在终端 | 进程状态 | 被启动的时间 | 实际使用CPU的时间 | 命令名称与参数 |
参数 做用
-a 显示全部的进程(包括其余用户的)
-u 用户以及其余详细信息
-x 显示没有控制终端的进程缓存
top命令用于监视进程的活动与系统负载,格式为:“top”。性能优化
这个top命令可真的是太厉害了,彻底能够比喻成是“强化版的Windows任务管理器”,运行界面见右图:ssh
前面的五行为系统总体的统计信息,下面咱们来逐行的讲解:性能
第1行:系统时间,运行时间,登录用户数,系统负载(分别为1分钟、5分钟、15分钟的平均值)。
第2行:进程总数,运行中的,睡眠中的,中止的,僵尸的。
第3行:用户占用资源,系统内核占用资源,改变过优先级的进程,空闲的资源,等待输入输出的时间。
此行数据均为CPU数据并以百分比格式显示,例如”99.2 id”意味着有99.2%的CPU资源正在空闲中。
第4行:物理内存总量,使用量,空闲量,做为内核缓存的内存量。
第5行:虚拟内存总量,使用量,空闲量,已被提早加载的内存数据。学习
进程的信息区中包含了各个进程的详细信息,含义以下:优化
PID:进程ID号 USER:进程的全部者 PR:优先级 NI:优先级(负值表示优先级更高) VIRT:虚拟内存使用量 RES:物理内存使用量 SHR:共享内存大小 S:进程状态(上文中有提到) %CPU:运算器的使用百分比 %MEM:内存的使用百分比 TIME+:使用CPU的时间(单位是1/100秒) COMMAND:命令名称
pidof命令用于查询某个特定程序的进程PID值,格式为:“pidof [参数] [程序名称]”。spa
查询”sshd”进程的PID值:”pidof sshd”.net
kill命令用于终止某个特定PID号码的进程,格式为:“kill [参数] [进程PID号]”。
强制终止PID为4674的进程:”kill -9 4674″
✪其中的”-9″表明强制终止(SIGKILL),也是最经常使用的一种信号参数,查看所有请执行”kill -l”
killall命令用于终止某个特定名称的全部进程,格式为:“killall [参数] [进程名称]”。
终止名称为”sshd”的进程:”killall sshd”
在终端中运行一个命令后若是想当即的中止它,可使用组合键”Ctrl+c“,这样命令的进程将会完全的被终止。
但还有一种玩法是”Ctrl+z“,它是将命令的进程暂停(也叫挂载到后台或扔到后台),先来看两条命令吧:
这条命令会每秒向家目录中的jobs.txt中追加一个字符串:
[root@linuxprobe ~]# (while true ;do echo -n " working " >> ~/jobs.txt;sleep 1 ;done;)
|
自动刷新查看文件内容的变化:
1
|
[root@linuxprobe ~]# tail -f ~/jobs.txt
|
模拟训练:试试”Ctrl+z”,学习jobs、bg和fg命令。
开始执行写入命令:
1
|
[root@linuxprobe ~]# (while true ;do echo -n " working " >> ~/jobs.txt;sleep 1 ;done;)
|
确认一直在被写入字符:
1
|
[root@linuxprobe ~]# tail -f ~/jobs.txt
|
敲击”ctrl+z“后,这条命令的进程被暂停了(另外的终端中再也不被追加内容):
1
2 3 4 5 6 7 8 9 |
[root@linuxprobe ~]# (while true ;do echo -n " working " >> ~/jobs.txt;sleep 1 ;done;) ^Z [1]+ Stopped ( while true; do echo -n " working " >> ~/jobs.txt; sleep 1; done ) |
使用jobs命令能够查看到全部在后台运行着的进程:
1
2 3 4 5 6 7 |
[root@linuxprobe ~]# jobs [1]+ Stopped ( while true; do echo -n " working " >> ~/jobs.txt; sleep 1; done ) |
运行bg命令让后台的程序继续执行,如今后台中只有一个进程,因此省略了编号,完整格式应为”bg 1“:
1
2 3 4 5 6 7 |
[root@linuxprobe ~]# bg [1]+ ( while true; do echo -n " working " >> ~/jobs.txt; sleep 1; done ) |
运行fg命令将后台的进程再调回前台,程序依然在运行,此时你能够敲击组合键”ctrl+c“啦:
1
2 3 4 5 6 7 |
[root@linuxprobe ~]# fg ( while true; do echo -n " working " >> ~/jobs.txt; sleep 1; done )& |
有些命令在执行时会不断的在终端上输出信息,影响到咱们继续输入命令了,此时即可以在这条命令后面添加个”&“符号,那么从一开始执行该命令就会是在后台执行(不是在后台暂停,而是在运行的)。