linux下实现计划任务常见的有两种:at和crontab。这种两种最大的区别在于at是一次性完成任务,而crontab是循环完成任务的; 它们都是系统内置的操作命令。

第一部分:crontab使用


相关文件:

 /etc/cron.deny默认不存在,可以自己创建。把用户加进文件里面,这个文件就没有制定计划任务的权限

 /etc/cron.allow默认也不存在,不够默认情况下所以的用户都是属于这个文件里面的.它和deny,两个文件同时存在时 cron.allow优先

 /var/spool/cron用户制定了计划任务后,就会在这个目录下创建相应的文件夹,里面保存相应的任务

 /etc/crontab系统默认每分钟都回去扫描下这个文件夹,并执行里面的计划任务

命令格式:crontab [-u username] [-l] [-e] [-r]

选项说明:
-e 编辑当前用户的crontab文件,或者当一个crontab文件不存在时,创建一个crontab 文件。编辑并保存后文件被当前用户的crontab安装。
-l 列出当前crontab文件内容。
-r 删除当前用户的crontab文件。
-u username 指定用户名。

新增调度任务
新增调度任务可用两种方法:
1、在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。
2、 直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。

计划任务编写

它的格式共分为六段,前五段为时间设定段,第六段为所要执行的命令段(也可以是一个有执行权限的脚本),
格式如下:* * * * * <command | shell script>
其时间段的含义如表二: 段 含义 取值范围
第一段 代表分钟 0—59 
第二段 代表小时 0—23 
第三段 代表日期 1—31 
第四段 代表月份 1—12 
第五段 代表星期几,0代表星期日 0—6 


除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"*/5"表示每 5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。

例如你想在每年的3月7号到23号早上8点和下午1点执行一个test.sh脚本

* 8,13  7-23   3  *   test.sh

当然我们也可以到/etc/crontab下直接编辑添加我们的计划任务。

第二部分:at的使用

at也有自己的限制和允许文件/etc/at.allow、/etc/at.deny

at有两种执行方式:直接输入命令、执行某个脚本文件(-f指定)

执行test.sh脚本的代码:

at -f test.sh  now + 2 minutes


自己输入代码:

at now+2 minutes

>echo "hello!" >> /test

ctrl+D退出