linux 系统如何管理进程?
今天给伙伴们分享一下Linux 系统进程管理,希望看了有所收获。
我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步!
如果伙伴们看了文档觉得有用,欢迎大家关注我的公众号,获取相关文档。爱运维,爱生活。
一、作业管理
1、jobs 命令查看后台作业
语法格式: jobs [参数]
常用参数:
- -l 显示作业列表及进程号
- -n 仅显示自发生变化的作业
- -p 仅显示其对应的进程号
- -r 仅显示运行的作业
- -s 仅显示暂停的作业
- -x 替代原有作业的进程ID
参考示例
显示当前后台的作业列表:
[root@edenluo.com ~]# jobs
显示当前后台的作业列表及进程号:
[root@edenluo.com ~]# jobs -l
仅显示运行的后台作业:
[root@edenluo.com ~]# jobs -r
仅显示已暂停的后台作业:
[root@edenluo.com ~]# jobs -s
仅显示自上次执行jobs命令后状态又发生变化的后台作业:
[root@edenluo.com ~]# jobs -n
2、fg 将作业放到前台运行
- 语法格式:fg [参数] 作业标识
将指定编号标识的作业放回到终端前台继续运行:
[root@edenluo.com ~]# fg 1
3、bg 在后台暂停的作业放到后台运行(启动后台暂停的作业)
- 语法格式:bg [参数]
将指定标识的任务放到后台继续执行:
[root@edenluo.com ~]# bg 1
扩展知识:执行指定任务,并将其放到后台执行:
[root@edenluo.com ~]# tar czvf File.tar.gz /Dir/www &
二、进程控制
1、关闭进程
- 关闭进程3个命令:kill killall pkill
- kill关闭进程:kill 进程号 关闭单个进程
- killall和pkill 命令用于杀死指定名字的进程
- 通过信号的方式来控制进程的
- kill -l => 列出所有支持的信号(了解) 用最多的是:9 信号
- 信号编号 信号名
1) SIGHUP 重新加载配置
2) SIGINT 键盘中断
3) SIGQUIT 退出
9) SIGKILL 强制终止 crtl+c
15)SIGTERM 终止(正常结束),缺省信号
18)SIGCONT 继续
19)SIGSTOP 停止
20)SIGTSTP 暂停 crtl+z
- kill和killall终止进程
[root@edenluo.com ~]# yum -y install psmisc
[root@edenluo.com ~]# kill 信号(signal) pid
[root@edenluo.com ~]# kill -HUP pid 观察pid的变化
[root@edenluo.com ~]# kill -STOP pid systemctl status nginx
[root@edenluo.com ~]# kill -9 pid 用kill 解决不了的,再用kill -9
[root@edenluo.com ~]# killall 信号 进程名称
[root@edenluo.com ~]# killall vim
[root@edenluo.com ~]# pkill vim
[root@edenluo.com ~]# pkill -9 进程名称
[root@edenluo.com ~]# pkill -t 终端
不加-9只杀死在终端上运行的进程,加-9连终端本身一起干掉
[root@edenluo.com ~]# pkill -u 用户名称
2、进程的优先级(了解)
- 优先级高的占用CPU时间多
- 系统分配给程序的数字
- 优先级特性:值越大,优先级越低,优先级范围:新标准:-20–19 原标准:-99–39
1、查看进程的优先级
[root@edenluo.com ~]# ps axo nice
2、设置进程优先级
1、启动时设置
- 默认情况会继承父进程的优先级,默认为0
- 调整优先级示例:
[root@edenluo.com ~]# nice -n -5 sleep 8000 & # 设置睡眠8000秒,&为不占用顶层试图
2、设置已经启动的进程优先级
- 命令:
[root@edenluo.com ~]# renice -nice PID
- 示例:
[root@edenluo.com ~]# renice -20 32050 # 将这个进程的优先级调整为-20
三、进程查看扩展命令
1、pstree 查看进程树
[root@edenluo.com ~]# pstree
- -a 显示参数
- -p 显示pid
- -u 显示用户名 只针对普通用户开启的进程
2、pidof 查找服务进程的PID号码
[root@edenluo.com ~]# pidof 进程名称
[root@edenluo.com ~]# pidof sshd
3245
3、pgrep 检索进程PID号码
- 语法格式:pgrep [参数] 服务名称
[root@edenluo.com ~]# pgrep -l eyes
1179 xeyes
4、w 显示已登录用户的信息
[root@edenluo.com ~]# w
16:51:43 up 8:30, 7 users, load average: 0.11, 0.27, 0.30
USER TTY FROM LOGIN@ IDLE JCPU
PCPU WHAT
root :0 :0 08:22 ?xdm? 29:39 0.23s
gdm-session-
root pts/0 :0 14:13 1:43 0.30s 0.30s bash
root pts/1 :0 11:19 5:19 0.62s 0.62s bash
root pts/2 :0 14:13 1:39m 0.06s 0.01s less
root pts/3 :0 14:54 7.00s 0.06s 0.01s w
root pts/4 :0 16:25 25:51 0.06s 0.06s bash
root pts/5 :0 16:40 7:11 0.24s 0.24s bash
5、who 查看当前登录用户信息
[root@edenluo.com ~]# who
root :0 2017-11-27 08:22 (:0)
root pts/0 2017-11-27 14:13 (:0)
root pts/1 2017-11-27 11:19 (:0)
root pts/2 2017-11-27 14:13 (:0)
root pts/3 2017-11-27 14:54 (:0)
root pts/4 2017-11-27 16:25 (:0)
root pts/5 2017-11-27 16:40 (:0)
6、users 显示当前登录的用户
[root@edenluo.com ~]# users
root root root root root root root
7、free 显示系统内存使用量情况
free 命令的功能是显示系统内存使用量情况,包含物理和交换内存的总量、使用量和空闲量情况。
语法格式:free [参数]
常用参数:
-b | 设置显示单位为Byte |
---|---|
-g | 设置显示单位为GB |
-h | 自动调整合适的显示单位 |
-k | 设置显示单位为KB |
-l | 显示低内存和高内存统计数据 |
-m | 设置显示单位为MB |
-o | 不显示缓冲区数据列 |
-s | 持续显示内存数据 |
-t | 显示内存使用总合 |
-V | 显示版本信息 |
- 参考示例
- 以默认的容量单位显示内存使用量信息:
[root@edenluo.com ~]# free
total used free shared buff/cache available
Mem: 2013304 1372796 87432 17620 553076 444040
Swap: 2097148 1804 2095344
- 以MB位单位显示内存使用量信息:
[root@edenluo.com ~]# free -m
total used free shared buff/cache available
Mem: 1966 1342 123 14 499 434
Swap: 2047 9 2038
- 以易读的单位显示内存使用量信息:
[root@edenluo.com ~]# free -h
total used free shared buff/cache available
Mem: 1.9Gi 1.3Gi 120Mi 14Mi 500Mi 431Mi
Swap: 2.0Gi 9.0Mi 2.0Gi
- 以易读的单位显示内存使用量信息,每个10秒刷新一次:
[root@edenluo.com ~]# free -hs 10
total used free shared buff/cache available
Mem: 1.9Gi 1.3Gi 119Mi 14Mi 500Mi 430Mi
Swap: 2.0Gi 9.0Mi 2.0Gi
total used free shared buff/cache available
Mem: 1.9Gi 1.3Gi 119Mi 14Mi 500Mi 430Mi
Swap: 2.0Gi 9.0Mi 2.0Gi
如果有版帮助,帮忙免费的关注一下公众号「想吃西红柿」「云原生运维实战派」后续会有更多实用的运维技术分享给伙伴们,您的关注就是我最大的成就。