1、进程概念
进程使用数字标记,每个进程标记号码称为PID,系统第一个进程时systemd PID 1
2、进程三种状态
执行 Running : 当警察已获得处理,其程序正在处理机上执行
就绪:当进程已分配到除cpu以外所有必要的资源
阻塞:正在执行的进程由于等待某个事件发生而无法执行时
3、进程间的基本转换
执行-阻塞
阻塞-就绪
执行-就绪
就绪-执行
4、三种进程类型
交互进程
批处理进程
监控进程
5、查看进程状态
ps 命令 查看静态的进程统计信息
格式: ps 选项
选项:
a 显示当前终端下的所有进程信息
e 在命令后显示环境变量
u 显示用户名和启动信息
x 显示当前用户在所有终端下的进程信息
e 显示所有进程
f 完全显示 增加用户名 ppid 进程起始时间
6、实例:查看所有进程
[root@VM-4-2-centos Python-3.8.3]# ps -ax PID TTY STAT TIME COMMAND 1 ? Ss 0:41 /usr/lib/systemd/systemd --switched-root --system --deserializ 2 ? S 0:02 [kthreadd] 4 ? S< 0:00 [kworker/0:0H] 6 ? S 0:02 [ksoftirqd/0] 7 ? S 0:01 [migration/0] 8 ? S 0:00 [rcu_bh] 9 ? S 0:48 [rcu_sched] 10 ? S< 0:00 [lru-add-drain] 11 ? S 0:00 [watchdog/0] 12 ? S 0:00 [watchdog/1]
[root@VM-4-2-centos Python-3.8.3]# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 43588 3956 ? Ss Jul20 0:41 /usr/lib/systemd/systemd root 2 0.0 0.0 0 0 ? S Jul20 0:02 [kthreadd] root 4 0.0 0.0 0 0 ? S< Jul20 0:00 [kworker/0:0H] root 6 0.0 0.0 0 0 ? S Jul20 0:02 [ksoftirqd/0] root 7 0.0 0.0 0 0 ? S Jul20 0:01 [migration/0] root 8 0.0 0.0 0 0 ? S Jul20 0:00 [rcu_bh] root 9 0.0 0.0 0 0 ? S Jul20 0:48 [rcu_sched] root 10 0.0 0.0 0 0 ? S< Jul20 0:00 [lru-add-drain] root 11 0.0 0.0 0 0 ? S Jul20 0:00 [watchdog/0] root 12 0.0 0.0 0 0 ? S Jul20 0:00 [watchdog/1]
含义:
USER 进程属主
PID 进程唯一标识
%CPU 占用cpu时间与总时间的百分比
%MEM 占用内存与总内存的百分比
VSZ 占用虚拟内存空间
RSS 占用内存空间
TTY 终端 ?标识未知或不需要终端
STAT 代表进程状态
R 正在运行
S 睡眠状态
T 已停止运行或者侦测
Z 已停止运行但仍在使用系统资源 僵尸进程
top命令 查看进程动态信息
每10s刷新一次
[root@VM-4-2-centos Python-3.8.3]# top top - 16:20:13 up 5 days, 19 min, 1 user, load average: 0.00, 0.01, 0.05 Tasks: 94 total, 1 running, 93 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.0 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 3782696 total, 1314020 free, 252544 used, 2216132 buff/cache KiB Swap: 0 total, 0 free, 0 used. 3253556 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1816 root 20 0 753844 15148 3296 S 0.7 0.4 42:11.57 barad_agent 2527 root 20 0 1005204 81788 17784 S 0.3 2.2 44:25.19 YDService 15033 root 20 0 161972 2196 1560 R 0.3 0.1 0:00.01 top 1 root 20 0 43588 3956 2600 S 0.0 0.1 0:41.52 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:02.70 kthreadd 4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 6 root 20 0 0 0 0 S 0.0 0.0 0:02.94 ksoftirqd/0 7 root rt 0 0 0 0 S 0.0 0.0 0:01.50 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:48.31 rcu_sched
PID 进程id
USER 属主
PR 进程调度优先级
NI 进程nice值 值越小 优先级越高
VIRT 进程使用的虚拟内存量
RES 进程占用的物理内存量
SHR 共享内存大小
S 进程状态
%cpu 占用cpu百分比
%mem 占用内存百分比
TIME+ 运行时间
COMMAND 启动命令
进程控制
1、启动进程
调度启动和手动启动
调度启动是指在 事先设置好在某个时间要运行的程序,预设时间后,由系统自动启动
手动启动在命令行下输入要执行的程序 分为前台启动和后台启动
后台启动,在命令后加上 & 符号
# command &
2、改变进程运行方式
ctrl+z 挂起进程
jobs 命令 查看在后台进行的进程任务
#jobs -l
fg命令将挂起的进程放回前台执行
bg命令将挂起的进程放回后台继续执行
3、终止进程
查看可用进程信号
kill -l
[root@VM-4-2-centos Python-3.8.3]# kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX
常用信号说明:
SIGHUP 1重读配置文件
SIGINT 2从键盘上发出Ctrl+C组合键终止信号
SIGKILL 9结束接收信号的进程
SIGTERM 15正常终止信号
可发送信号命令:
kill 通过制定进程的pid为进程发送信号
killall 通过制定进程的名称为进程发送信号
pkill 通过模式匹配为指定的进程发送信号
实例:杀死指定pid的进程 -9 强制杀死
kill -9 2978
通过进程名终止所有进程
pkill httpd
killall httpd
通过模式匹配终止Bob用户的所有进程
pkill -u Bob
一般在系统运行期间发生了如下情况,就需要将进程杀死:
进程占用了过多的CPU时间
进程锁住了一个终端,使其他前台进程无法运行
进程运行时间过长,但没有产生预期效果或无法正常退出
进程产生了过多到屏幕或磁盘文件的输出