1)ps

ps命令用于查看系统中的进程状态,格式为:“ps [参数]”。

查看进程与状态:“ps -aux”

查找某个特定的进程信息:"ps -aux | grep 进程名"

inux系统中时刻运行着许许多多的进程,如果能够合理的管理它们,绝对有益于系统的性能优化,系统进程总共有5种不同的状态:

R(运行):正在运行或在运行队列中等待。
S(中断):休眠中, 在等待某个条件的形成或接受到信号。
D(不可中断):收到信号不唤醒和不可运行, 进程必须等待直到有中断发生。
Z:(僵死):进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放。
T:(停止):进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行。

USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND
进程的所有者进程ID号运算器占用率内存占用率虚拟内存使用量(单位是KB)占用的固定内存量(单位是KB)所在终端进程状态被启动的时间实际使用CPU的时间命令名称与参数
参数作用
-a显示所有的进程(包括其他用户的)
-u用户以及其他详细信息
-x显示没有控制终端的进程

2)top

top命令用于监视进程的活动与系统负载,格式为:“top”

可以比喻成是“强化版的Windows任务管理器”

wKiom1d8zTiQ-w22AAE4WBJ1lhc479.jpg-wh_50

前面的五行为系统整体的统计信息,下面我们来逐行的讲解:

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:命令名称

交互命令:

  • P  根据 CPU 使用的多少进行排序

  • T  根据时间、累计时间排序

  • q  退出 top 命令

  • m  切换显示内存信息

  • t  切换显示进程和 CPU 状态信息

  • c  切换显示命令名称和完整命令行

  • M  根据使用内存的大小进行排序

  • W  将当前设置写入 ~/.toprc 文件中。(这是写 top 配置文件的推荐方法)

 

pidof命令用于查询某个特定程序的进程PID值,格式为:“pidof [参数] [程序名称]”。

查询"sshd"进程的PID值:"pidof sshd"

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;)

自动刷新查看文件内容的变化:

[root@linuxprobe ~]# tail -f ~/jobs.txt

模拟训练:试试"Ctrl+z",学习jobs、bg和fg命令。

开始执行写入命令:

[root@linuxprobe ~]# (while true ;do echo -n " working " >> ~/jobs.txt;sleep 1 ;done;)

确认一直在被写入字符:

[root@linuxprobe ~]# tail -f ~/jobs.txt

敲击"ctrl+z"后,这条命令的进程被暂停了(另外的终端中不再被追加内容):

[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命令可以查看到所有在后台运行着的进程:

[root@linuxprobe ~]# jobs
[1]+ Stopped ( while true; do
echo -n " working " >> ~/jobs.txt; sleep 1;
done )

运行bg命令让后台的程序继续执行,现在后台中只有一个进程,所以省略了编号,完整格式应为"bg 1":

[root@linuxprobe ~]# bg
[1]+ ( while true; do
echo -n " working " >> ~/jobs.txt; sleep 1;
done )

运行fg命令将后台的进程再调回前台,程序依然在运行,此时你可以敲击组合键"ctrl+c"啦:

[root@linuxprobe ~]# fg
( while true; do
echo -n " working " >> ~/jobs.txt; sleep 1;
done )&

有些命令在执行时会不断的在终端上输出信息,影响到我们继续输入命令了,此时便可以在这条命令后面添加个"&"符号,那么从一开始执行该命令就会是在后台执行(不是在后台暂停,而是在运行的)。

3)pgrep  ---- 查找当前运行的进程,并列出匹配给定条件进程的 pid

dada@DaDa:~$ pgrep python3802
3879