文章目录
一、程序和进程的关系
- 程序
1、保存在硬盘、光盘等介质中的可执行代码和数据
2、静态保存的代码
- 进程
1、在CPU及内存中运行的程序代码
2、动态执行的代码
3、父、子进程
4、每个程序可以创建一个或多个进程
二、ps命令 查看进程信息
ps aux ##查看静态的进程统计信息
-a:显示现行终端机下的所有进程,包括其他用户的进程
-u:显示进程拥有者、状态、资源占用等的详细信息(注意有“-”和无“-”的区别)
-x:显示没有控制终端的进程。通常与 a 这个参数一起使用,可列出较完整信息
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 193708 6704 ? Ss 10:07 0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 10:07 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 10:07 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 10:07 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S 10:07 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 10:07 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S 10:07 0:00 [rcu_sched]
root 10 0.0 0.0 0 0 ? S< 10:07 0:00 [lru-add-drain]
ps -elf
##查看静态进程统计信息
ps aux 与 ps -elf之间对比
ps aux 是最常用的 BSD 风格选项组合,其中的 a 简单的说,表示所有关联到终端的进程,如果同时使用 x 则代表所有进程;u 表示列出进程的用户。此外,由于一些ps版本的原因,也支持了 ps -aux
ps -elf
ps -elf 的 -e 代表列出所有进程,-l 代表长格式,-f 代表完整的格式,有时候也用 -F 代表超完整的格式。 不过,不同操作系统(如 Linux、BSD)的 ps 的版本和参数有很大差异,具体还是要以自己的手册而定。
三、top命令 查看进程信息
- 查看动态的进程排名信息
top
[root@localhost ~]# top
top - 11:42:39 up 1:35, 1 user, load average: 0.02, 0.04, 0.05
Tasks: 139 total, 1 running, 138 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 3861512 total, 3358252 free, 177084 used, 326176 buff/cache
KiB Swap: 4064252 total, 4064252 free, 0 used. 3407140 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
8564 root 20 0 227204 6472 5108 S 0.3 0.2 0:05.01 vmtoolsd
17628 root 20 0 162012 2300 1596 R 0.3 0.1 0:00.03 top
1 root 20 0 193708 6704 4168 S 0.0 0.2 0:02.05 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.04 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:00.03 migration/0
四、pgrep 查看进程信息
- 根据特定条件查询进程PID信息
选项:-l 列出程序名和进程UID
-o 进程起始UID
-n 进程终止UID
-u 指定进程的有效用户ID
-t:指定开启进程的终端
[root@localhost ~]# pgrep -l ssh
9109 sshd
9626 sshd
五、pstree 命令 查看进程信息树
pstree [选项] [PID或用户名]
选项:-a 显示启动每个进程对应的完整指令,包括启动进程的路径、参数等。
-c 不使用精简法显示进程信息,即显示的进程中包含子进程和父进程。
-n 根据进程 PID 号来排序输出,默认是以程序名排序输出的。
-p 显示进程的 PID。
-u 显示进程对应的用户名称。
[root@localhost ~]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
├─VGAuthService
├─agetty
├─anacron
├─auditd───{auditd}
├─chronyd
├─crond
├─dbus-daemon───{dbus-daemon}
├─firewalld───{firewalld}
├─irqbalance
├─lvmetad
├─master─┬─pickup
│ └─qmgr
├─polkitd───6*[{polkitd}]
├─rsyslogd───2*[{rsyslogd}]
├─sshd───sshd───bash───pstree
├─systemd-journal
├─systemd-logind
├─systemd-udevd
├─tuned───4*[{tuned}]
【注意】;如果提示没有安装该命令,则需要先安装一下:yum -y install psmisc
六、进程的启动方式
-
手工启动:1、前台启动:用户输入命令,直接执行程序
2、后台启动:在命令行尾加入“&”符号
-
调度启动:1、使用at命令,设置一次性计划任务
2、使用crontab命令,设置周期性计划任务
七、进程的前后台调度与终止
-
Ctrl+Z组合键
将当前进程挂起,即调入后台并停止执行
-
jobs命令
查看处于后台的任务列表
- fg命令
将后台进程恢复到前台运行,可指定任务序号
- Ctrl+C组合键
终端正在执行的命令
- kill、killall命令
kill用于终止指定PID号的进程
killall用于终止指定名称的所有进程
-9:选项用于强制终止
-
pkill 命令
根据特定条件终止相应进程
常用命令选项:-u:根据进程所属的用户名终止相应进程
-t:根据进程所在的终端终止相应进程
pgrep -l -U root ## 筛选root用户下的所有进程
[root@localhost ~]# pgrep -l -U root
1 systemd
2 kthreadd
3 ksoftirqd/0
5 kworker/0:0H
7 migration/0
8 rcu_bh
9 rcu_sched
[root@localhost ~]# pkill -9 -U root ##强制终止root用户下的所有进程