linux基础13-进程管理
进程的概念程序:程序是数据和指令的集合,是一个静态的概念。比如/bin/ls、/bin/cp等二进制文件。同时程序可以长期存在系统中。进程:进程是程序运行的过程,是一个动态的概念。进程是存在生命周期的概念的,也就是说进程会随着程序的终止而销毁,不会永久存在系统中。进程的生命周期[root@k8s-node01 ~]# ps#查看当前用户进程PID TTYTIM...
进程的概念
程序:程序是数据和指令的集合,是一个静态的概念。比如/bin/ls、/bin/cp等二进制文件。同时程序可以长期存在系统中。
进程:进程是程序运行的过程,是一个动态的概念。进程是存在生命周期的概念的,也就是说进程会随着程序的终止而销毁,不会永久存在系统中。
进程的生命周期
[root@k8s-node01 ~]# ps #查看当前用户进程
PID TTY TIME CMD
57647 pts/1 00:00:00 bash
63487 pts/1 00:00:00 ps
[root@k8s-node01 ~]# ps aux|grep sshd #查看sshd相关的进程
root 6015 0.0 0.1 112860 4348 ? S<s Aug03 0:00 /usr/sbin/sshd -D
root 57644 0.0 0.2 163552 6112 ? Rs 18:38 0:01 sshd: root@pts/1
root 60619 0.0 0.2 163552 6112 ? S<s 19:23 0:01 sshd: root@pts/2
root 60796 0.0 0.2 163552 6108 ? S<s 19:24 0:01 sshd: root@pts/3
root 63753 0.0 0.0 112712 984 pts/1 S+ 20:05 0:00 grep --color=auto ssh
[root@k8s-node01 ~]# ps aux #查看所有进程
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.1 125728 4172 ? Ss Aug03 2:43 /usr/lib/systemd/systemd --switched-root --syste
root 2 0.0 0.0 0 0 ? S Aug03 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S Aug03 0:42 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< Aug03 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S Aug03 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S Aug03 0:00 [rcu_bh]
root 9 0.1 0.0 0 0 ? S Aug03 2:54 [rcu_sched]
root 10 0.0 0.0 0 0 ? S< Aug03 0:00 [lru-add-drain]
root 11 0.0 0.0 0 0 ? S Aug03 0:02 [watchdog/0]
root 12 0.0 0.0 0 0 ? S Aug03 0:02 [watchdog/1]
root 13 0.0 0.0 0 0 ? S Aug03 0:00 [migration/1]
root 14 0.0 0.0 0 0 ? S Aug03 0:21 [ksoftirqd/1]
root 16 0.0 0.0 0 0 ? S< Aug03 0:00 [kworker/1:0H]
root 18 0.0 0.0 0 0 ? S Aug03 0:00 [kdevtmpfs]
root 19 0.0 0.0 0 0 ? S< Aug03 0:00 [netns]
root 20 0.0 0.0 0 0 ? S Aug03 0:00 [khungtaskd]
root 21 0.0 0.0 0 0 ? S< Aug03 0:00 [writeback]
root 22 0.0 0.0 0 0 ? S< Aug03 0:00 [kintegrityd]
root 23 0.0 0.0 0 0 ? S< Aug03 0:00 [bioset]
USER: 运行进程的用户
PID: 进程ID
%CPU: CPU占用率
%MEM: 内存占用率
VSZ: 占用虚拟内存
RSS: 占用实际内存 驻留内存
TTY: 进程运行的终端
STAT: 进程状态 man ps (/STATE)
R 运行
S 可中断睡眠 Sleep
D 不可中断睡眠
T 停止的进程
Z 僵尸进程
X 死掉的进程
Ss s进程的领导者,父进程
S< <优先级较高的进程
SN N优先级较低的进程
R+ +表示是前台的进程组
Sl 以线程的方式运行
START: 进程的启动时间
TIME: 进程占用CPU的总时间
COMMAND: 进程文件,进程名
查看进程信息
[root@k8s-node01 ~]# w
20:08:18 up 1 day, 8:27, 3 users, load average: 0.04, 0.07, 0.12
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/1 192.168.1.101 18:38 2.00s 0.25s 0.02s w
root pts/2 192.168.1.101 19:23 38:02 12.40s 12.32s top
root pts/3 192.168.1.101 19:24 43:22 13.77s 13.72s top
[root@k8s-node01 ~]# uptime
20:09:13 up 1 day, 8:28, 3 users, load average: 0.02, 0.06, 0.12
# 0.02:1分钟内的平均负载
# 0.06:5分钟内的平均负载
# 0.12:15分钟内的平均负载
# 更详细的查看命令
[root@k8s-node01 ~]# top
# top命令中,可以使用如下命名
h 查看帮出
1 数字1,显示所有CPU核心的负载
z 以高亮显示数据
b 高亮显示处于R状态的进程
M 按内存使用百分比排序输出
P 按CPU使用百分比排序输出
q 退出top
进程管理
Kill pkill killall
[root@k8s-node01 sdd_test]# kill -l #列出所有信号
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
1: SIGHUP 通常用来重新加载配置文件
9: SIGKILL 强制杀死进程
15:SIGTERM 终止进程,默认kill使用该信号
当进程或服务没有停止的信号,可以使用系统的kill给进程发送信号
#默认kill进程父进程,这样才能彻底的杀掉该进程. 否则如果只是kill子进程,没有用
[root@k8s-node01 ~]# kill 18788
重载配置,PID号不会发生变化,只要PID发生变化说明进程被停止过
[root@k8s-node01 ~]# kill -1 20154
强制杀死某个进程.慎用
[root@k8s-node01 ~]# kill -9 20154
批量杀死进程
[root@k8s-node01 ~]# ps aux|grep nginx |grep -v grep|awk '{print $2}'|sed -r 's#(.*)#kill \1#g'|bash
[root@k8s-node01 ~]# killall nginx #跟进程的名称
[root@k8s-node01 ~]# pkill nginx #跟上进程名称
[root@k8s-node01 ~]# pkill -9 -t pts/
进程优先级
nice 值越高: 表示优先级越低,例如+19,该进程容易将CPU 使用量让给其他进程。
nice 值越低: 表示优先级越高,例如-20,该进程更不倾向于让出CPU。
NI: 实际nice级别,默认是0。 PR: 显示nice值,-20映射到0,19映射到39
如:ni:0 pr:20
如:ni:5 pr:25
#nice指定程序的优先级。语法格式 nice -n 优先级数字 进程名称
#1.开启vim并且指定程序优先级为-5
[root@k8s-node01 sdd_test]# nice -n -5 vim &
[1] 17097
#.查看该进程的优先级情况
[root@k8s-node01 sdd_test]# ps axo pid,command,nice |grep 98417
98417 vim -5
# renice命令修改一个正在运行的进程优先级。语法格式 renice -n 优先级数字 进程pid
查看sshd进程当前的优先级状态
[root@k8s-node01 sdd_test]# ps axo pid,command,nice |grep [s]shd
70840 sshd: root@pts/2 0
98002 /usr/sbin/sshd -D 0
调整sshd主进程的优先级
[root@k8s-node01 sdd_test]# renice -n -20 98002
98002 (process ID) old priority 0, new priority -20
[root@k8s-node01 sdd_test]# ps axo pid,command,nice |grep [s]shd
70840 sshd: root@pts/2 0 98002 /usr/sbin/sshd -D -20
[root@k8s-node01 sdd_test]# exit
当再次登陆sshd服务,会由主进程fork子进程(那么子进程会继承主进程的优先级)
[root@k8s-node01 sdd_test]# ps axo pid,command,nice |grep [s]shd
98002 /usr/sbin/sshd -D -20
98122 sshd: root@pts/0 -20
平均负载
如何理解平均负载: 平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数, 平均负载与 CPU 使用率并没有直接关系,1分钟、5分钟、15分钟平均负载越相近表示系统越趋于稳定。
因此可以简单理解为,平均负载其实就是单位时间内的活跃进程数。
平均负载高有可能是 CPU 密集型进程导致的;
平均负载高并不一定代表 CPU 使用率高,还有可能是 I/O 繁忙了;
当发现负载高的时候,可以使用 mpstat、pidstat 等工具,辅助分析负载的来源
[root@k8s-node01 sdd_test]# pidstat -u 5 1
Linux 3.10.0-957.el7.x86_64 (k8s-node01) 08/06/2019 _x86_64_ (2 CPU)
09:53:53 PM UID PID %usr %system %guest %CPU CPU Command
09:53:58 PM 0 9 0.00 0.20 0.00 0.20 1 rcu_sched
09:53:58 PM 0 2815 0.20 0.00 0.00 0.20 0 kworker/0:1H
09:53:58 PM 0 2888 0.20 0.60 0.00 0.79 1 systemd-journal
09:53:58 PM 0 5708 0.20 0.00 0.00 0.20 0 vmtoolsd
09:53:58 PM 0 6096 0.20 0.79 0.00 0.99 0 kube-proxy
09:53:58 PM 0 6100 0.00 0.20 0.00 0.20 0 rsyslogd
09:53:58 PM 0 16846 0.00 0.60 0.00 0.60 0 kworker/0:2
09:53:58 PM 0 17119 0.00 0.79 0.00 0.79 1 kworker/1:0
09:53:58 PM 0 17145 0.00 0.20 0.00 0.20 1 flanneld
09:53:58 PM 0 17168 0.00 0.79 0.00 0.79 1 pidstat
[root@k8s-node01 sdd_test]# mpstat -P ALL 5
Linux 3.10.0-957.el7.x86_64 (k8s-node01) 08/06/2019 _x86_64_ (2 CPU)
09:54:49 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
09:54:54 PM all 0.10 0.00 0.41 0.00 0.00 0.00 0.00 0.00 0.00 99.49
09:54:54 PM 0 0.20 0.00 0.40 0.00 0.00 0.20 0.00 0.00 0.00 99.19
09:54:54 PM 1 0.20 0.00 0.61 0.00 0.00 0.00 0.00 0.00 0.00 99.19
更多推荐
所有评论(0)