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

父进程复制自己的地址空间(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
常用组合:auxu:以用户为中心组织进程状态信息显示a:与终端相关的进程;x:与终端无关的进程;~]# ps -uaxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND用户 进程ID CPU占用 内存占用VSZ:Virtual memory SiZe 虚拟内存集RSS:ReSident Size 常驻内存集———其他的都可以放入交换内存中STAT:进程状态R:runningS:interruptable sleepingD:uninterruptable sleepingT:stoppedZ:zombie+:前台进程l:多线程进程N:低优先级进程<:高优先级进程s:session leaderSTART:启动时间TIME:运行占据cpu的累积时长COMMAND:由哪个命令来启动的相关进程常用组合:ps -ef-e:显示所有进程-f:显示完整格式程序信息常用组合:ps -eFH-F:显示完成格式的进程信息-H:以进程层级格式显示进程相关信息常用组合:eo,axo自定义想要查询的字段值-eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm-axo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wcha n:14,commni:nice值pri:priority,优先级psr:processor,CPUrtprio:实时优先级
[root@xwz ~]# ps aux |lessUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.3 193940 6416 ? Ss 9月09 0:07/usr/lib/systemd/systemd --switched-root --system --deserialize 22root 2 0.0 0.0 0 0 ? S 9月09 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 进程文件,进程名
[root@xwz ~]# ps aux --sort %cpu |less # 按照CPU使用率排序[root@xwz ~]# ps aux --sort -%cpu |less[root@xwz ~]# ps aux --sort rss |less[root@xwz ~]# ps aux --sort -rss |less
自定义显示字段
[root@xwz ~]# ps axo user,pid,ppid,%mem,%cpu,command --sort -%cpu |less
查看指定进程PID
[root@xwz ~]# cat /run/sshd.pid[root@xwz ~]# ps aux |grep sshd[root@xwz ~]# pgrep -l sshd[root@xwz ~]# pidof sshd
查看进程树
[root@xwz ~]# pstree
top命令
动态显示系统相关资源的管理器,有点类似于windows当中的任务管理器
第一行:系统时间,运行时间,登录终端数,系统负载(三个数值分别为1分钟,5分钟,15分钟的平均值,数值越小意味着负载越低)。
第二行:进程总数,运行中的进程数,睡眠中的进程数,停止的进程数,僵尸的进程数
第三行:用户占用资源百分比,系统内核占用资源百分比,改变过优先级的进程资源百分比,空闲的资源百分比等。
第四行:物理内存总量,内存使用量,内存空闲量,作为内核缓存的内存量。(buffer和cache之间的区别,cache是提高cpu和内存之间的数据交换速度,buffer是io设备和存储设备之间的缓冲区)
第五行:虚拟内存总量,虚拟内存使用量,虚拟内存空闲量,以被提前加载的内存量。
进程信息
h|? 帮助
M 按内存的使用排序
P 按cpu使用排序
N 以PID的大小排序
R 对排序进行反转
f 自定义显示字段
1 显示所有CPU的负载
k 输入信号
< 向前
> 向后
z 彩色
W 保存top环境设置 ~/.toprc
使用信号控制进程
给进程发送信号
[root@xwz ~]# kill -l # 列出所有支持的信号1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR111) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+338) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42)SIGRTMIN+843) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47)SIGRTMIN+1348) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52)SIGRTMAX-1253) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57)SIGRTMAX-758) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62)SIGRTMAX-263) SIGRTMAX-1 64) SIGRTMAX
| 编号 | 信号名 | 作用 |
|---|---|---|
| 1 | SIGHUP | 重新加载配置 |
| 2 | SIGINT | 键盘中断^C |
| 3 | SIGQUIT | 键盘推出 |
| 9 | SIGKILL | 强制终止 |
| 15 | SIGTERM | 终止(正常结束),缺省信号 |
| 18 | SIGCONT | 继续 |
| 19 | SIGSTOP | 停止 |
| 20 | SIGTSTP | 暂停^Z |
[root@xwz ~]# ps aux |grep sshdroot 6995 0.0 0.2 112756 4356 ? Ss 9月09 0:00/usr/sbin/sshd -Droot 31872 5.0 0.2 160844 5620 ? Ss 18:56 0:00 sshd:root@pts/1root 31917 0.0 0.0 112728 988 pts/1 S+ 18:56 0:00 grep --color=auto sshd[root@xwz ~]# kill -1 6995 # 重新加载配置文件
案例1,信号测试1和15
[root@xwz ~]# ps aux |grep crondroot 7004 0.0 0.0 126284 1704 ? Ss 9月09 0:01/usr/sbin/crond -nroot 32021 0.0 0.0 112728 988 pts/1 S+ 19:06 0:00 grep --color=auto crond[root@xwz ~]# kill -1 7004[root@xwz ~]# ps aux |grep crondroot 7004 0.0 0.0 126284 1704 ? Ss 9月09 0:01/usr/sbin/crond -nroot 32023 0.0 0.0 112728 984 pts/1 S+ 19:06 0:00 grep --color=auto crond[root@xwz ~]# kill 7004[root@xwz ~]# systemctl start crond[root@xwz ~]# ps aux |grep crondroot 32031 11.2 0.0 126284 1692 ? Ss 19:07 0:00/usr/sbin/crond -nroot 32033 0.0 0.0 112724 984 pts/1 S+ 19:07 0:00 grep --color=auto crond
案例2,信号测试9,15
[root@xwz ~]# touch file1 file2[root@xwz ~]# tty/dev/pts/1[root@xwz ~]# vim file1[root@xwz ~]# tty/dev/pts/2[root@xwz ~]# vim file2[root@xwz ~]# ps aux |grep vimroot 32072 0.2 0.2 151532 5064 pts/1 S+ 19:09 0:00 vim file1root 32127 0.1 0.2 151532 5080 pts/2 S+ 19:09 0:00 vim file2root 32176 0.0 0.0 112728 988 pts/3 S+ 19:09 0:00 grep --color=auto vim[root@xwz ~]# kill 32072[root@xwz ~]# kill -9 32127[root@xwz ~]# killall vim # 杀死所有vim进程
案例3,信号测试18,19
[root@xwz ~]# ps aux |grep httpdroot 29267 0.0 0.2 230408 5192 ? Ss 14:24 0:01/usr/sbin/httpd -DFOREGROUNDapache 29268 0.0 0.1 232492 3160 ? S 14:25 0:00/usr/sbin/httpd -DFOREGROUNDapache 29269 0.0 0.1 232492 3160 ? S 14:25 0:00/usr/sbin/httpd -DFOREGROUNDapache 29270 0.0 0.1 232492 3160 ? S 14:25 0:00/usr/sbin/httpd -DFOREGROUNDapache 29271 0.0 0.1 232492 3160 ? S 14:25 0:00/usr/sbin/httpd -DFOREGROUNDapache 29272 0.0 0.1 232492 3160 ? S 14:25 0:00/usr/sbin/httpd -DFOREGROUNDroot 32229 0.0 0.0 112724 988 pts/3 S+ 19:14 0:00 grep --color=auto httpd[root@xwz ~]# kill -19 29267[root@xwz ~]# ps aux |grep httpdroot 29267 0.0 0.2 230408 5192 ? Ts 14:24 0:01/usr/sbin/httpd -DFOREGROUNDapache 29268 0.0 0.1 232492 3160 ? S 14:25 0:00/usr/sbin/httpd -DFOREGROUNDapache 29269 0.0 0.1 232492 3160 ? S 14:25 0:00/usr/sbin/httpd -DFOREGROUNDapache 29270 0.0 0.1 232492 3160 ? S 14:25 0:00/usr/sbin/httpd -DFOREGROUNDapache 29271 0.0 0.1 232492 3160 ? S 14:25 0:00/usr/sbin/httpd -DFOREGROUNDapache 29272 0.0 0.1 232492 3160 ? S 14:25 0:00/usr/sbin/httpd -DFOREGROUNDroot 32231 0.0 0.0 112724 984 pts/3 S+ 19:15 0:00 grep --color=auto httpd[root@xwz ~]# kill -18 29267[root@xwz ~]# ps aux |grep httpdroot 29267 0.0 0.2 230408 5192 ? Ss 14:24 0:01/usr/sbin/httpd -DFOREGROUNDapache 29268 0.0 0.1 232492 3160 ? S 14:25 0:00/usr/sbin/httpd -DFOREGROUNDapache 29269 0.0 0.1 232492 3160 ? S 14:25 0:00/usr/sbin/httpd -DFOREGROUNDapache 29270 0.0 0.1 232492 3160 ? S 14:25 0:00/usr/sbin/httpd -DFOREGROUNDapache 29271 0.0 0.1 232492 3160 ? S 14:25 0:00/usr/sbin/httpd -DFOREGROUNDapache 29272 0.0 0.1 232492 3160 ? S 14:25 0:00/usr/sbin/httpd -DFOREGROUNDroot 32233 0.0 0.0 112724 984 pts/3 S+ 19:15 0:00 grep --color=auto httpd
案例4,踢出远程登陆用户
[root@xwz ~]# w19:21:16 up 1 day, 6:26, 4 users, load average: 0.00, 0.01, 0.05USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot :0 :0 四11 ?xdm? 2:05m 0.50s/usr/libexec/gnome-seroot pts/0 :0 四11 5days 1.36s 0.36s -bashroot pts/1 192.168.222.1 18:56 4.00s 0.14s 0.02s wcentos pts/2 192.168.222.1 19:21 3.00s 0.04s 0.04s -bash[root@xwz ~]# pkill -u centos[root@xwz ~]# pkill -t pts/2 # 终止pts/2上所有进程[root@xwz ~]# pkill -9 -t pts/2 # 终止pts/2上所有进程,并结束pts/2
进程优先级由nice值控制,nice值越高,优先级越低,nice值越低,优先级越高,nice=-20时,一般为不让用cpu资源
查看UUID blkid
查看分区和磁盘 lsblk
查看控件使用情况 df -Th
对磁盘进行分区 dfisk /dev/磁盘
