笔记整理 - crontab

Crontab 格式说明

安装

$ yum install crontabs

$ /sbin/service crond start   // 启动服务
$ /sbin/service crond stop    // 关闭服务
$ /sbin/service crond restart // 重启服务
$ /sbin/service crond reload  // 重新载入配置
$ /sbin/service crond status

开机自动启动:

chkconfig –level 35 crond on

crontab 命令

功能说明:设置计时器。

crontab [-u <用户名称>][配置文件]
crontab [-u <用户名称>][-elr]

cron 是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使 用计时器的功能。

参数:

  • -e  编辑该用户的计时器设置。
  • -l  列出该用户的计时器设置。
  • -r  删除该用户的计时器设置。
  • -u<用户名称>  指定要设定计时器的用户名称。

crontab 格式

基本格式 :

* *  *  *  *  command
分 时 日 月 周  命令
  • 第 1 列表示分钟 1~59 每分钟用 * 或者 */1 表示
  • 第 2 列表示小时 1~23(0 表示 0 点)
  • 第 3 列表示日期 1~31
  • 第 4 列表示月份 1~12
  • 第 5 列标识号星期 0~6(0 表示星期天)
  • 第 6 列要运行的命令
# Use the hash sign to prefix a comment
# +—————- minute (0 – 59)
# | +————- hour (0 – 23)
# | | +———- day of month (1 – 31)
# | | | +——- month (1 – 12)
# | | | | +—- day of week (0 – 7) (Sunday=0 or 7)
# | | | | |
# * * * * * command to be executed

在以上各个字段中,还可以使用以下特殊字符:

  • 星号(*):所有值,例如 month 列是星号时,则表示每月都执行该命令
  • 逗号(,):用逗号隔开的值指定一个列表范围,例如 1,2,5,7,8,9
  • 中杠(-):用整数之间的中杠表示一个整数范围,例如 2-6 表示 2,3,4,5,6
  • 正斜线(/):用正斜线指定时间的间隔频率,例如 0-23/2 表示每两小时执行一次;*/10,minute 列,则表示每十分钟执行一次。

示例

30 21 * * * /etc/init.d/nginx restart
# 每晚的 21:30 重启 nginx

45 4 1,10,22 * * /etc/init.d/nginx restart
# 每月 1、10、22 日的 4 : 45 重启 nginx

10 1 * * 6,0 /etc/init.d/nginx restart
# 每周六、周日的 1:10 重启 nginx。

0,30 18-23 * * * /etc/init.d/nginx restart
# 每天 18:00 至 23:00 之间每隔 30 分钟重启 nginx。

0 23 * * 6 /etc/init.d/nginx restart
# 每星期六的 11 : 00 pm 重启 nginx。

* */1 * * * /etc/init.d/nginx restart
# 每一小时重启 nginx

*/1 * * * * (加可执行脚本)
# 每分钟执行

*:10 * * * * (加可执行脚本)
# 每 10 秒执行

填坑

用户环境变量

手工执行写好的脚本怎么操作都执行成功,但放在 crontab job 中,就报错各种命令找不到。

报错的本质其实就是根据 crontab 根据自己知道的环境变量路径(PATH),穷尽遍历后找不到脚本中使用的命令。

解决方案:

  1. 养成手工安装服务的启动命令统一放在 /usr/local/bin 文件夹下的习惯,并补充到环境变量中
$ vim ~/.bash_profile 或 ~/.zshrc

export PATH=$PATH:/usr/local/bin
  1. 在 crontab job 中执行的脚本中,显式的导入已配置好的环境上下文变量
# crontab job script

test -f ~/.bash_profile && source ~/.bash_profile

...

其实就是 crontab 执行脚本的环境上下文与用户登录状态的上下文环境变量是不同的;

把登录时导入的变量/别名/函数在 crontab 任务脚本中引用,那么手工可以执行成功,定时任务也应该成功。

建议脚本执行结果重定向到日志文件,方便调试。

百分号 (%)

man crontab 里有这么一段

Percent-signs (%) in the command,
unless escaped with backslash (), will be changed into newline charac-
ters, and all data after the first % will be sent to the command as
standard input

命令列百分号 (%) 被赋予了特殊含义, 会被看做是换行符,而且其后面的内容被当做命令的标准输入,想正常使用百分号 (%) 的功能,需要使用转义符 ()

# crontab@jyzx.conf
*/1 * * * * cd /opt/scripts/ && bash command-tools.sh monitor >> processes_monitor_$(date '+\%Y\%m\%d').log 2>&1

premature EOF

车祸现场

$ crontab crontab\@jyzx.conf
"crontab@jyzx.conf":3: premature EOF
errors in crontab file, can't install.

conf 配置文档中结尾需要添加一空行;

需要再学习的是在 vim 编辑状态时看不出区别,但 cat 出来就会看到效果。

$ crontab\@jyzx.conf
crontab job script $ 下面要输入命令的锚点没有换行

$ crontab\@jyzx.conf
crontab job script
$ 常规换行的效果

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,149评论 2 34
  • 前一天学习了 at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron (cro...
    Zcclucky阅读 574评论 0 0
  • Linux定时任务Crontab命令详解 linux 系统则是由 cron (crond) 这个系统服务来控制的。...
    孙燕超阅读 1,815评论 0 4
  • 1.安装cron yum install vixie-cron yum install crontabs vixi...
    Broom阅读 1,246评论 0 1
  • 班级情况: 校区:科学创想乐高机器人和平校区 ...
    bong撒卡啦卡阅读 3,420评论 0 0