linux计划任务
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退出