Linux例行任务管理
2014-12-22
Linux的例行任务包含两种:一种是需要周期执行的任务其命令为cron;另外一种是在某个特定时间执行一次的任务,其命令为at。
使用at在特定时间执行一次任务 #
当前时间后多长时间执行一次任务:
1# at now + 3 minutes
2at> echo hello > hello.txt
3at> <EOT>
4job 1 at Mon Dec 22 18:29:00 2014
<EOT>
是输入组合键CTL+D
指定在某个特定的时间执行一次任务:
1# at 19:00 2014-12-22
2at> echo hello > hello.txt
3at> <EOT>
4job 1 at Mon Dec 22 19:00:00 2014
查看任务队列:
1atq
21 Mon Dec 22 18:29:00 2014 a root
删除任务atrm <任务编号>
:
1atrm 1
默认情况下,所有用户都可以使用at命令来调度自己的任务,如果需要禁用某个用户使用此功能,可以将该用户名添加到/etc/at.deny中。
使用crontab周期性执行任务 #
要使用crontab需要保证crond进程正在运行:
1systemctl status crond
2● crond.service - Command Scheduler
3 Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
4 Active: active (running)
如果没有运行需要启动此进程:
1systemctl start crond
2systemctl enable crond
在使用crontab之前先来熟悉一下cron的语法:
1分 时 日 月 星期 要运行的命令
2第1列分钟0~59
3第2列小时0~23(0表示子夜)
4第3列日1~31
5第4列月1~12
6第5列星期0~7(0和7表示星期天)
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文件时给确认提示
创建或编辑计划任务:
1crontab -e
2
30-59 * * * * date >> /root/date.txt
查看计划任务:
1crontab -l
20-59 * * * * date >> /root/date.txt
默认情况下,所有用户都可以设置自己的crontab,如果需要禁用某个用户使用此功能,可以将该用户名添加到/etc/cron.deny中。