查看系统进程信息
静态查看系统进程信息之ps命令
(每五秒刷新一次数据)
方法一:ps aux //显示所有进程
- a:显示现行终端下的所有进程,包括其它用户的进程。
- u:显示进程的归属用户及内存的使用情况。
- x:显示所有终端的进程。
- h:不显示标题列。
各列的解释:
- USER:进程的用户。
- PID:进程的ID。
- %CPU:进程占用的CPU百分比,占用越高,进程越耗费资源。
- %MEM:占用内存的百分比。
- VSZ:该进程使用的虚拟内存量(KB)。
- RSS:该进程占用的实际物理内存量(KB)。
- TTY:启动进程的终端名。不是从终端启动的进程则显示为 ?
- STAT:该进程的状态(D:不可中断的休眠状态;R:正在运行状态;S:处于休眠状态,可被唤醒;T:停止状态,可能是在后台暂停或进程处于跟踪调试状态;Z:僵尸进程,进程已经中止,但是部分程序还在内存当中)
- START:该进程被启动时间。
- TIME:该进程实际使用CPU的时间。
- COMMAND:进程的名称与参数。
注:查看系统中有多少个进程:ps auxh | wc-l //加上h表示不显示名称
方法二:ps -elf
常用参数及其作用:
- -e:显示系统内的所有进程信息。
- -l:使用长格式显示进程信息。
- -f:使用完整的格式显示进程信息。
- -a:显示现行终端下的所有进程。
- -T:查看线程信息。
- -C <进程名称>:显示指定进程名的信息。
- -p <进程pid>:显示指定pid的进程的信息。
- -H:显示树状结构,表示进程间的相互关系。
- --no-headers:不显示标题列。
进程的几个常用参数:
PID:进程号
PPID:父进程PID
UID: 真实用户ID进程创建者的用户ID号)
GID:真实组ID(进程创建者所属组的ID号)
谦让度(NI)和优先级(PRI):数字越小,优先级越高,优先级高的进程更早被处理。谦让度和优先级是一对相反的概念,高谦让度意味着低优先级,允许用户设置谦让度。
注:查看系统中有多少个进程:[root@localhost ~]# ps -elf --no-headers | wc -l
动态查看进程信息之top命令
load average: 表示系统负载的平均值,显示的三个数值分别表示 1 分钟、5 分钟和15分钟内的平均负载情况。
平均负载:是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,可以简单的理解为平均负载就是系统平均活跃进程数。当系统平均负载的值如果超过系统 CPU 的数量,那么系统有可能会遇到性能瓶颈。
load average 的值在什么情况可认为是异常的? 当平均负载长时间高于CPU数量的70%时
load average 平均负载高时可能是CPU密集型进程多导致,也可能是I/O繁忙导致
查看系统平均负载情况命令:w、uptime、load
load average:0.00, 0.01, 0.05 分别表示 1 分钟、5 分钟和15分钟内的平均负载情况。
进程信息属性介绍(以上图为例)
第一行:任务队列信息
01:44:46 | up 4:44 | 1 user | load average: 0.00, 0.01, 0.05 |
当前系统时间 | 系统己运行时长 | 当前登录用户数 | 系统平均负载,即单位时间内系统处理的任务数,后面三个数值分别为1分钟、5分钟、15分钟前到现在的平均值 |
第二行:进程信息
175 total | 1 running | 174 sleeping | 0 stopped | 0 zombie |
总进程数为175 | 正在运行的进程数为一个 | 中止的进程数有174个 | 僵死的进程数为0 |
第三行:cpu信息
us | sy | ni | id | wa | hi | si | st |
用户占用 | 内核占用 | 优先级调度占用 | 空闲CPU,要了解空闲的CPU百分比,主要看%id部分 | I/O等待占用 | 硬件中断占用 | 软件中断占用 | 虚拟化占用 |
第四行:内存信息
total | free | used | buff/cache |
总内存空间 | 空闲内存 | 己用内存 | 物理内存和交换内存的缓冲区总和 |
第五行:交换空间的信息
total | free | used | avail Mem |
总交换空间 | 空闲交换空间 | 己用交换空间 | 可用物理空间 |
查看系统指标总结:
CPU top vmstat sar htop atop
内存 free -m vmstat sar top cat /proc/meninfo
IO iostat(磁盘级别) iotop(进程级别) vmstat(系统级别) atop sar
磁盘容量 df -h du
进程 ps top htop atop pidstat
网卡流量 ifconfig iftop atop cat /proc/net/dev
top常用命令:
- P 键:根据CPU使用百分比大小进行排序
- M 键:根据驻留内存大小进行排序
- N 键:根据启动时间进行排序
- c 键:切换显示命令名称和完整命令行
- h 键:可以获得 top程序的在线帮助信息
- k 键:根据提示输入指定进程的 PID 号并按 Enter 键终止对应的进程
- q 键:退出 top 程序
- 数字1 键:显示CPU个数和状态
查看进程信息之pgrep命令
(条件查询)
pgrep -l "关键词"
pgrep -U 表示根据用户查询
pgrep -t 表示根据终端查询
[root@localhost ~]# pgrep -l -U huang //更具用户查找
2104 sshd
2107 bash
2153 su
[root@localhost ~]# who
huang pts/0 2024-04-18 21:01 (192.168.10.1)
[root@localhost ~]# pgrep -l -t pts/0 //根据终端查找
2107 bash
2153 su
2162 bash
[root@localhost ~]# pgrep -l "vi" //根据关键词vi查找
758 VGAuthService
1114 libvirtd
查看进程树pstree
以树形结构列出进程信息
- -a:显示完整信息
- -u:列出对应用户名
- -p:列出对应PID号
[root@localhost ~]# pstree -aup huang //查看指定用户的进程数结构
sshd,2104
└─bash,2107
└─su,2153,root root
└─bash,2162
└─pstree,6159 -aup huang
进程的启动方式
运行方式
前台运行:在命令行输入命令直接运行
后台运行:在命令末尾添加&
(缺点是在默认情况下会随着终端的关闭而退出,可在命令开头位置添加 nohup(格式为nohup 命令 &),可实现后台运行的进程不会随着终端的关闭而自动退)
后台运行示例:
此时可以看到,“cp /dev/sr0 /tmp &”命令的执行不会影响其他操作的执行
[root@localhost ~]# cd /tmp
[root@localhost tmp]# cp /dev/sr0 /tmp &
[1] 6282
[root@localhost tmp]#
[root@localhost tmp]#
[root@localhost tmp]#
[root@localhost tmp]# ls
hsperfdata_root
sr0
进程前后台调度
ctrl + z #将前台进程挂起暂停并调入到后台
jobs -l #查看挂起调度到后台的进程列表和序号
fg <序号> #将挂起到后台的进程调度到前台继续运行
终止进程的执行
Ctrl+C组合键
中断正在执行的命令
kill、killall命令
okill用于终止指定PID号的进程
okillall用于终止指定名称相关的所有进程
-9选项用于强制终止
pkill命令
根据特定条件终止相应的进程
常用选项
- -U:根据进程所属的用户名终止相应进程
- -t:根据进程所在的终端终止相应进程
[root@localhost ~]# pkill -t 'pts/2' //杀死指定终端设备‘pts/2’
Connection closing...Socket close.
Connection closed by foreign host.
Disconnected from remote host(CentOS 7-2) at 22:47:26.
Type `help' to learn how to use Xshell prompt.
kill命令总结
1、kill是通过向进程发送信号的方式杀掉进程
2、kill 默认选项为 -15 ,发送信号 SIGTERM,表示告诉进程自行停止运行并退出,进程可以忽略
3、kill -9 ,发送信号 SIGKILL,表示进程要立即退出,且不能被捕捉或忽略
4、kill -3 ,发送信号 SIGQUIT,表示进程自行退出,并打印进程各个线程的堆栈信息,保存路径为 /proc/${pid}/cwd,文件名为 antBuilderOutput.log
5、kill -1 ,发送信号 SIGHUP,表示进程重新加载配置文件,不退出
计划任务管理
1、at一次性任务设置
- at HH:MM [yyyy-mm-dd]
- 输入命令列表
- ctrl + d 提交任务
- atq 查看没执行的任务列表和序号
- atrm <序号> 删除指定的任务
[root@localhost ~]# date
Sun May 7 10:33:13 EDT 2017
[root@localhost ~]# at 10:35 2017-05-07
at> pgrep -U root |wc -l>/tmp/ps.root
at> <EOT> #按Ctrl+D键提交任务
job 1 at Sun May 7 10:35:00 2017
[root@localhost ~]# cat /tmp/ps.root
202
2、crontab周期性任务设置
启动周期性任务必须确认对应的系统服务crond已经运行
crontab -e [-u 用户] --> 自动对应文件 /var/spool/cron/用户名
按照预先设置的时间周期(分钟、小时、天、月、周)重复执行用户指定的命令操作
属于周期性计划任务
主要设置文件
全局配置文件,位于文件:/etc/crontab
系统默认的设置,位于目录:/etc/cron.*/
用户定义的设置,位于文件:/var/spool/cron/用户名
符号以及其含义:
案例:写出设置周期性计划任务的命令,要求工作日期间早十点和晚十点的二十二分执行一次强制复制/var/log/目录到/opt/。
crontab -e
22 10,22 * * 1-5 \cp -f -r /var/log/ /opt/ #cp是‘cp -i’的别名