继续承接上节课的内容。
3)pgrep
pgrep 是通过程序的名字来查询进程的工具,一般是用来判断程序是否正在运行。在服务器的配置和管理中,这个工具常被应用,简单明了;
用法:
#pgrep 参数选项 程序名
常用参数:
-l 列出程序名和进程ID;
-o 进程起始的ID;
-n 进程终止的ID;
举例:
pgrep -lo httpd
4557 httpd
pgrep -ln httpd
4566 httpd
pgrep -l httpd
4557 httpd
4560 httpd
4561 httpd
4562 httpd
4563 httpd
4564 httpd
4565 httpd
4566 httpd
pgrep httpd
4557
4560
4561
4562
4563
4564
4565
4566
4)top
在Windows中,有个任务管理器:
我们能够实时观察到当前每个软件占用资源的情况,尤其是当电脑特别卡时,打开任务管理器,会发现某个软件进程占用CPU超高。在任务管理器中可直接结束进程。
Linux中,也有一个类似于任务管理器的命令,那就是top命令。
top
它是动态显示的。可以实时观察每个进程占用CPU与内存的状况。
说几个参数:
显示进程信息
top
设置信息更新次数
top -n 2//表示更新两次后终止更新显示
设置信息更新时间
top -d 3//表示更新周期为3秒
显示指定的进程信息
top -p 139//显示进程号为139的进程信息,CPU、内存占用率等
在top命令执行后,可以按下按键得到对显示的结果进行排序:
“M”键:根据内存使用量来排序。
“P”键:根据CPU占有率来排序。
“T”键:根据进程运行时间的长短来排序。
“U”键:可以根据后面输入的用户名来筛选进程。
“K”键:可以根据后面输入的PID来杀死进程。
“q”键:退出。
“h”键:获得帮助。
“1”键:查看到每个核的使用率
5)kill
在top命令中K可以杀死(结束)进程,通常我们使用kill命令杀死进程的比较多。
kill 从字面来看,就是用来杀死进程的命令,但事实上,这个或多或少带有一定的误导性。从本质上讲,kill 命令只是用来向进程发送一个信号,至于这个信号是什么,是用户指定的。
kill 命令的执行原理是这样的,kill 命令会向操作系统内核发送一个信号(多是终止信号)和目标进程的 PID,然后系统内核根据收到的信号类型,对指定进程进行相应的操作。
kill 命令的基本格式如下:
[root@localhost ~]# kill [信号] PID
kill 命令是按照 PID 来确定进程的,所以 kill 命令只能识别 PID,而不能识别进程名。Linux 定义了几十种不同类型的信号,读者可以使用 kill -l 命令查看所有信号及其编号
发送终止信号(9)给一个进程这是它其中的一种信号,强制终止一个进程的命令:
kill -9 进程号 kill -SIGKILL 进程号 kill -KILL 进程号
信号可以用数字,也可以用信号名,信号名称的前缀 SIG是可以省略的。
只有信号9(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略。 下面是常用的信号:
kill和kill -9的区别:
默认参数下,kill 发送SIGTERM(15)信号给进程,告诉进程,你需要被关闭,请自行停止运行并退出。
kill -9 发送SIGKILL信号给进程,告诉进程,你被终结了,请立刻退出。
TERM(或数字9)表示“无条件终止”;
因此 kill - 9 表示强制杀死该进程;与SIGTERM相比,这个信号不能被捕获或忽略,同时接收这个信号的进程在收到这个信号时不能执行任何清理。
信息号10(USR1)12(USR2) :
和预定义好的信号不同,这两个是留给程序自行定义的进程信号,在维基百科中查到:
USR1 亦通常被用来告知应用程序重载配置文件;例如,向 Apache HTTP 服务器发送一个 USR1 信号将导致以下步骤的发生:停止接受新的连接,等待当前连接停止,重新载入配置文件,重新打开日志文件,重启服务器,从而实现相对平滑的不关机的更改。
例如, kill -USR1 nginx的pid 可以重新平滑的生成nginx日志文件, kill -USR2 php-fpm的pid 可以重启php-fpm。
kill的升级版pkill命令
Linux pkill 用于杀死一个进程,与 kill 不同的是它会杀死指定名字的所有进程,类似于 killall 命令。
kill 命令杀死指定进程 PID,需要配合 ps 使用,而 pkill 直接对进程对名字进行操作,更加方便。
pkill [选项] name
pkill -9 php-fpm //结束所有的 php-fpm 进程
结:
进程我们就简单了解这几个命令,除了kill是杀死进程,其他都是用来做查看进程信息的命令。