“Yeah It’s on. ”
系统进程与计划任务管理
进程管理
-
程序–>静态保存的代码
-
进程–>加载到内存中的程序代码,动态执行的代码
-
父、子进程:每一个进程可以创建一个或多个进程
- 守护进程:常驻内存,与终端无关
- 用户进程:用户通过终端加载的进程
扩展:

1
2
3
问:ps aux先执行,那为什么ps aux | grep ping的结果会查到grep ping进程?
答:当你执行 ps aux | grep ping 命令时,实际上是先执行 ps aux命令,然后再执行 grep ping 命令。但是,ps aux 命令和 grep ping 命令并不是严格的顺序执行。当你在命令行输入 ps aux | grep ping 命令后,shell 会先创建一个管道,然后同时 fork 出两个子进程,一个子进程执行 ps aux 命令,另一个子进程执行 grep ping 命令,并且这两个命令是几乎同时开始执行的。因此,grep ping 进程在 ps aux 命令执行完毕时可能仍然存在,所以 ps aux 命令的输出结果中会包含 grep ping 进程。
ps命令
查看静态的进程统计信息
- a:显示当前终端下的所有进程命令,包括其他用户的进程。与”x”选项结合时将显示系统中所有的进程信息
- u:使用以用户为主的格式输出进程信息。
- x:显示当前用户在终端下的进程信息。
- -e:显示系统内的所有进程信息
- -l:使用长格式显示进程信息
- -f:使用完整格式显示进程信息
常用组合 ps aux 或 ps -lef

各字段的含义描述
-
user:启动该进程的用户账号的名称
-
pid:该进程在系统中的PID号
-
%CPU:cpu占用百分比
-
%MEM:内存占用百分比
-
vss:占用虚拟内存swap空间的大小。
-
rss:占用常驻内存物理内存的大小。
-
tty:表明该进程在哪个终端上运行,?表示不需要终端
-
stat:显示了进程当前的状态:
D:不可中断睡眠
S:可中断睡眠
R:就绪或运行状态
T:中止状态
Z:僵死状态
<:高优先级进程
N:低优先级进程
+:前台进程组中的进程
l :多线程的进程
s:会话进程的首进程
top命令
查看进程动态信息
top 命令将会在当前终端以全屏交互式的界面显示进程排名,及时眼踪包括 CPU、内存等系统资源占用情况,默认情况下每三秒刷新一次。

- PID: 进程的ID
- USER: 进程所有者
- PR: 进程的优先级别
- NI: nice值。负数表示高优先级,正数表示低优先级
- VIRT: 虚拟内存使用量 (kb)
- RES: 物理内存使用量 (kb)
- SHR: 共享内存大小 (kb)
- S: 进程状态。D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程
- %CPU: 该进程使用的CPU的使用率(看id,剩余)
- %MEM: 该进程使用的物理内存和总内存的百分比
- TIME+: 该进程启动后占用的总的CPU时间,精确到1/100秒
- COMMAND: 进程启动命令名称
常用选项
- -d:指定刷新的间隔时间,单位秒
- -b: 以批量处理模式操作(非交互) ,一般与-n 同时使用
- -n:指定循环显示的次数
- -u:指定用户名
- -p: 指定进程号
-b -n 组合用于将执行结果打入文件,当 CPU 占用率过高时,不应再直接执行 top 命令查看,可以将信息存入一个文件内查看,以免 CPU 占用率过高导致崩溃,常用操作如下:
1
top -b -n1 > /top.txt
pgrep命令
查询特定进程信息 pgrep 命令正是用来查询特定进程信息的专用工具。使用 pgrep 命令可以根据进程的名称、运行该进程的用户、进程所在的终端等多种属性查询特定进程的 PID 号。
- -l: 显示进程名
- -U: 指定特定用户
- -t: 指定终端
- -a: 显示完整格式的进程名
- P pid. 显示指定进积的子进程
pstree命令
用 ASCII 字符显示树状进程结构
pstree 命令可以输出 Linux 系统中各进程的树形结构,判断出各进程之间的相互关系(父、子进程)。pstree 命令默认情况下只显示各进程的名称
- -p:选项使用时可以同时列出对应的 PID 号
- -u:选项可以列出对应的用户名
- -a: 选项可以列出完整的命令信息。

