Linux 进程管理
进程表示程序的一次执行过程,可以简单的理解为操作系统当前运行的程序
所有进程都可能存在 3 种状态:运行态、就绪态、阻塞态
- 运行态表示程序当前实际占用着 CPU 等资源
- 就绪态是指除 CPU 以外的一切运行资源都已经就绪,等待操作系统分配 CPU 资源,只要分配 CPU 资源,即可立即运行
- 阻塞态是指程序在运行过程中由于需要请求外部资源 (例如 I/O 资源等) 而无法继续执行,从而主动放弃当前 CPU 资源而等待所请求资源
进程之间存在互斥和同步关系。互斥就是进程不能同时运行,必须等待一个进程运行完毕,另一个进程才能运行。进程的同步指的是进程之间通过某种通讯机制实现信息交互
程序是对一系列动作执行过程的描述,只是指令的有序集合,是一个静态的概念。
进程是动态的,是程序以及数据在计算机上的一次执行,程序存储在存储介质上,进程运行在内存中
查看进程:ps、top
[root@localhost ~]# ps 参数
# -A 列出所有进程,和 -e 有同样效果
# -a 列出所有不和本终端有关的进程
# -w 显示加宽 可以显示更多信息
# -u 显示有效使用者相关进程
# aux 显示所有包含其他使用者的进程
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 128156 6832 ? Ss 13:28 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 13:28 0:00 [kthreadd]
......(此处省略大部分)......
root 2615 0.0 0.1 155472 1856 pts/0 R+ 14:30 0:00 ps aux
# USER 进程使用者
# PID pid
# %CPU 占用的 CPU 使用率
# %MEM 占用的内存使用率
# VSZ 占用的虚拟内存大小
# RSS 占用内存大小
# TTY 运行的终端号码
# STAT 进程状态 D:不可中断,R:运行中,S:休眠,T:暂停,Z:僵尸进程,W:没有足够的内存可分配,<:高优先级进程,N:低优先级进程
# START 进程开始时间
# TIME 累计 CPU 使用时间
# COMMAND 执行的命令
ps 用于查看查询状态下进程瞬间的信息,top 用于及时动态查看进程
top - 14:37:06 up 1:08, 1 user, load average: 0.00, 0.01, 0.04
Tasks: 108 total, 1 running, 107 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.7 si, 0.0 st
KiB Mem : 1816460 total, 184372 free, 1342644 used, 289444 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 320252 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 128156 6832 4176 S 0.0 0.4 0:01.33 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
......(此处省略大部分)......
60 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 deferwq
95 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kauditd
进程的终止:kill,killall
kill pid
即可终止进程
需要先使用 ps 查看进程
[root@localhost home]# ps -ef | grep python
root 775 1 0 13:28 ? 00:00:00 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid
root 1097 1 0 13:28 ? 00:00:00 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root 2672 1 0 14:42 ? 00:00:00 python a.py
root 2674 1653 0 14:43 pts/0 00:00:00 grep --color=auto python
终止 2672 进程
[root@localhost home]# kill 2672
[root@localhost home]# ps -ef | grep python
root 775 1 0 13:28 ? 00:00:00 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid
root 1097 1 0 13:28 ? 00:00:00 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root 2700 1653 0 14:45 pts/0 00:00:00 grep --color=auto python
kill 后可以加信号代码
[root@localhost home]# 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
查询进程打开的文件:lsof
如果没有 lsof 需要先安装 yum -y install psof
[root@localhost home]# lsof
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 253,0 251 96 /
systemd 1 root rtd DIR 253,0 251 96 /
systemd 1 root txt REG 253,0 1628608 396831 /usr/lib/systemd/systemd
......(此处略去 99.9% 的内容)......
lsof 2766 root mem REG 253,0 163312 34799 /usr/lib64/ld-2.17.so
lsof 2766 root 4r FIFO 0,9 0t0 28399 pipe
lsof 2766 root 7w FIFO 0,9 0t0 28400 pipe
[root@localhost home]# lsof /var/log/messages
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsyslogd 1100 root 6w REG 253,0 295260 16785274 /var/log/messages
-i
查看端口进程
[root@localhost home]# lsof -i:22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1098 root 3u IPv4 19251 0t0 TCP *:ssh (LISTEN)
sshd 1098 root 4u IPv6 19260 0t0 TCP *:ssh (LISTEN)
sshd 1649 root 3u IPv4 20764 0t0 TCP localhost.localdomain:ssh->DESKTOP-9L9JKNP.mshome.net:61885 (ESTABLISHED)
进程优先级调整:nice、renice
nice -n -10 ./job.sh
对于已经启动的进程
renice -10 -p 5555