crontab 误区

时间:2022-07-14 04:45:05

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
该 文件下的前四行内容为crontab的环境变量,SHELL变量的值指定系统使用的SHELL环境(该样例为bash shell),PATH变量定义了执行命令的路径。Cron的输出以电子邮件的形式发给MAILTO变量定义的用户名。如果MAILTO变量定义为空字符 串(MAILTO=""),电子邮件不会被发送。执行命令或脚本时HOME变量可用来设置基目录。
注:以上系统会默认可以不用修改任何!

在root用户下,可以直接vim /etc/crontab文件进行脚本的添加定时任务脚本,而在其他普通用户下可以通过crontab –e 进行脚本的添加

编辑完成,可以用crontab –l进行查看脚本信息

定时命令脚本解析:
从表格中可以看出脚本格式如下:
minute hour day month week user-name command
minute---分钟 (0-59)
  hour------小时(0-23)
  day--------日期(1-31)
  month---月份(1-12)
  week----星期(0-6) //0代表星期天
  除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"*/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。以下举几个例子说明问题:

crontab -u howhy -e

* 3-6 * * * /bin/bash /opt/local/nginx/sbin/nginx -s reload 这个错误的表示零晨3点到6点每分钟都重启nginx

要表示零晨3点到6点每整点执行重启nginx 最小单位即分就为00

要求:

1.要有注释

2.要先进行测试

3.有标准输出时不要有>/dev/null 2>&1若没有则可以加

4.一般要用绝对路径

5.目录文件要存在

每小时打包,包的文件名要精确到小时 tar zcf /opt/service_$(date +%F-%H).tar.gz /etc/services 要不会覆盖原来打包的文件 每天备份可以精确到到tar zcf /opt/service_$(date +%F).tar.gz /etc/services

crontab -e

00 */2 * * * /bin/sh /server/scripts/tar.sh >/dev/null 2>&1 每两个小时执行tar.sh 注意分

00 */2 * * * tar zcf /opt/service_$(date +\%F-\%H).tar.gz /etc/services

若脚本中引用了环境变量则需要在该脚本中重新定义引用的环境变量