终止进程
Ctrl+c 中断正在执行的命令
kill命令
- -9:杀死正在运行的进程(强制立刻杀死进程)
- -15:终止正在进行的进程(优雅杀死)
killall命令
指定进程名杀死
pkill命令
作用: 根据特定条件终止相应的进程
常用选项:
-
-U: 根据进程所属的用户名终止相应进程
-
-t: 根据进程所在的终端终止相应进程
任务管理
基本概念
- 任务:登录系统取得 shel1之后,在单一终端接口下启动的进程
- 前台:在终端接口上,可以在提示符上用户操作的环境
- 后台:不显示在终端接口的环境
手工启动
前台启动:用户输入命令,直接执行程序
1
ping baidu.com
后台启动:在命令行尾加入”&“符号,跟终端有关
1
dd if=/dev/zero of=/testfile bs=1M coun=2048 &
nohup是使程序永久被执行的方式
用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,忽略输入并把输出追加到”nohup.out“
进程的前后台调度
ctrl+z : 将正在前台运行的任务放入后台暂停
jobs: 查看处于后台的任务列表
- -l 列出进程 ID 及其它信息
- -p 仅列出进程 ID
- -n 仅列出自从上次输出了状态变化提示(比如显示有进程退出) 后的发生了状态变化的进程。
- -r 仅显示运行中的作业
- -s 仅显示停止的作业。
- -x 运行命令及其参数,并用新的命令的进程 ID 替代所匹配的原有作业的进程组 ID。
fg::将后台进程恢复到前台运行,可指定任务程序号
bg:将后台暂停的进程调至后台运行
at一次性任务设置
at 命令设置的计划任务只在指定的时间点执行一次,前提是对应的系统服务 atd 必须已经运行。需要注意的是,计划执行任务的时间、日期必须安排在当前系统的时刻之后,否则将无法正确设置计划任务。
- at HH:MM 今天的HH:MM事件执行,若是时间已经超过,则明天的HH:MM时间执行
- at HH:MM YYYY-MM-DD 指定具体的执行时间日期和时间
基本操作:
- Ctrl+D 保存退出
- atp 查询现有的一次性任务计划
- atrm [任务序号] 删除第几项任务
- at -c 查看任务的具体内容
crontab周期性任务设置
使用 crontab 命令设置的计划任务可以按预设的周期重复执行,可以大大减轻设置重复性系统管理任务的操作。启用周期性任务也有一个的前提条件,即对应的系统服务 crond必须已经运行。

系统可以执行的,crontab不一定可以执行,因为扫描的文件夹不全
由用户自行设置的 cron计划任务将被保存到目录/var/spool/cron/中,文件名与用户名相同。crond守护进程会自动检查/etc/crontab 文件、/etc/cron.d/目录及/var/spool/cron目录中的改变,如果发现有配置更改,就会被载入内存,所以当某个 crontab 文件改变后并不需要重新启动 crond 守护进程就可以使设置生效。
使用crontab命令管理用户的计划任务
- -e:编辑计划任务列表
- -u:指定所管理的计划任务属于哪个用户,默认时针对当前登录用户,一般只有root用户有权限使用此选项用户编辑、删除其他用户的计划任务
- -l:列表显示计划任务
- -r:清空计划任务列表(慎用)

当使用“”时表示取值范围中的任意时间。除了“”以外,还可以用减号“_”、逗号“,斜杠“/”与数字构成表达式来表示较复杂的时闹关系。
”-“:表示一个连续的时间范围1-5
”,“表示一个间隔的不连续范围1,5
”/“ 每隔多少执行一次