一、系统进程
1.进程介绍
含义:进行中的程序,就叫进程。
父进程(ppid):监工
子进程(pid):干活
通过一个软件来读取我们的数据信息的过程再调用硬件进行相关文件的读取这个过程就是进程
程序员开发好的代码就叫代码文件
代码文件在计算机系统中运行起来就产生进程
|--→线程
--→子进程--↕
| |--→线程
| |--→线程
代码文件----→systemd----→派生----→父进程--↕
|
|
--→子进程
系统在运行时先派生出一个父进程,父进程管理任务多少的子进程,子进程要同时干许多事就派生了线程
2.查看系统中的进程
[root@c7-100 ~]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 08:24 ? 00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 0 08:24 ? 00:00:00 [kthreadd]
带中括号[]的进程是系统默认的进程
3.系统进程分类
普通进程:进程出现后当任务执行完毕后,就会结束进程。
守护进程:进程出现后当任务执行完毕后,也会继续留在后台等待新的任务产生。
4.进程·生命周期
僵尸进程:子进程执行一半,突然挂掉了。占用系统资源,cpu、mem、磁盘、网络...
系统中systemd服务,它默认会自动清理僵尸进程,但是也有清理不掉的
孤儿进程:子进程执行一半,父进程挂掉了;孤儿进程没有父进程管理
systemd发现后,会接手子进程充当父进程
systemd服务进程号是【0】,是系统中一切进程的祖先,一般情况下,它可以管理系统中所有进程的生命周期
说明:
1,每个进程都有自己的父进程,父进程,进程号【PPID】
2,系统中所有进程都归systemd管理;
5.查看系统中进程的状态
[root@c7-100 ~]# ps -axu
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.4 43976 4248 ? Ss 08:24 0:01 /usr/lib/systemd/systemd --switched-root --system --deseria
root 2 0.0 0.0 0 0 ? S 08:24 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? S< 08:24 0:00 [kworker/0:0H]
root 5 0.0 0.0 0 0 ? S 08:24 0:00 [kworker/u256:0]
二、查看系统进程命令
1.静态进程监控
ps -ef //进程信息的简单查看
ps -axu //进程信息的详细查看
参数介绍
-a //显示所有终端下执行的程序,不管从哪里登录的系统,只要执行了,就会显示出来
-u //显示进程所管理的用户信息
-x //显示所有程序,不以终端来区分,包含系统运行的进程
-e //显示系统中所有存在的程序信息,没有执行的也算
-f //当前用户的操作,所产生的进程;显示ppid和pid
2.动态进程监控
[root@c7-100 ~]# top
top - 09:58:24 up 2 days, 21:12, 3 users, load average: 0.00, 0.01, 0.05
Tasks: 98 total, 1 running, 97 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 995672 total, 431192 free, 188836 used, 375644 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 577636 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
286 root 20 0 0 0 0 S 0.3 0.0 2:13.66 xfsaild/sda3
780 root 20 0 273164 4872 3744 S 0.3 0.5 5:46.46 vmtoolsd
94598 root 20 0 0 0 0 S 0.3 0.0 0:00.42 kworker/0:1
95087 root 20 0 162068 2200 1556 R 0.3 0.2 0:00.02 top
1 root 20 0 52168 4400 2600 S 0.0 0.4 1:05.54 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.03 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.91 ksoftirqd/0
3.进程查看ps列信息释义
[root@c7-100 ~]# ps -axu
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.4 43976 4248 ? Ss 08:24 0:01 /usr/lib/systemd/systemd --switched-root --system --deseria
root 2 0.0 0.0 0 0 ? S 08:24 0:00 [kthreadd]
USER //进程执行用户(每个进程都需要一个用户来管理)
PID //子进程号
%CPU //cpu占用的百分比(1核满负荷=100%,4核满负荷=400%)
%MEM //内存占用百分比
VSZ //虚拟内存的使用情况(单位kb)占用内存多少
RSS //实际内存的使用情况(单位kb)使用多少内存
TTY //连接主机的终端类型(?:系统自己内部运行的进程)
STAT //进程运行的状态(Z R S)
START //进程启动时间,什么时间启动,出现的
TIME //执行进程过程中,占用cpu多长时间的资源
COMMAND //进程执行的命令
4.状态和符号
R:运行状态,cpu正在执行的状态【running】
S:睡眠状态,睡眠等待任务【sleep】
Z:僵尸状态,【zombie】
T:停止状态,【stop】
ctrl + z //暂停运行
--------------------------------------------
D:不可中断的睡眠等待状态
s //有小s表示父进程(控制进程)
< //优先级较高的进程
N //优先级较低的进程
+ //前台运行的进程
l //line进程分了好多线程
查看线程命令(需先下载psmisc)
pstree -a //显示启动的进程详细信息
pstree -c //显示运行中的进程的父子关系树状图
睡眠300秒
[root@c7-100 ~]# sleep 300
^Z
[1]+ 已停止 sleep 300
jobs命令用于显示Linux中的任务列表及任务状态,包括后台运行的任务。
[root@c7-100 ~]# jobs
[1]+ 已停止 sleep 300
前台运行
[root@c7-100 ~]# fg 1
sleep 300
^Z
[1]+ 已停止 sleep 300
后台运行
[root@c7-100 ~]# bg 1
[1]+ sleep 300 &
5.动态进程top命令
1.指定更新信息的时间
top -d 1 //查看进程信息,1秒更新1次
-i //不显示闲置的进程或者僵尸进程
-n 2 //更新两次动态信息,更新完成后停止
-b //批次归档模式(每一次的结果都记录),搭配-n使用,可以将top结果输出到文件内
拓展
M //按照内存来排序
P //按照cpu使用率来排序
b //高亮显示running运行中的进程
q //退出动态查看模式
h //获取帮助信息
top命令显示的内容
[root@c7-100 ~]# top -n1
top - 11:17:19 up 2:52, 1 user, load average: 0.00, 0.01, 0.05
系统时间 系统运行时间 当前登录用户数 平均负载情况;1分钟负载,5分钟负载,15分钟负载
举例:1分钟之内,(假设1核心)你使用了cpu30秒来执行进程,那么你的1分钟负载就是0.5
(假设2核心)你使用了cpu30秒来执行进程,那么你的1分钟负载就是1.0
-----------------------------------------------------------------------------
Tasks: 91 total, 1 running, 90 sleeping, 0 stopped, 0 zombie
进程总数 运行数量 睡眠等待 暂停进程 僵尸进程
-----------------------------------------------------------------------------
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
0.0 us //用户态:用户的操作所占用cpu的使用率(优先级最高的)
0.0 sy //内核态:系统的内容默认优先级,所占用cpu的使用率(内核态一般都是优先级较低的)
0.0 ni //优先执行的进程占用内存的百分比
100.0 id //cpu的空闲时长;100%的时间cpu都在空闲着(就是查询时cpu有没有被占用)
0.0 wa //系统cpu等待硬件资源处理进程任务的等待百分比(如果等待时间过长,考虑硬件原因)
//中断:就是暂时让一个进程暂停让别的进程先执行
0.0 hi //表示硬中断占用cpu的百分比
0.0 si //软中断占用cpu的百分比
0.0 st //表示服务器运行了很多的虚拟机,虚拟主机的cpu所占用百分比
-----------------------------------------------------------------------------
KiB Mem : 995672 total, 750324 free, 138484 used, 106864 buff/cache
最大内存 空闲内存 使用中的内存 缓存与缓冲
-----------------------------------------------------------------------------
KiB Swap: 2097148 total, 2097148 free, 0 used. 728496 avail Mem
最大交换分区内存 空闲的内存 使用中的内存
一般情况,在企业当中,尽量关闭它;
-----------------------------------------------------------------------------
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 43976 4248 2556 S 0.0 0.4 0:01.98 systemd
....
PID //进程号
USER //守护进程的用户
PR //进程调度的优先级
NI //进程调度的优先级(数值)
VIRT //进程占用我们内存的建筑面积(建筑面积:运行进程的时候,需要占用的内存大小,具体是否使用不重要)
RES //进程占用实际内存的大小(实用面积:运行进程真实占用内存大小)
SHR //进程占用的共享内存(公摊面积:就是谁都可以使用的内存)
S //进程状态
%CPU //运行进程占用cpu的百分比
%MEM //运行进程占用内存的百分比
TIME+ //运行进程,到此时此刻,一共占用cpu的时间
COMMAND //进程调用的命令
三、进程管理
1.kill杀死进程
1.语法
kill 参数 进程号
-------------------------------------------
查看kill的信号列表
[root@c7-100 ~]# 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
kill -s SIGKILL == kill -9
-------------------------------------------
kill杀死进程有很多种方式,默认是【kill -15】
如果你kill一个进程杀不掉,【kill -9】强制杀死进程;
-------------------------------------------
[root@c7-100 ~]# sleep 30000 && rm -rf /* &
[1] 111354
查看后台运行的进程
[root@c7-100 ~]# jobs
[1]+ 运行中 sleep 30000 && rm -rf /* &
杀死进程
[root@c7-100 ~]# kill 111354
kill -15 111354
-------------------------------------------
kill -1 进程号 #不杀死进程,而是重新加载进程的配置文件;
kill -9 进程号 #强制杀死、终止进程(强制关闭);
kill -15 进程号 #【默认的信号】终止指定的进程;(温柔的杀死进程,把事情做完再停止进程;)
注意:-15无法删掉以及处于停止状态的进程,因为进程停止无法把当前任务执行完所以杀不掉已经处于停止状态的进程。
2.pkill杀死进程(默认-15)
pkill 参数 进程名称
例:
[root@c7-100 ~]# ps -axu |grep sleep
root 1816 0.0 0.0 108052 356 pts/0 T 16:13 0:00 sleep 300000000
root 1867 0.0 0.0 112824 980 pts/0 R+ 16:36 0:00 grep --color=auto sleep
[root@c7-100 ~]# pkill -9 sleep
[1]+ 已杀死 sleep 300000000
12-完