Linux例行任务管理

2014-12-22 阅读: Linux

Linux的例行任务包含两种:一种是需要周期执行的任务其命令为cron;另外一种是在某个特定时间执行一次的任务,其命令为at。

使用at在特定时间执行一次任务

当前时间后多长时间执行一次任务:

# at now + 3 minutes
at> echo hello > hello.txt
at> <EOT>
job 1 at Mon Dec 22 18:29:00 2014

<EOT>是输入组合键CTL+D

指定在某个特定的时间执行一次任务:

# at 19:00 2014-12-22
at> echo hello > hello.txt
at> <EOT>
job 1 at Mon Dec 22 19:00:00 2014

查看任务队列:

atq
1       Mon Dec 22 18:29:00 2014 a root

删除任务atrm <任务编号>

atrm 1

默认情况下,所有用户都可以使用at命令来调度自己的任务,如果需要禁用某个用户使用此功能,可以将该用户名添加到/etc/at.deny中。

使用crontab周期性执行任务

要使用crontab需要保证crond进程正在运行:

systemctl status crond
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) 

如果没有运行需要启动此进程:

systemctl start crond
systemctl enable crond

在使用crontab之前先来熟悉一下cron的语法:

分 时 日 月 星期 要运行的命令
第1列分钟0~59
第2列小时0~23(0表示子夜)
第3列日1~31
第4列月1~12
第5列星期0~7(0和7表示星期天)
第6列要运行的命令

接下来使用crontab命令设置计划任务crontab [-u user] file crontab [-u user] [ -e | -l | -r ]:

  • -u user:用来设定某个用户的crontab服务
  • file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab
  • -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件
  • -l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容
  • -r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件
  • -i:在删除用户的crontab文件时给确认提示

创建或编辑计划任务:

crontab -e

0-59 * * * * date >> /root/date.txt

查看计划任务:

crontab -l
0-59 * * * * date >> /root/date.txt

默认情况下,所有用户都可以设置自己的crontab,如果需要禁用某个用户使用此功能,可以将该用户名添加到/etc/cron.deny中。

标题:Linux例行任务管理
本文链接:https://blog.frognew.com/2014/12/linux-at-and-cron.html
转载请注明出处。

目录