进程管理


  • 了解进程 状态/生命周期
  • 查看进程
  • 管理进程 kill killall pkill
  • 进程的调度
  • 进程的nice

了解进程状态/生命周期

什么是进程?

进程的状态?

进程的生命周期?

查看进程

[bavduer@system_manager ~]$ sudo yum -y install psmisc htop atop net-tools

##查看特定进程的信息,静态 <top可以动态查看进程的信息>
[bavduer@system_manager ~]$ sudo ps aux | grep sshd ---(10000)查看指定进程的静态信息
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 6775 0.0 0.4 112756 4320 ? Ss 11:13 0:00 /usr/sbin/sshd -D
root 18950 0.0 0.6 161360 6144 ? Ss 17:12 0:00 sshd: bavduer [priv]
bavduer 18952 0.0 0.2 161360 2348 ? S 17:12 0:00 sshd: bavduer@pts/0
bavduer 19057 0.0 0.0 112724 988 pts/0 S+ 18:09 0:00 grep --color=auto sshd aux:
-ax: 显示所有进程的pid、tty、cmd、cpu占用总时间
-u: 显示用户列表中的所有硬件使用信息 grep: 可以用来过滤特定字符或特定程序名 grep "string字符串" USER: 运行进程的用户
PID: 子进程ID -- ppid父进程ID
%CPU: CPU占用率
%MEM: 内存占用率memory
VSZ: 占用虚拟内存
RSS: 占用实际内存 驻留内存
TTY: 进程运行的终端
STAT: 进程状态
man ps (/STATE) R 运行
S 可中断睡眠 Sleep
D 不可中断睡眠 (usually IO)
T 停止的进程/暂停⏸️
Z 僵尸进程
X 死掉的进程【了解 】
Ss s进程的领导者,父进程
S< 优先级较高的进程
SN N优先级较低的进程
R+ +表示是前台的进程组
Sl 以线程的方式运行 START: 进程启动时的时间
TIME: 进程占用CPU的总时间
COMMAND: 进程文件,进程名 [bavduer@system_manager ~]$ sudo ss -anptu | grep sshd (10000)
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 *:22 *:* users:(("sshd",pid=6775,fd=3))
tcp LISTEN 0 128 :::22 :::* users:(("sshd",pid=6775,fd=4)) Netid: 网络连接协议
State: 监听状态
Recv-Q: 网络接收队列
Send-Q: 网络发送队列
Local Address:Port: 本地地址:端口号
Peer Address:Port: 远端地址:端口号 [bavduer@system_manager ~]$ sudo netstat -anptu | grep sshd (10000)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6775/sshd
tcp 0 0 192.168.161.100:22 192.168.161.1:53983 ESTABLISHED 18950/sshd: bavduer
tcp6 0 0 :::22 :::* LISTEN 6775/sshd
Recv-Q Send-Q分别表示网络接收队列、发送队列. Q是Queue的缩写.
这两个值通常应该为0,如果不为0可能是有问题的 ##pstree查看进程树
[bavduer@system_manager ~]$ sudo pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
├─agetty
├─auditd───{auditd}
├─crond
├─dbus-daemon
├─lvmetad
├─master─┬─pickup
│ └─qmgr
├─polkitd───6*[{polkitd}]
├─rsyslogd───2*[{rsyslogd}]
├─sshd───sshd───sshd───bash───pstree
├─systemd-journal
├─systemd-logind
├─systemd-udevd
└─tuned───4*[{tuned}] [bavduer@system_manager ~]$ sudo pstree -p
systemd(1)─┬─NetworkManager(5987)─┬─{NetworkManager}(6117)
│ └─{NetworkManager}(6151)
├─agetty(6040)
├─auditd(5320)───{auditd}(5327)
├─crond(6000)
├─dbus-daemon(5924)
├─lvmetad(3135)
├─master(6954)─┬─pickup(19038)
│ └─qmgr(6960)
├─polkitd(5897)─┬─{polkitd}(5979)
│ ├─{polkitd}(5994)
│ ├─{polkitd}(5999)
│ ├─{polkitd}(6010)
│ ├─{polkitd}(6013)
│ └─{polkitd}(6033)
├─rsyslogd(6776)─┬─{rsyslogd}(6808)
│ └─{rsyslogd}(6811)
├─sshd(6775)───sshd(18950)───sshd(18952)───bash(18953)───pstree(19265)
├─systemd-journal(3115)
├─systemd-logind(5916)
├─systemd-udevd(3139)
└─tuned(6777)─┬─{tuned}(7060)
├─{tuned}(7061)
├─{tuned}(7062)
└─{tuned}(7076) ##pgrep查看特定进程的pid号, 常常与kill联合使用, 杀死问题进程
-l 同时显示进程名和PID
-o 当匹配多个进程时,显示进程号最小的那个
-n 当匹配多个进程时,显示进程号最大的那个
[bavduer@system_manager ~]$ sudo pgrep sshd --服务名或者命令名
6775
18950
18952
[bavduer@system_manager ~]$ sudo pgrep -l sshd
6775 sshdtingnfjangj
18950 sshd
18952 sshd
[bavduer@system_manager ~]$ sudo pgrep -o sshd ---显示最高的父进程
6775
[bavduer@system_manager ~]$ sudo pgrep -n sshd ---显示最低的子进程
18952![nethogs](img/nethogs_state.png)

