本篇博客将详细介绍Liunx系统中与进程有关的相关命令,主要可以分为以下几个方面:
目录:
- 查看进程
- 控制进程
- 一次性任务设置
- 周期性任务设置
前言:
在正式开始博客正文之前,这里先对进程做一个简单的概述。进程是什么?
进程实际上只是一段代码,不过与我们经常听到的程序不同的是。
程序是保存在介质中的代码,属于静态保存的代码;
而进程是在CPU及内存中运行的代码,属于动态保存的代码。
一、查看进程
查看进程我们通常使用的命令有两种:PS命令和TOP命令,接下来我就针对这两个命令分别进行详细的解释:
1、PS命令
PS命令用来列出系统中当前运行的那些进程,但与我们后面介绍的TOP命令不同的是,PS命令所展现的进程类似于快照,属于静态的;而TOP命令则属于动态的。
常用命令选项组合:
[root@localhost ~]# ps aux
其中,ps后面每个选项的意义分别为:
a————列出系统当前所有进程
u————使用以用户格式为主的方式输出
x————该用户在终端下的所有进程
界面示意截图:
“ps aux”所展现的列表的表头也有着自己不同的含义,从左到右分别为:
USER——代表进程在哪个用户下
PID——代表进程对应的进程号
%CPU——代表进程的CPU占用率
%MEM——代表进程的内存占用率
VSZ——虚拟内存占用
RSS——物理实际内存占用
TTY——终端(这里都是?的原因是,通过本地登录一般都是?)
STAT——当前进程所处的状态(不同字符代表不同的状态:S表示可中断的休眠进程;s表示父进程;<表示优先级高的进程;R代表正在运行的进程;l代表多线性进程;N代表优先级低;Z代表僵尸进程;D代表不可中断的休眠进程;+代表的是前台进程)
START——代表进程开始时间
TIME——代表该进程占用CPU的时间
COMMAND——进程本身名称
关于查看静态的进程表,还有另外一种查看方式
[root@localhost ~]# ps -elf
其中,ps后面每个选项的意义分别为:
-e————显示当前系统所有进程
-l————以长格式进行显示
-f————以完整格式进行显示
界面示意截图:
和“ps aux”一样该命令的表头同样有着不同的含义(上面介绍过的表头这里就不浪费口水复述了):
PPID——该进程的父进程的PID号
C——CPU占用率
PRI——用户态的进程优先级(数值越小优先级越高)
NI——内核态的进程优先级(数值越小优先级越高)
ADDR——进程状态(“-”表示正在运行)
SZ——该进程占用虚拟交换分区(swap)的容量
WCHAN——该进程在内核中的名称
TIME——运行时间
2、TOP命令
和之前的PS命令一样,TOP也是用来显示进程表的,不过PS显示的是静态的进程表,而TOP则显示的是动态的进程表(刷新频率:每3s刷新一次)。
具体界面截图:
二、控制进程
光是了解进程还不够,最主要的还是能够对进程进行控制,下面的几个命令就是日常用的最多的控制进程的命令:
(1)pgrep命令——根据特定条件查询进程PID信息
常用命令选项组合:
[root@localhost ~]# pgrep -l "log"
[root@localhost ~]# pgrep -l -U root -t pts/0
(2)pstree命令——以树形结构列出进程信息
常用命令选项组合:
[root@localhost ~]# pstree -aup
其中,
-a——表示显示完整信息
-u——表示显示用户
-p——表示显示PID号
具体界面截图如下:
另外,还有一种组合仅仅只列出某个用户的进程树:
[root@localhost ~]# pstree -ap root
(3)kill、killall、pkill命令——终止进程
虽然这三个命令都是用来终止进程,不过三者之间仍有很大的区别。
kill命令——后面通常跟PID号,意为“杀死”指定某个进程;
killall命令——后面通常跟进程关键字,意为“杀死”含有关键字的所有进程;
pkill命令——后面通常跟“-U/-t”再加上用户名/终端,意为“杀死”指定用户/终端下的所有进程。
但三者都可以使用“-9”,将正在运行的进程“强制”终止。
三者具体界面截图如下:
(4)进程的调度
控制进程不光是掌控进程的“生死”,而是为了让进程能够更好的为我们工作,所以调度必不可少。
通常情况,所有键入的指令都会在前台运行,在运行大容量的复制、移动等操作时,前台运行会大大增加等待时间,所以我们可以在平常的指令后加“&”符号将其移入后台执行,并用jobs命令查看,例:
[root@localhost ~]# dd if=/dev/zero of=/mnt/aaa.txt bs=1G count=10 &
[root@localhost ~]# jobs -l
具体示意截图:
同样我们也可以用bg命令加序号(上面3987PID的前面就是序号)的方式将后台的进程调回前台执行,并使用“ctrl z”的快捷键将前台进程挂起,并以停止的方式调回后台。
`[root@localhost ~]# fg 1
^Z
三、at命令——一次性任务
常用选项组合:
[root@localhost ~]# at 17:00 2019-08-26
其中
“17:00”——表示一次性计划执行时间
“2019-08-26”——表示一次性计划执行日期
具体操作案例:
完成一次性计划任务后,可以使用atq命令进行查看、使用atrm命令进行对应的删除
[root@localhost ~]# atq
[root@localhost ~]# atrm 对应序列
四、Crontab命令——周期性任务
at命令被用于创建一次性计划任务,那么相对应的可多次执行的计划任务也同样存在。
Crontab命令
常用的选项:
-u——哪个用户进行执行
-e——对计划任务进行编辑
-l——查看所有的计划任务
-r——删除对应用户下所有周期性任务
选项后的格式为:(分时日月周)
分钟、小时、日期、月份、星期 命令
具体使用见截图:
其中各个时间数值的特殊表示方法:
“ * ” :表示该范围内的任意时间
“ ,”:表示间隔的多个不连续时间点
“ - ” :表示一个连续的时间范围
“ / ” :指定间隔的时间频率