Crontab 使用笔记

很不想搬运这篇内容,感觉没什么意义,但每次想要用的时候都要去搜,然后点几次链接才能找到想要的内容,所以还是抄一份放这里备用吧

为了便利的工作,Windows 下的计划任务倒是用得多点,而且配置项还算丰富,很多需求都能够得到满足,Linux 下 corntab 目前主要就做两件事情,一个是备份站点项目文件,一个是更新 DDNS 记录

命令与参数

 crontab [ -u user ] { -e | -l | -r }
 -u : user 指定用户,默认当前用户,用它指定用户需要 sudo 提权
 -e : edit 编辑任务
 -l : list 列出用户下的任务
 -r : remove 删除用户下的任务,我觉得有 -e 就够了

任务格式

这是搬运这文章的原因,每次都要想一下它这个时间设置是怎么个格式法,它简洁、灵活,但每次都用的时候都记忆模糊

*    *    *    *    *
- - - - -
| | | | |
| | | | +----- 星期中星期几 (0 |- 6) (星期天 为0)
| | | +---------- 月份 (1 - 12)
| | +--------------- 一个月中的第几天 (1 - 31)
| +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)

星号()是表示当前对应时间单位内里的每一个颗粒度,可以指定有效的时间点,也可以使用 – 号来选定范围,还可以使用 / 号来表示间隔,比如 “ */30 ” 可以表示每隔30分钟,当然它们也可以组合使用

使用方法

使用 crontab -e 来编辑当前用户的任务清单文件,在文件的最后面按上面的格式添加一条记录,保存退出即可(有些系统会调用 vim 有些会调用 nano)

先是按上面格式设置执行的时间,然后接运行的命令,一般是 bash + 脚本完整路径,比如:

#每30分钟跑一次DDNS的脚本
*/30 * * * * bash /home/usr/Config/DDNS-update.sh

 注意事项:不知道是因为环境变量还是其它什么原因,在当以 .sh脚本作执行动作时,最好在路径前加上 bash,我碰到过不加不运行的情况

其它可能需要知道的

守护进程: crond (Ubuntu 下名字是 cron.service) ,如果小概率发生任务未执行的情况,尝试用 systemctl 看下它还活没活

系统任务:我们编辑的是用户 任务,有系统任务,保存在 /etc/crontab ,不管它

主要文件:

  • /var/spool/cron/crontabs/ – 用户任务清单保存目录,以用户名命名
  • /etc/cron.allow – 允许使用crontab 的用户,一般没这个文件,按需要自己建议,里面填用户名就行,各占一行
  • /etc/cron.deny – 禁止使用crontab 的用户,一般 guest 用户是在列的
  • /etc/cron.daily – 一般是程序自动创建的任务,可能还有 cron.monthly / hourly 等,自行打 cron 后按 tab 键补全查看

参考:

本文是 居家服务器折腾笔记 的一部分

One thought on “Crontab 使用笔记”

Leave a Reply

Your email address will not be published. Required fields are marked *