Linux进程管理:任务计划服务程序

计划任务分为一次性计划任务长期性计划任务。

1、一次性计划任务:只执行一次,一般用于临时的工作需求。

设置执行时间:at 时间

查看已设置好但还未执行的任务:at -l

删除任务:atrm 任务序号

at命令的参数及其作用

参数 作用
-f 指定包含命令的任务文件
-q 指定新任务名称
-l 显示待执行任务列表
-d 删除指定待执行任务
-m 任务执行后给用户发邮件

在使用at命令来设置一次性计划任务时,默认采用的是交互式方法。

例:设置20:30分自动重启,查看设置后的任务,然后删除任务。

img

注:warning提醒表示at命令只是在告诉我们接下来的任务将由sh解释器负责执行。

例:可以把前面学习的管道符(任意门)放到两条命令之间,让at命令接收前面echo命令的输出信息,以达到通过非交互式的方式创建计划一次性任务的目的。

如:echo “reboot” | at 20:30

img

例:把计划任务写入到Shell脚本中,当用户激活后再开始倒计时执行,可以使用“at now +2 MINUTE”的方式操作,这样代表2分钟(MINUTE)后执行这个任务,也可以替代成小时(HOUR)、日(DAY)、月(MONTH)等词汇:

at now +2 MINUTE

  • 时间的表示方法:

    绝对表示方法:

  1. midnight //当天午夜
  2. noon //当天中午
  3. teatime //当天下午4点
  4. hh:mm mm/dd/yy

​ 相对表示方法:

  1. now+n minutes //从现在起向后n分钟
  2. now+n days //从现在起向后n天
  3. now+n hours //从现在起向后n小时
  4. now+n weeks //从现在起向后n周

2、长期性计划任务:周期性地、有规律地执行某些具体的任务。

创建、编辑计划任务:crontab -e

查看当前计划任务:crontab -l

删除某条计划任务:crontab -r

以管理员的身份登录,可以在编辑他人的计划任务:crontab -u

crontab命令的参数及其作用如下所示。

​ crontab命令的参数及其作用

参数 作用
-e 编辑计划任务
-u 指定用户名称
-l 列出任务列表
-r 删除计划任务

使用crond服务设置任务的参数格式:分、时、日、月、星期 命令

注:如果有些字段没有被设置,则需要使用星号(*)占位。

使用crond设置任务的参数字段说明

字段 说明
分钟 取值为0~59的整数
小时 取值为0~23的任意整数
日期 取值为1~31的任意整数
月份 取值为1~12的任意整数
星期 取值为0~7的任意整数,其中0与7均为星期日
命令 要执行的命令或程序脚本

例:在每周一、三、五的凌晨3点25分,都需要使用tar命令把某个网站的数据目录进行打包处理,使其作为一个备份文件。

img

注:

用逗号“,”来分别表示多个时间段,例如“8,9,12”表示8月、9月和12月。

用减号“-”来表示一段连续的时间周期(例如字段“日”的取值为“12-15”,则表示每月的12~15日)。

用除号“/”表示执行任务的间隔时间(例如“*/2”表示每隔2分钟执行一次任务)。

在crond服务中需要同时包含多条计划任务的命令语句,应每行仅写一条。例如再添加一条计划任务,它的功能是每周一至周五的凌晨1点钟自动清空/tmp目录内的所有文件。

尤其需要注意的是,在crond服务的计划任务参数中,所有命令一定要用绝对路径的方式来写,如果不知道绝对路径,请用whereis命令进行查询,rm命令路径为下面输出信息中加粗部分。

img

删除定时任务:

img

还可以直接编辑配置文件达到设置定时任务的目的:

vim /etc/crontab

img

缺点是直接编辑文件没有提示,使用crontab 命令若写错会有提示。

例子:

列出crontab

以root用户列出zhangsan 的crontab

1
#crontab –u zhangsan –l 

以普通用户zhangsan列出自己的crontab

1
$crontab –l 

对/var/spool/cron/zhangsan文件备份

1
2
$crontab –l >/home/zhangsan/zhangsancron 
$ls /home/zhangsan/zhangsancron

删除crontab

删除crontab也会删除/var/spool/cron目录中指定用户的文件

以用户root删除zhangsan的crontab文件

1
#crontab –u zhangsan -r 

以普通用户zhangsan删除自己的crontab文件

1
$crontab -r

恢复丢失的crontab文件

如果不小心误删除了crontab文件,且在主目录下还有一个备份,那么可 以将其复制到/var/spool/cron/username(具体用户),如果由于权限问 题无法复制可以使用crontab命令解决

以zhangsan用户登录恢复丢失的crontab文件

1
$crontab –r 

删除文件

1
2
$crontab –l  
$crontab /home/zhangsan/zhangsancron

恢复丢失的文件,恢复后可以看到文件信息

1
$crontab –l