使用 Windows 时,经常会出现莫名其妙程序卡死无响应的状态,这个时候我们都需要调出任务管理器来强制终止进程,这其实就是 Windows 下的一个进程管理办法。相对的 Linux 下也有进程管理,面对服务器黑压压的命令行界面,我们没法像 Windows 一样调出一个 UI 界面来管理进程,所以熟练掌握 Linux 下的进程管理命令是非常重要的。
一、显示当前系统进程
- 1. 使用 ps 命令即可打印出相关进程信息,相关命令内容和参数如下:
PID :进程识别号
TTY :终端机号
TIME:此进程消耗的 CPU 时间
CMD :正在执行的命令或者进程名
- 2. ps 命令常用参数内容如下:
# 一般我们都会使用 ps -aux |more 命令查看进程信息
-a : 显示当前终端的所有进程信息
-u : 以用户的格式显示进程信息
-x : 显示后台进程运行的参数
其中第一行每一列的详细信息分别如下:
USER : 用户名
PID : 进程号
%CPU : 进程占用 CPU 百分比
%MEM : 进程占用物理内存百分比
VSZ : 进程占用虚拟内存大小(KB)
RSS : 进程占用的物理内存大小(KB)
TTY : 终端名称
STAT : 进程状态(S-睡眠,s-表示该进程是回话先导进程,R-正在运行,D-等待运行,
N-表示进程有比普通进程优先级更低的优先级,Z-僵死进程,T-被跟踪or被终止等待)
START: 进程启动时间
TIME : 进程使用 CPU 的时间
COMMAND : 启动进程时所用的命令和参数,过长会被截断显示
- 3. 全格式的形式显示当前所有进程
ps -ef
-e: 显示所有进程
-f : 全格式显示
UID :用户名
PID :进程号
PPID :父进程号
C : CPU 用于计算执行优先级的因子。数值越大,表明进程是 CPU 密集型运算,
执行优先级会降低;数值越小,表明进程是 I/O 密集型运算,执行优先级会提高。
STIME :进程启动的时间
TTY : 终端名称
TIME : CPU时间
CMD : 启动进程时所用的命令和参数
二、终止进程
- 1. kill 和 killall 命令可以用来杀死进程,命令详细内容如下:
# 通过进程号杀死进程
kill PID
# 强制杀死进程
kill -9 PID
# 通过进程名可以杀死多个进程
killall 进程名
三、进程树
pstree 命令可以调出进程树,以便更直观的看到进程信息,命令详情如下:
# 显示进程树
pstree
-p :显示进程 ID
-u :显示进程所属用户
pstree -pu
四、服务管理
服务的本质其实就是后台运行的进程,一般都会监听某个端口,等待其他程序发送过来的请求, 例如:MySQL、Web服务、Ngnix、防火墙等,这些其实都是运行在计算机后台的程序,也称守护进程。
- 1. service 指令详情如下:
# 启动 mysql 服务
service mysql.server start
# 停止mysql 服务
service mysql.server stop
# 重新启动 mysql 服务
service mysql.server restart
# 查看 mysql 服务状态
service mysql.server status
# 启动 mysql 服务
service mysql.server reload
注: CentOS 7之后,不再使用 service ,而是 systemctl
-
2. 查看服务名
进程服务文件都存在了 /etc/init.d 目录下,使用如下命令即可看到所有的服务名:
ls -l /etc/init.d
五、运行级别
- 1. CentOS 6 有 7 个运行级别,详细如下(3、5级别是常见的):
0 : 系统停机状态,系统默认运行级别不能设为 0,否则不能正常启动
1 : 单用户工作状态,root 权限,用于系统维护,禁止远程登陆
2 : 多用户状态(没有 NFS),不支持网络
3 : 完全的多用户状态(有 NFS),登陆后进入控制台命令行模式
4 : 系统未使用,保留
5 : X11 控制台,登陆后进入图形 GUI 模式
6 : 系统正常关闭并重启,默认运行级别不能设为 6,否则不能正常启动
Linux 开机全过程:
开机 > BIOS > /boot > init 进程 > 运行级别 > 运行级别对应的服务
-
2. chkconfig 指令
chkconfig 命令可以给每个服务在不通运行级别下设置自启动或者关闭,指令详细内容如下:
# 查看服务
chkconfig --list
# 按服务名查看某个服务启动状态
chkconfig --list |grep ssrmu
chkconfig ssrmu --list
修改服务自启动状态,可以使用如下命令:
# 所有级别下 打开/关闭 serviceName 服务自启动
chkconfig sevicrName on/off
# 打开/关闭 serviceName 服务在 int 运行级别下的自启动
chkconfig --level int serviceName on/off
六、查看OS版本
不同的os发行版可能会有略微的差别,配置文件位置以及命令可能有所区别,这里提供查询OS版本的命令。
cat /etc/issue
cat /proc/version
uname -a
uname -s
七、动态监控进程
- 1. 使用 top 命令便可以动态的监控进程状态,top 和 ps 最大的区别就在于此,top 每隔一段时间会刷新正在运行的进程,并且可以做相关操作,命令参数详细如下:
-d int : 指定 top 命令
-i : 使 top 不显示任何闲置或者僵死进程
-p : 指定 PID 来监视某个进程的状态
- 2. top 命令交互操作按键:
P 以 CPU 使用率排序(默认)
M 以内存使用率排序
N 以 PID 排序
q 退出top
K 按 k 键可以输入 PID 杀死进程
八、查看系统网络情况
- 1. 使用 netstat 可以查看当前的网络情况,命令详情如下:
# 查看网络详情
netstat -anp
-an :按一定顺序排列输出
-p :显示哪个进程在调用
-t :和 tcp 有关
-d : 和 udp 有关
- 2. 使用 netstat -anp |grep electron-ssr 组合命令可以查看某个进程的网路情况,结果去下图:
九、后台运行进程
- &
在命令的最后面加入这个符号,此命令便会在后台执行
- &
- ctrl + z
将一个终端执行的命令挂起放到后台,此时这个命令(程序)是处于暂停状态的,不可以执行。
- ctrl + z
- jobs
查看当前有多少后台执行的命令,jobs -l 可以显示命令的 PID 。
- jobs
- fg
将后台中的命令调至前台继续运行,假若有多个后台运行的命令,可以使用 fg int 来将相应的命令调出到终端,int 值是使用 jobs 命令时的序号(非 PID)。
- fg
- bg
将一个在后台暂停的命令,变成继续执行 (在后台执行),假若有多个后台运行的命令,可以使用 bg int 来将相应命令放到后台执行,int 值是使用 jobs 命令时的序号(非 PID)。
- bg
注:先 ctrl + z 将命令挂起到后台,再使用 bg 就可以让其继续在后台执行,使用 fg 又可以在终端执行。
- ctrl + c
命令执行中途,可以中断命令的执行。
- ctrl + c
- ctrl + \
退出命令
- ctrl + \
- ctrl + d
退出终端,作用相当于在终端中输入exit后回车
- ctrl + d
- ctrl + s
中断控制台输出
- ctrl + s
- ctrl + q
恢复控制台输出
- ctrl + q
- ctrl + l
清屏,相当于 clear
- ctrl + l
网友评论