程序和进程的关系
程序
- 保存在硬盘,光盘等介质中的可执行代码和数据
- 文件中静态保存的代码
进程
- 在cpu内存中运行和程序代码
- 动态执行代码
- 父子进程
- 每个程序可以创建一个或多个进程
ps命令(静态查看进程统计信息)
ps -aux
a:显示当前终端下所有进程信息,包含其他用户进程。与“x”选项结合时显示系统中所有进程信息
u:使用以用户为主的格式输出进程信息
x:显示当前用户在所有终端下的进程信息
-e:显示系统内的所有进程信息
-l:使用长格式显示进程信息
-f:使用完整的格式显示进程信息
[root@localhost ~]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 193804 6868 ? Ss 11:08 0:01 /usr/lib/systemd/systemd --switched-root --system --des
root 2 0.0 0.0 0 0 ? S 11:08 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 11:08 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 11:08 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S 11:08 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 11:08 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? R 11:08 0:00 [rcu_sched]
root 10 0.0 0.0 0 0 ? S< 11:08 0:00 [lru-add-drain]
root 11 0.0 0.0 0 0 ? S 11:08 0:00 [watchdog/0]
root 12 0.0 0.0 0 0 ? S 11:08 0:00 [watchdog/1]
root 13 0.0 0.0 0 0 ? S 11:08 0:00 [migration/1]
root 14 0.0 0.0 0 0 ? S 11:08 0:00 [ksoftirqd/1]
root 16 0.0 0.0 0 0 ? S< 11:08 0:00 [kworker/1:0H]
root 18 0.0 0.0 0 0 ? S 11:08 0:00 [kdevtmpfs]
top(动态查看进程统计信息)
op 命令可以动态地持续监听进程地运行状态,与此同时,该命令还提供了一个交互界面,用户可以根据需要,人性化地定制自己的输出,进而更清楚地了进程的运行状态。
[root@localhost ~]# top
top - 14:24:50 up 3:16, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 170 total, 1 running, 169 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 2028116 total, 1155932 free, 436524 used, 435660 buff/cache
KiB Swap: 2098172 total, 2098172 free, 0 used. 1357188 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 193804 6868 4176 S 0.0 0.3 0:01.98 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.07 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.02 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:00.51 rcu_sched
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain
11 root rt 0 0 0 0 S 0.0 0.0 0:00.05 watchdog/0
12 root rt 0 0 0 0 S 0.0 0.0 0:00.05 watchdog/1
13 root rt 0 0 0 0 S 0.0 0.0 0:00.01 migration/1
14 root 20 0 0 0 0 S 0.0 0.0 0:00.08 ksoftirqd/1
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/1:0H
18 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
pgrep命令——查询进程的PID
选项
-
-U:指定用户
-
-l:显示进程名
-
-a:显示完整格式的进程名
-
-P < PID>:显示指定进程的子进程
[root@localhost ~]# pgrep -U root -l //查询nancy用户的进程PID,并显示进程名
1 systemd
2 kthreadd
3 ksoftirqd/0
[root@localhost ~]# pgrep "log" -l 查询进程名称中带有"log"的进程的PID,并显示进程名称
465 xfs-log/dm-0
707 xfs-log/sda1
728 xfs-log/dm-2
801 systemd-logind
803 abrt-watch-log
806 abrt-watch-log
814 rsyslogd
[root@localhost ~]# pgrep -P 823 //查询PID为823的进程的子进程
846
pstree命令——以树形结构列出进程信息
格式
pstree [OPTION] [ PID | USER ]
选项
选项 | 作用 |
---|---|
-a | 列出完整的命令信息 |
-p | 同时列出相对应的PID号 |
-p < pid> | 显示指定进程及其子进程,同时显示每个进程的PID |
-u | 列出相对应的用户名 |
-H < pid> | 高亮显示指定进程及其前辈进程 |
-T | 不显示线程thread,默认显示线程 |
示例
pstree PID,显示指定进程及其子进程
[root@localhost ~]# pstree 1
systemd─┬─ModemManager───2*[{ModemManager}]
├─NetworkManager───2*[{NetworkManager}]
├─VGAuthService
├─2*[abrt-watch-log]
├─abrtd
├─accounts-daemon───2*[{accounts-daemon}]
├─alsactl
├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}
│ └─3*[{at-spi-bus-laun}]
pstree -p PID,显示指定进程及其子进程,同时显示PID
[root@localhost ~]# pstree -p 2261
tracker-store(2261)─┬─{tracker-store}(2265)
├─{tracker-store}(2277)
├─{tracker-store}(2278)
├─{tracker-store}(2281)
├─{tracker-store}(2282)
├─{tracker-store}(2283)
└─{tracker-store}(2284)
pstree -u 用户名,显示指定用户的进程
[root@localhost ~]# pstree -u root -p
systemd(1)─┬─ModemManager(815)─┬─{ModemManager}(838)
│ └─{ModemManager}(845)
├─NetworkManager(891)─┬─{NetworkManager}(899)
│ └─{NetworkManager}(903)
├─VGAuthService(798)
├─abrt-watch-log(803)
├─abrt-watch-log(806)
├─abrtd(802)
├─accounts-daemon(825)─┬─{accounts-daemon}(832)
│ └─{accounts-daemon}(853)
-a,显示启动进程的完整指令,包括启动进程的路径、参数等
[root@localhost ~]# pstree 2261 -a
tracker-store
└─7*[{tracker-store}]
-aup,同时显示启动进程的完整指令、进程的所属用户、进程PID
[root@localhost ~]# pstree -aup
systemd,1 --switched-root --system --deserialize 21
├─ModemManager,815
│ ├─{ModemManager},838
│ └─{ModemManager},845
├─NetworkManager,891 --no-daemon
│ ├─{NetworkManager},899
│ └─{NetworkManager},903
├─VGAuthService,798 -s
├─abrt-watch-log,803 -F BUG: WARNING: at WARNING: CPU:INFO: possib
├─abrt-watch-log,806 -F Backtrace /var/log/Xorg.0.log --/usr/bin/a
├─abrtd,802 -d -s
1、进程的启动方式
(1)手工启动
前台启动:用户输入命令,直接执行程序
后台启动:在命令行尾加入按&符号
(2)调度启动
使用at命令,是指一次性计划任务
使用crontab命令,设置周期性计划任务
(3)进程的前后台调度
- Ctrl+Z组合键:将当期进程挂起,即调入后台并停止执行
- jobs -l :查看处于后台的任务列表
- fg :将后台进程恢复到前台运行,可指定任务序号
终止进程的运行
1、Ctrl+C组合键
中断正在执行的命令
2、kill、killall命令(跟号码,具有唯一性)
常用选项:
kill:用于终止指定PID号的进程
killall:用于终止指定名称的所有进程
-9:选项用于强制终止