作为全新小白突然接触crontab这个工具,难免触及一些Linux基本规则的雷区,这里将自身经验顺带记录,留作他人日后借鉴。
周边命令
做任务计划,不是写好任务指令就完成了,还要注意以下一些事项:
1、每次修改完crontab任务计划命令后执行以下命令
systemctl reload crond
systemctl restart crond
2、给文件增加可执行权限
chmod +x ./cron.sh
3、脚本规范-在脚本开头写入
#!/bin/bash
4、绝对路径:由某些软件支持的命令,需要写完整路径调用,比如我平时使用的
downloadcsv intodb /opt/downloadcsv/export/xiaoneng_sxd/xiaoneng_sxd.csv 数据库密码
需要修改为
/opt/downloadcsv/downloadcsv intodb /opt/downloadcsv/export/xiaoneng_sxd/xiaoneng_sxd.csv 数据库密码
5、权限问题
如下,只需新建.sh文件,并在其中,依据执行计划需求按格式逐行输入执行时间,执行用户,执行命令即可
比较关键的问题是,这个.sh文件必须授予执行权限,可以采用下面的命令进行授权:
chmod +x ./cron.sh
另外,如果command语句中涉及到日志文件的写入,该日志文件要提前建好,还要进行写入授权,以免出错。
crontab命令与语法
我们权且将crontab命令分位两类:
一类是crontab任务计划本身的命令,另一类是crontab工具的操作指令。
1、crontab任务计划指令语法
图片来自网络-侵删
在以上各个字段中,还可以使用以下特殊字符:
“*”代表所有的取值范围内的数字,如月份字段为*,则表示1到12个月;
“/”代表每一定时间间隔的意思,如分钟字段为*/10,表示每10分钟执行1次。
“-“代表从某个区间范围,是闭区间。如“2-5”表示“2,3,4,5”,小时字段中0-23/2表示在0~23点范围内每2个小时执行一次。
“,”分散的数字(不一定连续),如1,2,3,4,7,9。
注:由于各个地方每周第一天不一样,因此Sunday=0(第一天)或Sunday=7(最后1天)。
2、任务计划命令语法示例:
通过crontab -e 呼出crontab任务计划编辑页面(也有另一种方法,直接vi /etc/crontab文件进行编辑<这种是作为系统任务运行>),然后在弹出的编辑页面输入下列命令
* */1 * * * root /opt/downloadcsv/downloadcsv/cron.sh
# 强烈建议把用户(root)加上,否则可能执行过程中会出现没有权限无法执行的情况。
上述命令表示每隔1小时,以root身份执行sh命令文件
crontab工具的操作指令
crontab [-u user] file
crontab [ -u user ] [ -i ] { -e | -l | -r }
- • -u user:用于设定某个用户的crontab服务;
- • file: file为命令文件名,表示将file作为crontab的任务列表文件并载入crontab;
- • -e:编辑某个用户的crontab文件内容,如不指定用户则表示当前用户;
- • -l:显示某个用户的crontab文件内容,如不指定用户则表示当前用户;
- • -r:从/var/spool/cron目录中删除某个用户的crontab文件。
- • -i:在删除用户的crontab文件时给确认提示。