前言
本章将会讲解Linux云计算中的进程和任务管理
本章架构
一.程序和进程的关系
①程序
- 保存在硬盘、光盘等介质中的可执行代码和数据
- 静态保存的代码
②进程
- 在 CPU 及内存中运行的程序代码
- 动态执行的代码
- 父、子进程
- 每个进程可以创建一个或多个进程
二.查看进程信息
1.ps:查看静态的进程统计信息
代码语言:javascript
复制
[root@localhost ~]# ps -elf
2.top:查看动态的进程排名信息
代码语言:javascript
复制
[root@localhost ~]# top
3.pgrep命令
根据特定条件查询进程 PID 信息
代码语言:javascript
复制
[root@localhost ~]# pgrep -l "log"
2538 rsyslogd
2113 mcelog
[root@localhost ~]# pgrep -l -U teacher -t tty1
27483 bash
27584 vim
-l:显示进程名 -U:指定特定用户 -t:指定终端
4.pstree命令
以树形结构列出进程信息
三.进程的前后台调度
1.进程的前后台调度
- 1>Ctrl+Z 组合键:将当前进程挂起,即调入后台并停止执行
- 2>jobs 命令:查看处于后台的任务列表
- 3>fg 命令:将后台进程恢复到前台运行,可指定任务序号
2.终止进程的运行
(1)kill、killall 命令
- 1>kill用于终止指定PID号的进程
- 2>killall用于终止指定名称的所有进程
- 3>-9 选项用于强制终止
(2)pkill命令:根据特定条件终止相应的进程
(-U:根据进程所属的用户名终止相应进程 -t:根据进程所在的终端终止相应进程)
代码语言:javascript
复制
[root@localhost ~]# pgrep –l -U "hackli"
3045 bash
[root@localhost ~]# pkill -9 -U "hackli”
[root@localhost ~]# pgrep -l -U "hackli”
四.计划任务管理
1.at命令:一次性计划任务
代码语言:javascript
复制
at [HH:MM] [yyyy-mm-dd]
(ctrl+D提交任务)(atq:查看 atrm:删除)
(1)案例
在当天的 21:30 时自动关闭当前系统
代码语言:javascript
复制
[root@localhost ~]# at 21:30
at> shutdown -h now
at> <EOT>
job 2 at Sun May 7 21:30:00 2017
代码语言:javascript
复制
[root@localhost ~]# atq #查看未执行的任务列表
2 Sun May 7 21:30:00 2017 a root
代码语言:javascript
复制
[root@localhost ~]# atrm 2 #删除第2条任务
[root@localhost ~]# atq
2.crontab命令:周期性计划任务
按照预先设置的时间周期(分钟、小时、天……)重复执行用户指定的命令操作
(1)主要设置文件
- 全局配置文件,位于文件:/etc/crontab
- 系统默认的设置,位于目录:/etc/cron.*/
- 用户定义的设置,位于文件:/var/spool/cron/用户名
(2)管理cron计划任务
(-e:编辑计划任务 -l:查看 -r:删除)
代码语言:javascript
复制
crontab -e [-u 用户名] #编辑计划任务
crontab -I [-u 用户名] #查看计划任务
crontab -r [-u 用户名] #删除计划任务
(3)crontab 任务配置的格式
分钟+小时+日期+月份+星期+命令 (*:表示该范围内的任意时间 ,:表示间隔的多个不连续时间点 -:表示一个连续的时间范围 /:指定间隔的时间频率)
(4)应用示例:
0 17 * * 1-5 周一到周五每天17:00
30 8 * * 1,3,5 每周一、三、五的8点30分
0 8-18/2 * * * 8点到18点之间每2小时
0 * */3 * * 每3天
本章总结
知识梳理
- 查看进程的命令(ps、top、pgrep、pstree)
- 进程控制
- 启动进程
- 调度进程(Ctrl+Z组合键、jobs、bg、fg)
- 终止进程(kill、killall、pkill)
- at命令设置计划任务
- crontab计划任务的配置字段