Linux_进程管理相关命令
一、进程管理命令
1、ps —— 进程查看命令
1️⃣:ps(process state)命令用于列出当前的进程
2️⃣:可以显示详细的进程信息,包括:
- 用户识别符(UID),它确定进程的特权
- 唯一进程识别符(PID)
- CPU和已经花费的实时时间
- 进程在各种位置上分配的内存数量
- 进程的位置STDOUT,称为控制终端
- 当前的进程状态
3️⃣:ps支持三种选项格式
- UNIX(POSIX)选项,可以分组但必须以连字符开头
- BSD 选项,可以分组但不可与连字符同用
- GNU 长选项,以双连字符开头
4️⃣:ps(process state),显示进程信息。注意事项:
- 加了[]中括号的,表示内核线程,通常位于顶部
- exiting或defunct表示僵尸进程
5️⃣:常用选项:
- a //显示所有与终端有关的进程
- u //显示进程是由哪个用户启动的
- x //显示所有与终端无关的进程
- -e //显示所有进程,与-A效果相同
- -l //以长格式显示
- -F //显示更详细的完整格式的进程信息
- -f //显示更详细的完整格式的进程信息
- -H //以进程层级格式显示进程相关信息
- -o //根据自己的需要选择要显示的字段
6️⃣:ps相关参数结果解析
- ps aux (不能加 -)
- VSZ //Virtual memory SiZe,虚拟内存集
- RSS //ReSident Size,常驻内存集
- STAT //进程状态
- TIME //运行时的累积时长
- ps
- NI //nice值
- PRI //优先级
- PSR //进程运行在哪个CPU核心上
- RTPTRIO //实时优先级
- C //运行的CPU编号
- STIME //进程的启动时间
- VSZ //Virtual memory SiZe,虚拟内存集
- RSS //ReSident Size,常驻内存集
- STAT //进程状态
- TIME //运行时的累积时长
7️⃣:示例
[root@localhost ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.9 0.6 178784 13560 ? Ss 09:45 0:04 /usr/lib/systemd/systemd --switched-root --system --deserialize 17 root 2 0.0 0.0 0 0 ? S 09:45 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? I< 09:45 0:00 [rcu_gp] root 4 0.0 0.0 0 0 ? I< 09:45 0:00 [rcu_par_gp] root 5 0.0 0.0 0 0 ? I 09:45 0:00 [kworker/0:0-xfs-cil/dm-0] root 6 0.0 0.0 0 0 ? I< 09:45 0:00 [kworker/0:0H-kblockd] root 8 0.0 0.0 0 0 ? I< 09:45 0:00 [mm_percpu_wq] root 9 0.0 0.0 0 0 ? S 09:45 0:00 [ksoftirqd/0] root 10 0.0 0.0 0 0 ? I 09:45 0:00 [rcu_sched] root 11 0.0 0.0 0 0 ? S 09:45 0:00 [migration/0] root 12 0.0 0.0 0 0 ? S 09:45 0:00 [watchdog/0] root 13 0.0 0.0 0 0 ? S 09:45 0:00 [cpuhp/0] root 14 0.0 0.0 0 0 ? S 09:45 0:00 [cpuhp/1] ........... [root@localhost ~]# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 09:45 ? 00:00:04 /usr/lib/systemd/systemd --switched-root --system --deserialize 17 root 2 0 0 09:45 ? 00:00:00 [kthreadd] root 3 2 0 09:45 ? 00:00:00 [rcu_gp] root 4 2 0 09:45 ? 00:00:00 [rcu_par_gp] root 5 2 0 09:45 ? 00:00:00 [kworker/0:0-events_power_efficient] root 6 2 0 09:45 ? 00:00:00 [kworker/0:0H-kblockd] root 8 2 0 09:45 ? 00:00:00 [mm_percpu_wq] root 9 2 0 09:45 ? 00:00:00 [ksoftirqd/0] root 10 2 0 09:45 ? 00:00:00 [rcu_sched] root 11 2 0 09:45 ? 00:00:00 [migration/0] root 12 2 0 09:45 ? 00:00:00 [watchdog/0] root 13 2 0 09:45 ? 00:00:00 [cpuhp/0] root 14 2 0 09:45 ? 00:00:00 [cpuhp/1] .......... [root@localhost ~]# ps -elf F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 4 S root 1 0 0 80 0 - 44696 do_epo 09:45 ? 00:00:04 /usr/lib/systemd/systemd --switched-root --system --deserialize 17 1 S root 2 0 0 80 0 - 0 - 09:45 ? 00:00:00 [kthreadd] 1 I root 3 2 0 60 -20 - 0 - 09:45 ? 00:00:00 [rcu_gp] 1 I root 4 2 0 60 -20 - 0 - 09:45 ? 00:00:00 [rcu_par_gp] 1 I root 5 2 0 80 0 - 0 - 09:45 ? 00:00:00 [kworker/0:0-events_power_efficient] 1 I root 6 2 0 60 -20 - 0 - 09:45 ? 00:00:00 [kworker/0:0H-kblockd] 1 I root 8 2 0 60 -20 - 0 - 09:45 ? 00:00:00 [mm_percpu_wq] 1 S root 9 2 0 80 0 - 0 - 09:45 ? 00:00:00 [ksoftirqd/0] 1 I root 10 2 0 80 0 - 0 - 09:45 ? 00:00:00 [rcu_sched] 1 S root 11 2 0 -40 - - 0 - 09:45 ? 00:00:00 [migration/0] 5 S root 12 2 0 -40 - - 0 - 09:45 ? 00:00:00 [watchdog/0] ........... [root@localhost ~]# ps -o pid,command,ni PID COMMAND NI 2084 -bash 0 2111 ps -o pid,command,ni 0 [root@localhost ~]# ps -o pid,command,ni,ppid,c PID COMMAND NI PPID C 2084 -bash 0 2083 0 2113 ps -o pid,command,ni,ppid,c 0 2084 0
2、pstree —— 查看进程树命令
1️⃣:示例
[root@localhost ~]# pstree systemd─┬─NetworkManager───2*[{NetworkManager}] ├─VGAuthService ├─anacron ├─atd ├─auditd─┬─sedispatch │ └─2*[{auditd}] ├─crond ├─dbus-daemon───{dbus-daemon} ├─dhclient ├─irqbalance───{irqbalance} ├─login───bash ├─lsmd ├─mcelog ├─polkitd───5*[{polkitd}] ├─rhsmcertd ├─rngd───{rngd} ├─rsyslogd───2*[{rsyslogd}] ├─smartd ├─sshd─┬─2*[sshd───sshd───bash] │ └─sshd───sshd───bash───pstree ├─sssd─┬─sssd_be │ └─sssd_nss ├─systemd───(sd-pam) ├─systemd-journal ├─systemd-logind ├─systemd-udevd ├─tuned───3*[{tuned}] └─vmtoolsd───{vmtoolsd}
3、pgrep —— 过滤显示想要的进程;在当前系统中找符合某些特性的进程;只显示进程号
1️⃣:示例
[root@localhost ~]# pgrep sshd 1083 1686 1690 1855 1859 2078 2083 [root@localhost ~]# ps -ef | grep sshd root 1083 1 0 09:45 ? 00:00:00 /usr/sbin/sshd root 1686 1083 0 09:47 ? 00:00:00 sshd: root [priv] root 1690 1686 0 09:47 ? 00:00:00 sshd: root@pts/0 root 1855 1083 0 09:49 ? 00:00:00 sshd: root [priv] root 1859 1855 0 09:49 ? 00:00:00 sshd: root@pts/1 root 2078 1083 0 09:51 ? 00:00:00 sshd: root [priv] root 2083 2078 0 09:52 ? 00:00:00 sshd: root@pts/2 root 2198 2084 0 10:04 pts/2 00:00:00 grep --color=auto sshd
4、pidof —— 根据进程名查找其PID号
1️⃣:演示
[root@localhost ~]# pidof sshd 2083 2078 1859 1855 1690 1686 1083 [root@localhost ~]# ps -ef | grep sshd root 1083 1 0 09:45 ? 00:00:00 /usr/sbin/sshd root 1686 1083 0 09:47 ? 00:00:00 sshd: root [priv] root 1690 1686 0 09:47 ? 00:00:00 sshd: root@pts/0 root 1855 1083 0 09:49 ? 00:00:00 sshd: root [priv] root 1859 1855 0 09:49 ? 00:00:00 sshd: root@pts/1 root 2078 1083 0 09:51 ? 00:00:00 sshd: root [priv] root 2083 2078 0 09:52 ? 00:00:00 sshd: root@pts/2 root 2204 2084 0 10:06 pts/2 00:00:00 grep --color=auto sshd
5、vmstat —— 虚拟内存状态查看命令
1️⃣:语法:vmstat [options] [delay [count]]
示例:
- vmstat 2 //表示每2秒刷新一次
- vmstat 2 5 //表示每2秒刷新一次,刷新5次后退出
2️⃣:常用选项:
- -s //显示内存的统计数据
3️⃣:演示
[root@localhost ~]# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 1434576 3196 306752 0 0 84 20 74 107 1 1 98 1 0
4️⃣:vmstat相关参数解释
procs: r(running) //表示等待运行的队列长度,也即等待运行的进程的个数 b(block) //表示阻塞队列长度,也即处于不可中断睡眠态的进程个数 memory: swpd //交换内存的使用总量 free //空闲物理内存总量 buffer //用于buffer的内存总量 cache //用于cache的内存总量 swap: si(swap in) //表示从物理内存有多少页面换进swap,也即数据进入swap的数据速率(kb/s) so(swap out) //表示从swap有多少页面换进物理内存,也即数据离开swap的数据速率(kb/s) io: bi(block in) //表示磁盘块有多少个被调入内存中,也即从块设备读入数据到系统的速率(kb/s) bo(block out) //表示有多少个磁盘块从内存中被同步到硬盘上去了,也即保存数据至块设备的速率(kb/s) system: in( interrupts) //表示中断的个数,也即中断速率(kb/s) cs(context switch) //表示上下文切换的次数,也即进程切换速率(kb/s) CPU: us //表示用户空间 sy //表示内核空间 id //表示空闲百分比 wa //表示等待IO完成所占据的时间百分比 st //表示steal,被虚拟化技术偷走的时间(比如运行虚拟机)