1、程序和进程的关系
(1)程序
- 保存在硬盘、光盘等介质中的可执行代码和数据
- 静态保存的代码
(2)进程
- 在 CPU 及内存中运行的程序代码
- 动态执行的代码
- 父、子进程:每一个进程可以创建一个或多个进程
2、静态查看进程信息
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.3 56640 6672 ? Ss 00:22 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 24
root 2 0.0 0.0 0 0 ? S 00:22 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 00:22 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 00:22 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S 00:22 0:00 [migration/0].
(1)
- USER:启动该进程的用户账号的名称。
- PID:该进程在系统中的PID号,在当前系统中是唯一的。
- %CPU: CPU占用的百分比。
- %MEM:内存占用的百分比。
- VSZ:占用虚拟内存swap空间的大小。
- RSS:占用常驻内存物理内存的大小。
- TTY:表明该进程在哪个终端上运行。“?”表示未知或不需要终端。
- STAT:显示了进程当前的状态:D:不可中断睡眠、S:可中断的睡眠、R:就绪或运行状态、T:中止状态、Z: 僵死状态、<:高优先级进程、N:低优先级进程、+:前台进程组中的进程、|:多线程的进程、s:会话进程的首进程
- START:启动该进程的时间。
- TIME:该进程占用的CPU时间。
- COMMAND:启动该进程的命令的名称。
(2)stat状态
- S:不可中断睡眠
- R:可中断睡眠
- Z:就绪或运行状态
- <:高级有限进程
- N:低级优先进程
- +:前台进程组中的进程
- T:中止状态
- Z:僵死状态
3、动态查看进程
top - 00:51:38 up 28 min, 1 user, load average: 0.00, 0.01, 0.03
Tasks: 399 total, 2 running, 397 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 2035356 total, 1760020 free, 134140 used, 141196 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 1751724 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
722 root 20 0 0 0 0 S 0.3 0.0 0:00.10 xfsaild/dm-0
1 root 20 0 56640 6672 3888 S 0.0 0.3 0:01.31 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.01 ksoftirqd/0
top - 16:58:24 【当前系统时间】 1:54 【系统已经运行 1 小时 54 分钟】 2 users 【当前登录 2 个用户】 load average:0.00,0.00,0.00 【系统平均负载:1 分钟的,5 分钟的,15 分钟的】 Tasks:108 total 【任务:108 个总进程】 1 running 【1 个进程正在运行】 107 sleeping 【107 个进程睡眠】 0 stoppd 【0 个进程停止】 0 zombie 【0 个僵尸进程(冻结进程)】 Cpu(s): 0.0%us 【用户控件占用 CPU 百分比】 0.0%sy 【内核空间占用 CPU 百分比】 0.0%ni 【用户进程控件内改变过优先级的进程占用 CPU 百分比】 100.0% 【空闲 CPU 百分比】 0.0%wa 【等待输入输出的 CPU 时间百分比】 0.0% hi 【】 0.0%si 【】 Men: 1012352k total 【物理内存总量 1012352k】 465816k used 【使用了 465816k 的物理内存】 546536k free 【空闲 546536k 的物理内存】 61064k buffe 【61064k 用作内核缓存】 Swap: 2031608k total 【交换分区总量 2031608k】 0k used 【没有使用交换分区】 2031608k free 【空闲的交换分区总量 2031608k】 267580k cache 【缓冲的交换分区总量 267580k】 PID:进程号 USER:进程所有者的用户名 PR:优先级 NI:nice 值。负值表示高优先级,正值表示低优先级 VIRT:进程使用的虚拟内存总量,单位 kb RES:进程使用的、未被换出的物理内存大小,单位 kb SHR:共享内存大小,单位 kb S:进程状态 %CPU:上次更新到现在的 CPU 时间占用百分比 %MEM:进程使用的物理内存百分比 TIME+:进程使用的 CPU 时间总计,单位 1/100 秒 COMMAND:命令
进程的启动方式专区:(前台运行,后台运行,杀死进程)
(2)后台启动:在命令行尾加入“&”符号
(3)进程的前后台调度
Ctrl+Z 将当前进程挂起,即调入后台并停止执行
jobs 命令 查看处于后台的任务列表,加-l 同时显示 PID 号
fg 命令 将后台进程恢复到前台运行,可指定任务程序号
bg 命令 将后台暂停的进程调至后台运行
示例:
[root@localhost ~]# cp /dev/cdrom mycd.iso &
[1] 12764
[root@localhost ~]# jobs -l
[1]+ 12764 运行中 cp -i /dev/cdrom mycd.iso &
[root@localhost ~]#
(4)终止进程的运行
。Ctrl+C 中断正在执行的命令
。kill、killall 命令
kill 用于终止指定 PID 号的进程
killall 用于终止指定名称的所有进程
-9 选项用于强制终止
示例:
[root@localhost ~]# pgrep -l cp
12764 cp
[root@localhost ~]# kill -9 12764
[root@localhost ~]# pstree -aup
├─vmtoolsd,6544 │ └─{vmtoolsd},6668 ├─vmtoolsd,8497 -n vmusr │ ├─{vmtoolsd},8558 │ └─{vmtoolsd},8584 ├─wpa_supplicant,7777 -u -f /var/log/wpa_supplicant.log -c /etc/wpa_supplicant/wpa_supplicant.conf -P/var/run/wpa_sup └─xdg-permission-,8260 ├─{xdg-permission-},8262 └─{xdg-permission-},8265 [1]+ 已杀死 cp -i /dev/cdrom mycd.iso