列出进程
- 进程是已启动的可执行程序的运行中实例,进程由以下组成部分
-- 已分配内存的地址空间
-- 安全属性,包括所有权凭据和特权
-- 程序代码的一个或多个执行线程
-- 进程状态
- 进程的环境包括
-- 本地和全局变量
-- 当前调度的上下文selinux
-- 分配的系统资源,如文件描述符(fd)和网络端口
- 现有的(父)进程复制自己的地址空间(fork)来创建一个新的(子)进程结构,每个新进程分配由唯一进程ID(PID),满足跟踪和安全性之需。
- PID和父进程ID(PPID)是新进程环境的元素
- 任何进程都可以创建子进程
- 所有进程都是一个系统进程的后代
- RHEL7之后,第一个系统进程是systemd
~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 193576 6700 ? Ss Apr21 1:19 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S Apr21 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? S< Apr21 0:00 [kworker/0:0H]
root 5 0.0 0.0 0 0 ? S Apr21 0:00 [kworker/u4:0]
root 6 0.0 0.0 0 0 ? S Apr21 0:00 [ksoftirqd/0]
root 7 0.0 0.0 0 0 ? S Apr21 0:00 [migration/0]
~]# top
top - 01:53:01 up 5 days, 1:11, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 99 total, 3 running, 96 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st
KiB Mem : 1881984 total, 1230000 free, 266992 used, 384992 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 1410580 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2993 root 20 0 0 0 0 R 0.3 0.0 0:07.06 kworker/1:1
27490 root 20 0 162084 2216 1552 R 0.3 0.1 0:00.02 top
1 root 20 0 193576 6700 4180 S 0.0 0.4 1:19.85 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
控制作业
- 作业控制是shell的一种功能,允许单个shell实例运行和管理多个命令
- 作业与在shell提示符中输入的每个管道相关联
- 一次只能有一个作业从测定窗口中读取和键盘生成的信号
- 每个终端是其自身的会话,并且可以具有一个前台进程和任意数量的独立后台进程,一个作业只能属于一个会话
- 在后台运行作业
-- 在命令后端附加&即可
-- 使用jobs查看当前会话的后台作业
-- ps j查看所有用户的后台作业
-- fg %JOB恢复后台作业到前台
-- bg %JOB恢复后台作业为运行
[root@serverb ~]# sleep 1000 & #后台运行作业
[1] 28057
[root@serverb ~]# jobs #查看当前会话的后台作业
[1]+ Running sleep 1000 &
[root@serverb ~]# fg %1 #恢复后台作业到前台
sleep 1000
^Z #ctrl+z暂停进程
[1]+ Stopped sleep 1000
[root@serverb ~]# jobs
[1]+ Stopped sleep 1000
[root@serverb ~]# bg %1 #恢复暂停进程到运行
[1]+ sleep 1000 &
[root@serverb ~]# fg %1
sleep 1000
中断进程
[root@serverb ~]# ps aux | grep sleep
root 29833 0.0 0.0 108056 356 pts/1 S 02:39 0:00 sleep 1000
root 29837 0.0 0.0 108056 356 pts/1 S 02:39 0:00 sleep 2000
root 29841 0.0 0.0 108056 356 pts/1 S 02:40 0:00 sleep 3000
root 29858 0.0 0.0 112812 980 pts/0 S+ 02:40 0:00 grep --color=auto sleep
[root@serverb ~]# kill 29833
[root@serverb ~]# ps aux | grep sleep
root 29837 0.0 0.0 108056 356 pts/1 S 02:39 0:00 sleep 2000
root 29841 0.0 0.0 108056 356 pts/1 S 02:40 0:00 sleep 3000
root 29879 0.0 0.0 112812 976 pts/0 R+ 02:40 0:00 grep --color=auto sleep
[root@serverb ~]# kill -9 29837
[root@serverb ~]# ps aux | grep sleep
root 29841 0.0 0.0 108056 356 pts/1 S 02:40 0:00 sleep 3000
root 29896 0.0 0.0 112812 980 pts/0 S+ 02:41 0:00 grep --color=auto sleep
[root@serverb ~]# kill -SIGTERM 29841
[root@serverb ~]# ps aux | grep sleep
root 29925 0.0 0.0 112812 976 pts/0 S+ 02:41 0:00 grep --color=auto sleep
[root@serverb ~]# jobs
[1] Terminated sleep 1000
[2]- Killed sleep 2000
[3]+ Terminated sleep 3000
[root@serverb ~]# jobs
[1] Running sleep 3000 &
[2]- Running sleep 2000 &
[3]+ Running sleep 1000 &
[root@serverb ~]# killall sleep
[root@serverb ~]# jobs
[1] Terminated sleep 3000
[2]- Terminated sleep 2000
[3]+ Terminated sleep 1000
监控进程活动
- 描述负载平均值
-- 负载平均值是Linux内核提供的一种度量方式,它可以表示一段时间内感知的系统负载。
- 了解Linux负载平均值计算
-- 通过报告CPU上准备运行的进程数以及等待磁盘或网络I/O完成的进程数,Linux可以确定负载平均值
-- 负载数基本上根据准备运行的进程数和等待I/O完成进程数而得到的;
-- 一些unix系统仅考虑CPU的使用率或运行队列长度来指示系统负载。Linux还包括磁盘I/O和网络利用率,因为他们与CPU负载一样对系统产生重大的影响。当负载平均值很高,但CPU活动很低,请检查磁盘和网络活动。
- uptime查看cpu的平均负载值,只显示一次
~]$ uptime
10:31:01 up 5 days, 15:40, 1 user, load average: 0.28, 0.18, 0.15
#uptime显示的是1min、5min、15min的cpu平均负载值;总的来讲cpu平均负载之只要不高于cpu总核心数就没有问题
#查看cpu总核心数
~]$ nproc
4
~]$ top
top - 11:30:00 up 5 days, 16:39, 1 user, load average: 0.31, 0.21, 0.16
Tasks: 232 total, 1 running, 231 sleeping, 0 stopped, 0 zombie
%Cpu(s): 4.9 us, 7.6 sy, 0.0 ni, 87.4 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 7972392 total, 3939352 free, 2201144 used, 1831896 buff/cache
KiB Swap: 16777212 total, 16777212 free, 0 used. 5282228 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
851 root 20 0 396668 4244 3388 S 48.5 0.1 2209:27 accounts-daemon
2068 gdm 20 0 3672668 123820 56112 S 0.7 1.6 14:37.83 gnome-shell
- top命令显示结果详解
-- 第一行:
top:表示命令名称
up xxx:表示系统的启动时间
load average:表示cpu最近1min、5min、15min内的系统负载,当负载超过cpu总核数时,算是cpu过载
-- 第二行:
Tasks:表示系统总进程个数
1 running:表示1个进程正在运行
231 sleeping:表示有231个进程处于休眠状态
0 stopped:表示有0个进程已暂停
0 zombie:表示有0个僵停进程
-- 第三行:
%Cpu(s):cpu占用率
us:用户空间占用cpu的百分比
sy:系统空间占用cpu的百分比
ni:用户进程的优先级
id:空闲的cpu时间百分比
wa:等待I/O的完成的cpu时间百分比
hi:硬件中断
si:软件中断
st:被强制等待虚拟cpu的时间
-- 第四行:物理内存的使用情况
-- 第五行:交换分区的使用情况
- top命令界面使用的快捷键
- 使用htop实时监控
htop默认RHEL没有,需要epel源安装,htop界面的相比较比top更加丰富直观