概论
在Linux系统中,进程(Process)是指正在执行的程序的实例。Linux操作系统是一个多任务系统,可以同时运行多个进程,进程之间相互独立、互不干扰。本文将介绍Linux系统的进程管理,包括如何查看进程,如何控制和管理进程。
查看进程
Linux系统有许多命令可以用来查看当前正在运行的进程。下面介绍常用的进程查看命令。
1. ps
ps命令是最常用的查看进程的命令。它的用法非常简单,只需要在终端输入:ps。这时可以得到当前用户所有进程的基本信息,包括PID进程ID、TTY终端、TIME运行时间、CMD命令行等信息。不过由于输出结果很多,一般会使用一些参数,以便过滤出需要的进程信息。
常用参数:
ps -A:列出所有进程信息,相当于ps -e
ps -ax:列出所有进程信息,包括没有控制终端的进程
ps -ef:列出所有进程信息,包括环境变量
ps -u:按用户ID和用户名来显示进程信息
ps -aux:列出当前所有进程信息,并输出较详细的信息,包括CPU利用率和内存使用率等
2. top
top命令是一个实时的动态系统监视器,可以实时地查看系统运行状态和进程信息,类似于Windows任务管理器。top命令的输出结果包含CPU利用率、内存使用率、进程数、负载等信息,可以实时更新。top命令可以按各种方式对进程进行排序,如按CPU使用率或按内存使用率等。在终端输入top即可启动top命令。
常用参数:
top -u:按用户名显示进程信息
top -d:指定top运行的时间间隔,单位为秒
top -p:只显示指定的进程信息
3. pstree
pstree命令可以生成一个进程树,显示出进程之间的关系。在终端输入pstree即可启动pstree命令。
常用参数:
pstree -a:显示完整进程路径名
pstree -p:显示进程的PID号
pstree -u:显示进程的拥有者
pstree -h:不显示处理器进程
控制进程
在Linux系统中,可以使用kill命令来控制进程。kill命令可以向进程发送不同的信号,以达到不同的目的。
1. 发送信号
kill命令的默认信号是TERM(15),会向进程发送一个终止信号,让进程结束运行。发送信号的命令格式如下:
kill -信号 进程ID
例如,发送TERM信号给进程1234:
kill -15 1234
除了TERM信号,其他常用的信号还有:
HUP 1 终端控制进程(通常是init进程)已经断开
INT 2 进程接收到中断信号
QUIT 3 进程接收到退出信号
KILL 9 强制停止进程(无法处理或无响应的进程)
TERM 15 优雅地结束进程
STOP 17 暂停进程
CONT 18 恢复暂停的进程
注:KILL信号是被强制发送的,即使进程无法处理该信号,也会被立即杀死。建议优先使用TERM信号结束进程。
2. 查找进程ID
在使用kill命令发送信号之前,需要先查找要关闭的进程的进程ID。可以使用前面介绍的ps命令或top命令查看进程ID。例如,要结束名为“firefox”的进程,可以使用以下命令来查找进程ID:
ps -ef | grep firefox
这样可以列出进程ID以及其他信息。其中第二列就是进程ID。
3. 关闭进程
一种更快速、直接的方法是使用pkill命令,它直接根据进程名关闭进程,不需要先查找进程ID。例如,关闭名为“firefox”的进程,可以使用命令:
pkill firefox
这个命令将向所有名为“firefox”的进程发送TERM信号,使其结束运行。
管理进程
在Linux系统中,可以使用systemctl命令管理和控制系统中的服务。systemctl命令可以启动、停止、重启、查看、修改等系统服务,也可以控制进程。
1. 启动服务
使用systemctl启动服务只需要执行以下命令:
systemctl start 服务名称
例如,启动mysqld服务:
systemctl start mysqld
2. 停止服务
使用systemctl停止服务只需要执行以下命令:
systemctl stop 服务名称
例如,停止mysqld服务:
systemctl stop mysqld
3. 重启服务
使用systemctl重启服务只需要执行以下命令:
systemctl restart 服务名称
例如,重启httpd服务:
systemctl restart httpd
4. 查看服务状态
使用systemctl查看服务状态只需要执行以下命令:
systemctl status 服务名称
例如,查看httpd服务状态:
systemctl status httpd
5. 启动、停止、重启服务
使用systemctl启动、停止、重启服务可以一次性完成,只需要在systemctl后接start、stop、restart即可。例如,重启httpd服务:
systemctl restart httpd
6. getService、enable等管理
使用systemctl还能够查询系统中启动了哪些服务,以及设置系统启动时哪些服务自动启动。例如,查询mysql服务是否启用,执行以下命令:
systemctl status mysql.service
输出的结果中有一行Active:active(running),表示已启动。
设置mysql服务自动启动,执行以下命令:
systemctl enable mysql.service
将mysql服务添加到开机启动列表,系统启动时将自动启用mysqld。
总结
本文介绍了Linux系统的进程管理、控制和管理,常用命令包括ps、top、kill、pstree和systemctl。通过学习这些命令,可以更高效地在Linux系统中管理进程和服务。
原创文章,作者:古哥,转载需经过作者授权同意,并附上原文链接:https://iymark.com/articles/9656.html