top动态查看进程信息

  • buffers: 块设备数据缓冲,记录文件系统metadata(目录\权限\属性)
  • cached: 文件内容的缓冲
  • us: 用户使用CPU的百分比
  • sy:内核使用CPU的百分比
  • ni: 用户进程空间内改变过优先级的进程占用CPU的百分比
  • id: 空闲CPU百分比
  • wa: 等待输入输出的CPU时间百分比
  • hi: 硬件中断
  • si: 软件中断
  • st: CPU实时

htop动态查看进程信息

进程管理kill、killall、pkill

 1) SIGHUP		重新加载配置
2) SIGINT 键盘中断 ^C
3) SIGQUIT 键盘退出
9) SIGKILL 强制终止
15) SIGTERM 终止(正常结束),缺省信号
18) SIGCONT 继续
19) SIGSTOP 停止
20) SIGTSTP 暂停^Z
A. kill案例1: 杀死vim进程<****** 9信号15信号>
[root@system_manager ~]# ps aux | grep vim
root 5594 0.1 0.2 151492 5120 pts/0 S+ 11:37 0:00 vim /root/b.txt
root 5609 0.0 0.0 112720 984 pts/1 S+ 11:37 0:00 grep --color=auto vim
[root@system_manager ~]# kill 5594
[root@system_manager ~]# ps aux | grep vim
root 5657 0.0 0.0 112720 984 pts/1 S+ 11:38 0:00 grep --color=auto vim B. kill案例2: 杀死远程sshd连接
[root@system_manager ~]# ps aux | grep sshd
root 1162 0.0 0.2 112796 4296 ? Ss 10:59 0:00 /usr/sbin/sshd -D
root 3665 0.0 0.2 160884 5716 ? Ss 11:01 0:00 sshd: root@pts/1
root 5764 0.0 0.0 112708 972 pts/0 S+ 11:40 0:00 grep --color=auto sshd
[root@system_manager ~]# kill -9 1162
[root@system_manager ~]# ps aux | grep sshd
root 3665 0.0 0.2 160884 5716 ? Ss 11:01 0:00 sshd: root@pts/1
root 5795 0.0 0.0 112708 972 pts/0 S+ 11:40 0:00 grep --color=auto sshd
[root@system_manager ~]# kill -9 3665 c.killall案例:
[root@system_manager ~]# ps aux | grep vim
root 6000 0.0 0.2 151568 5232 pts/0 S+ 11:43 0:00 vim file1.txt
root 6052 0.0 0.2 151564 5224 pts/1 S+ 11:44 0:00 vim file2.txt
root 6281 0.0 0.0 112720 980 pts/3 S+ 11:46 0:00 grep --color=auto vim
[root@system_manager ~]# killall vim
[root@system_manager ~]# ps aux | grep vim
root 6313 0.0 0.0 112720 980 pts/3 S+ 11:46 0:00 grep --color=auto vim d.pkill案例:
[root@system_manager ~]# w
17:29:06 up 21 min, 4 users, load average: 0.00, 0.03, 0.10
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root :0 :0 107月18 ?xdm? 28.49s 0.26s /usr/libexec/gnome-session-binary --sessio
root pts/0 10.18.41.54 17:18 1:54 0.04s 0.04s -bash
root pts/1 10.18.41.54 17:10 1:46 0.06s 0.06s -bash
root pts/2 10.18.41.54 17:11 2.00s 0.12s 0.01s w
[root@system_manager ~]# pkill -9 -t pts/0
[root@system_manager ~]# w
17:29:35 up 22 min, 3 users, load average: 0.00, 0.03, 0.10
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root :0 :0 107月18 ?xdm? 28.43s 0.26s /usr/libexec/gnome-session-binary --sessio
root pts/1 10.18.41.54 17:10 2:15 0.06s 0.06s -bash
root pts/2 10.18.41.54 17:11 7.00s 0.13s 0.02s w

