什么是进程

进程是一个在系统中运行的程序
进程是已启动的可执行程序的运行实例,进程有以下组成部分
已分配的内存地址空间
安全属性,包括所有权凭据和特权
进程代码的一个或多个执行线程
进程状态
程序:二进制文件,静态/bin/date,/usr/sbin/httpd,/usr/sbin/sshd,/usr/local/ngix/sbin/ngix
进程:是程序运行的过程,动态,有生命周期及运行状态

进程类型

守护进程:在系统引导过程中启动的进程,跟终端无关的进程
前台进程:与终端相关,通过终端启动的进程

进程的生命周期

(4`VT0~SA~7W$GRA1O4C$}6.png
父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。每个新进程分配一个唯一的进程(PID),满足跟踪安全性之需。PID和父进程ID(PPID)是子进程环境的元素,任何进程都可以创建子进程,所有进程都是第一个系统进程的后代:
centos5/6:init
centos7:systemd
进程状态:
子进程继承父进程的安全性身份,过去和当前的文件描述,端口和资源特权,环境变量,以及程序代码。随后,子进程可能exec自己的代码程序。通常,父进程在子进程运行期间处于睡眠(sleeping)状态。当子进程完成时发出(exit)信息请求,在退出时,子进程已经关闭或丢弃了其资源环境,然后继续执行其自己的程序代码。

进程状态

在多任务处理操作系统中,每个CPU(或核心)在一个时间点上只能处理一个进程。在进程运行时,它对CPU时间和资源分配的要求会不断变化,从而为进程分配一个状态,它随着环境要求而改变
R运行状态(runing):表明进程要么在运行中要么在运行队列里,并不意味着进程一定在运行中

S睡眠状态(sleeping):意味着进程在等待事件的完成(这里的睡眠有时候也叫做可中断睡眠)

D磁盘睡眠状态(Disk sleep):有时候也叫做不可中断睡眠,在这个状态的进程通常会等待IO的结束

T停止状态(stopped):可以通过发送SIGSTOP信号给进程来停止(T)进程。这个被暂停的进程可以通过发送SIGCNT信号让进程继续运行。

Z僵尸状态(zombie):通知父进程回收所有的资源

X死亡状态(dead):这个状态只是一个返回状态,你不会在任务列表里看到这个状态

僵尸进程:当一个进程fork一个子进程后,如果子进程退出,而父进程没有利用wait或者waitpid来获取子进程的状态信息,那么子进程的状态描述符依然保存在系统中
孤儿进程:当一个父进程fork一个子进程之后,父进程突然被终止了,那么这个子进程就成为一个孤儿进程,它会被init进程接管
参考博客: https://blog.csdn.net/dream_1996/article/details/71001006

查看进程

ps命令

静态查看进程ps 注:ps -aux不同于ps aux

  1. 常用组合:aux
  2. u:以用户为中心组织进程状态信息显示
  3. a:与终端相关的进程;
  4. x:与终端无关的进程;
  5. ~]# ps -uax
  6. USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
  7. 用户 进程ID CPU占用 内存占用
  8. VSZVirtual memory SiZe 虚拟内存集
  9. RSSReSident Size 常驻内存集———其他的都可以放入交换内存中
  10. STAT:进程状态
  11. Rrunning
  12. Sinterruptable sleeping
  13. Duninterruptable sleeping
  14. Tstopped
  15. Zzombie
  16. +:前台进程
  17. l:多线程进程
  18. N:低优先级进程
  19. <:高优先级进程
  20. ssession leader
  21. START:启动时间
  22. TIME:运行占据cpu的累积时长
  23. COMMAND:由哪个命令来启动的相关进程
  24. 常用组合:ps -ef
  25. -e:显示所有进程
  26. -f:显示完整格式程序信息
  27. 常用组合:ps -eFH
  28. -F:显示完成格式的进程信息
  29. -H:以进程层级格式显示进程相关信息
  30. 常用组合:eoaxo
  31. 自定义想要查询的字段值
  32. -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
  33. -axo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wcha n:14,comm
  34. ninice
  35. pripriority,优先级
  36. psrprocessorCPU
  37. rtprio:实时优先级
  1. [root@xwz ~]# ps aux |less
  2. USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
  3. root 1 0.0 0.3 193940 6416 ? Ss 909 0:07
  4. /usr/lib/systemd/systemd --switched-root --system --deserialize 22
  5. root 2 0.0 0.0 0 0 ? S 909 0:00 [kthreadd]

USER 运行进程的用户
PID 进程ID
%CPU CPU占用率
%MEM 内存占用率
VSZ 占用虚拟内存
RSS 占用实际内存
TTY 程序运行的终端
STAT 进程状态 man ps(/STATE)
R 运行
S 可中断睡眠Sleep
D 不可中断睡眠
T 停止的进程
Z 僵尸进程
X 死掉的进程

Ss s进程的领导者,父进程
S< <优先级较高的进程
SN N优先级较低的进程
R+ +表示时前台的进程组
SI 以线程的方式运行
START 进程的启动时间
TIME 进程占用CPU的总时间
COMMAND 进程文件,进程名

  1. [root@xwz ~]# ps aux --sort %cpu |less # 按照CPU使用率排序
  2. [root@xwz ~]# ps aux --sort -%cpu |less
  3. [root@xwz ~]# ps aux --sort rss |less
  4. [root@xwz ~]# ps aux --sort -rss |less

自定义显示字段

  1. [root@xwz ~]# ps axo user,pid,ppid,%mem,%cpu,command --sort -%cpu |less

查看指定进程PID

  1. [root@xwz ~]# cat /run/sshd.pid
  2. [root@xwz ~]# ps aux |grep sshd
  3. [root@xwz ~]# pgrep -l sshd
  4. [root@xwz ~]# pidof sshd

查看进程树

  1. [root@xwz ~]# pstree

top命令

动态显示系统相关资源的管理器,有点类似于windows当中的任务管理器
C2~}CAHJ~SL(653N%(BC(TL.png
第一行:系统时间,运行时间,登录终端数,系统负载(三个数值分别为1分钟,5分钟,15分钟的平均值,数值越小意味着负载越低)。
第二行:进程总数,运行中的进程数,睡眠中的进程数,停止的进程数,僵尸的进程数
第三行:用户占用资源百分比,系统内核占用资源百分比,改变过优先级的进程资源百分比,空闲的资源百分比等。
第四行:物理内存总量,内存使用量,内存空闲量,作为内核缓存的内存量。(buffer和cache之间的区别,cache是提高cpu和内存之间的数据交换速度,buffer是io设备和存储设备之间的缓冲区)
第五行:虚拟内存总量,虚拟内存使用量,虚拟内存空闲量,以被提前加载的内存量。

进程信息
h|? 帮助
M 按内存的使用排序
P 按cpu使用排序
N 以PID的大小排序
R 对排序进行反转
f 自定义显示字段
1 显示所有CPU的负载
k 输入信号
< 向前
> 向后
z 彩色
W 保存top环境设置 ~/.toprc

使用信号控制进程

给进程发送信号

  1. [root@xwz ~]# kill -l # 列出所有支持的信号
  2. 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
  3. 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
  4. 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
  5. 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
  6. 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
  7. 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
  8. 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
  9. 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42)
  10. SIGRTMIN+8
  11. 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47)
  12. SIGRTMIN+13
  13. 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52)
  14. SIGRTMAX-12
  15. 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57)
  16. SIGRTMAX-7
  17. 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62)
  18. SIGRTMAX-2
  19. 63) SIGRTMAX-1 64) SIGRTMAX
编号 信号名 作用
1 SIGHUP 重新加载配置
2 SIGINT 键盘中断^C
3 SIGQUIT 键盘推出
9 SIGKILL 强制终止
15 SIGTERM 终止(正常结束),缺省信号
18 SIGCONT 继续
19 SIGSTOP 停止
20 SIGTSTP 暂停^Z
  1. [root@xwz ~]# ps aux |grep sshd
  2. root 6995 0.0 0.2 112756 4356 ? Ss 909 0:00
  3. /usr/sbin/sshd -D
  4. root 31872 5.0 0.2 160844 5620 ? Ss 18:56 0:00 sshd:
  5. root@pts/1
  6. root 31917 0.0 0.0 112728 988 pts/1 S+ 18:56 0:00 grep --
  7. color=auto sshd
  8. [root@xwz ~]# kill -1 6995 # 重新加载配置文件

案例1,信号测试1和15

  1. [root@xwz ~]# ps aux |grep crond
  2. root 7004 0.0 0.0 126284 1704 ? Ss 909 0:01
  3. /usr/sbin/crond -n
  4. root 32021 0.0 0.0 112728 988 pts/1 S+ 19:06 0:00 grep --
  5. color=auto crond
  6. [root@xwz ~]# kill -1 7004
  7. [root@xwz ~]# ps aux |grep crond
  8. root 7004 0.0 0.0 126284 1704 ? Ss 909 0:01
  9. /usr/sbin/crond -n
  10. root 32023 0.0 0.0 112728 984 pts/1 S+ 19:06 0:00 grep --
  11. color=auto crond
  12. [root@xwz ~]# kill 7004
  13. [root@xwz ~]# systemctl start crond
  14. [root@xwz ~]# ps aux |grep crond
  15. root 32031 11.2 0.0 126284 1692 ? Ss 19:07 0:00
  16. /usr/sbin/crond -n
  17. root 32033 0.0 0.0 112724 984 pts/1 S+ 19:07 0:00 grep --
  18. color=auto crond

案例2,信号测试9,15

  1. [root@xwz ~]# touch file1 file2
  2. [root@xwz ~]# tty
  3. /dev/pts/1
  4. [root@xwz ~]# vim file1
  5. [root@xwz ~]# tty
  6. /dev/pts/2
  7. [root@xwz ~]# vim file2
  8. [root@xwz ~]# ps aux |grep vim
  9. root 32072 0.2 0.2 151532 5064 pts/1 S+ 19:09 0:00 vim file1
  10. root 32127 0.1 0.2 151532 5080 pts/2 S+ 19:09 0:00 vim file2
  11. root 32176 0.0 0.0 112728 988 pts/3 S+ 19:09 0:00 grep --
  12. color=auto vim
  13. [root@xwz ~]# kill 32072
  14. [root@xwz ~]# kill -9 32127
  15. [root@xwz ~]# killall vim # 杀死所有vim进程

案例3,信号测试18,19

  1. [root@xwz ~]# ps aux |grep httpd
  2. root 29267 0.0 0.2 230408 5192 ? Ss 14:24 0:01
  3. /usr/sbin/httpd -DFOREGROUND
  4. apache 29268 0.0 0.1 232492 3160 ? S 14:25 0:00
  5. /usr/sbin/httpd -DFOREGROUND
  6. apache 29269 0.0 0.1 232492 3160 ? S 14:25 0:00
  7. /usr/sbin/httpd -DFOREGROUND
  8. apache 29270 0.0 0.1 232492 3160 ? S 14:25 0:00
  9. /usr/sbin/httpd -DFOREGROUND
  10. apache 29271 0.0 0.1 232492 3160 ? S 14:25 0:00
  11. /usr/sbin/httpd -DFOREGROUND
  12. apache 29272 0.0 0.1 232492 3160 ? S 14:25 0:00
  13. /usr/sbin/httpd -DFOREGROUND
  14. root 32229 0.0 0.0 112724 988 pts/3 S+ 19:14 0:00 grep --
  15. color=auto httpd
  16. [root@xwz ~]# kill -19 29267
  17. [root@xwz ~]# ps aux |grep httpd
  18. root 29267 0.0 0.2 230408 5192 ? Ts 14:24 0:01
  19. /usr/sbin/httpd -DFOREGROUND
  20. apache 29268 0.0 0.1 232492 3160 ? S 14:25 0:00
  21. /usr/sbin/httpd -DFOREGROUND
  22. apache 29269 0.0 0.1 232492 3160 ? S 14:25 0:00
  23. /usr/sbin/httpd -DFOREGROUND
  24. apache 29270 0.0 0.1 232492 3160 ? S 14:25 0:00
  25. /usr/sbin/httpd -DFOREGROUND
  26. apache 29271 0.0 0.1 232492 3160 ? S 14:25 0:00
  27. /usr/sbin/httpd -DFOREGROUND
  28. apache 29272 0.0 0.1 232492 3160 ? S 14:25 0:00
  29. /usr/sbin/httpd -DFOREGROUND
  30. root 32231 0.0 0.0 112724 984 pts/3 S+ 19:15 0:00 grep --
  31. color=auto httpd
  32. [root@xwz ~]# kill -18 29267
  33. [root@xwz ~]# ps aux |grep httpd
  34. root 29267 0.0 0.2 230408 5192 ? Ss 14:24 0:01
  35. /usr/sbin/httpd -DFOREGROUND
  36. apache 29268 0.0 0.1 232492 3160 ? S 14:25 0:00
  37. /usr/sbin/httpd -DFOREGROUND
  38. apache 29269 0.0 0.1 232492 3160 ? S 14:25 0:00
  39. /usr/sbin/httpd -DFOREGROUND
  40. apache 29270 0.0 0.1 232492 3160 ? S 14:25 0:00
  41. /usr/sbin/httpd -DFOREGROUND
  42. apache 29271 0.0 0.1 232492 3160 ? S 14:25 0:00
  43. /usr/sbin/httpd -DFOREGROUND
  44. apache 29272 0.0 0.1 232492 3160 ? S 14:25 0:00
  45. /usr/sbin/httpd -DFOREGROUND
  46. root 32233 0.0 0.0 112724 984 pts/3 S+ 19:15 0:00 grep --
  47. color=auto httpd

案例4,踢出远程登陆用户

  1. [root@xwz ~]# w
  2. 19:21:16 up 1 day, 6:26, 4 users, load average: 0.00, 0.01, 0.05
  3. USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
  4. root :0 :0 11 ?xdm? 2:05m 0.50s
  5. /usr/libexec/gnome-se
  6. root pts/0 :0 11 5days 1.36s 0.36s -bash
  7. root pts/1 192.168.222.1 18:56 4.00s 0.14s 0.02s w
  8. centos pts/2 192.168.222.1 19:21 3.00s 0.04s 0.04s -bash
  9. [root@xwz ~]# pkill -u centos
  10. [root@xwz ~]# pkill -t pts/2 # 终止pts/2上所有进程
  11. [root@xwz ~]# pkill -9 -t pts/2 # 终止pts/2上所有进程,并结束pts/2

进程优先级由nice值控制,nice值越高,优先级越低,nice值越低,优先级越高,nice=-20时,一般为不让用cpu资源

查看UUID blkid 查看分区和磁盘 lsblk
查看控件使用情况 df -Th
对磁盘进行分区 dfisk /dev/磁盘