进程前后台调度

1、前台运行:
# firefox 192.168.1.250
会发现该程序一直占用终端,其他命令不能够再在这个终端运行
2、后台运行
1)命令执行的时候,直接将其放置于后台运行
# firefox 192.168.1.250 &
[1] 6222
后台运行不会占用执行命令的终端,用户仍然可以使用这个终端做操作
2)对于一个已经运行的命令,如何将其放置于后台 ctrl+z
# firefox 192.168.1.250
[1] Done firefox 192.168.1.250
[2]+ Stopped firefox 192.168.1.250
ctrl+z将前台进程放置于后台,但是该进程在后台是停止的状态
# jobs //查看后台进程运行状态
[2]+ Stopped firefox 192.168.1.250
# bg 2 //激活后台进程
[2]+ firefox 192.168.1.250 &
# jobs
[2]+ Running firefox 192.168.1.250 & bg 任务编号 : 指定任务在后台运行
fg 任务编号 : 将后台运行的命令变成前台运行
# fg 2
firefox 192.168.1.250 注意:不管你是前台运行,还是后台运行,只要终端一关闭,进程就停止了。
那么如何让一个命令或者程序脱离终端?
使用nohup命令。
# nohup firefox 192.168.1.250 &
[1] 6537
# nohup: ignoring input and appending output to `nohup.out' //按回车

进程的nice值

谦让值:nice
作用:指定或者调整用户进程的nice值
nice值越高,该进程抢占资源的能力越弱
nice值越低,该进程抢占资源的能力越强
范围:-20~19 相关命令
nice -- 运行时直接设置nice值
用法: nice -n 数字 command renice -- 对于已经运行的,调整nice值
用法: renice 数字 PID

最新文章

  1. AngularJS 后台交互
  2. Express调用mssql驱动公共类dbHelper
  3. Mongodb副本集
  4. css实现垂直居中的方法
  5. SDP协议中的Continuation State
  6. 如何保证写出来的程序没BUG
  7. SQL Server 无法打开物理文件的 2 种解决办法
  8. Homestead PHP7安装phpredis扩展
  9. Markdown简单教程
  10. 如何上传webshell后改回原来的webshell的格式
  11. Shell中去除字符串前后空格的方法
  12. luogu P3197 [HNOI2008]越狱
  13. 【python】django上传文件
  14. Windows系统中监控文件复制操作的几种方式
  15. (转)EOS中账户、钱包和密钥的关系
  16. C++11--正则表达式&lt;regex&gt;
  17. GridLayout和GridView的区别
  18. OpenGL学习--开发环境
  19. 你使用 Web 平台安装程序命令行工具
  20. JSON 接口如何实现 RSA 非对称加密与签名

热门文章

  1. 2022 icpc 沈阳站 记录(非题解)
  2. vscode将本地代码实时同步到服务器
  3. 高CPU Java应用分析
  4. django验证码模块django-simple-captcha的使用介绍
  5. python manage.py loaddata dumpdata 用于导出和导入数据库中的数据
  6. WPF侧边导航栏实现
  7. 在Ubuntu19.04系统中安装Emacs遇到的问题
  8. Unity 使用JIMO 做MR扫图(Vuforia) 优化
  9. 064_Js常用的五大事件 onclick nochanger onload onsubmit onblur
  10. JavaScript判断是否包含中文字符