Linux下如何正确配置crontab并执行 linuxcrontabshell
程序员文章站
2022-07-14 15:06:54
...
【1/6】查看crontab配置要求
# more /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# 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
【2/6】查看crontab服务是否启动
# service crond status
Redirecting to /bin/systemctl status crond.service
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2020-07-12 10:48:33 CST; 10min ago
Main PID: 156058 (crond)
CGroup: /system.slice/crond.service
└─156058 /usr/sbin/crond -n
Jul 12 10:48:33 localhost.localdomain systemd[1]: Started Command Scheduler.
Jul 12 10:48:33 localhost.localdomain crond[156058]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 7% if used.)
Jul 12 10:48:33 localhost.localdomain crond[156058]: (CRON) INFO (running with inotify support)
Jul 12 10:48:33 localhost.localdomain crond[156058]: (CRON) INFO (@reboot jobs will be run at computer's startup.)
【3/6】查看用户要执行的crontab命令或者脚本
# ll /var/spool/cron/
total 4
-rw-------. 1 root root 94 Jul 12 00:19 root
【4/6】查看某个具体用户下要执行的crontab命令或者脚本
# more /var/spool/cron/root
# 定时对Nginx日志切割,按天轮转日志
59 23 * * * /root/can_do/rotateLog4Nginx.sh
或者
# crontab -l
# 定时对Nginx日志切割,按天轮转日志
59 23 * * * /root/can_do/rotateLog4Nginx.sh
【5/6】重启下crontab服务
# service crond restart
Redirecting to /bin/systemctl restart crond.service
【6/6】查看执行失败日志
# more /var/spool/mail/root
【小结】
1> 先通过当前用户执行下命令或者脚本是否ok,
2> crontab是按用户执行的,如果非root需要切到当前用户下执行;建议按root加crontab。
3> 加入要执行的crontab命令或者脚本,重启下crontab服务,servcie crond restart。
4> 注意因为要执行的crontab脚本本身失败引起的问题,比如命令需要交互,mv,copy等,建议强制覆盖或者保证可执行成功。
【温馨提示】
如果您觉得满意,可以选择支持下,您的支持是我最大的动力:
# more /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# 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
【2/6】查看crontab服务是否启动
# service crond status
Redirecting to /bin/systemctl status crond.service
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2020-07-12 10:48:33 CST; 10min ago
Main PID: 156058 (crond)
CGroup: /system.slice/crond.service
└─156058 /usr/sbin/crond -n
Jul 12 10:48:33 localhost.localdomain systemd[1]: Started Command Scheduler.
Jul 12 10:48:33 localhost.localdomain crond[156058]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 7% if used.)
Jul 12 10:48:33 localhost.localdomain crond[156058]: (CRON) INFO (running with inotify support)
Jul 12 10:48:33 localhost.localdomain crond[156058]: (CRON) INFO (@reboot jobs will be run at computer's startup.)
【3/6】查看用户要执行的crontab命令或者脚本
# ll /var/spool/cron/
total 4
-rw-------. 1 root root 94 Jul 12 00:19 root
【4/6】查看某个具体用户下要执行的crontab命令或者脚本
# more /var/spool/cron/root
# 定时对Nginx日志切割,按天轮转日志
59 23 * * * /root/can_do/rotateLog4Nginx.sh
或者
# crontab -l
# 定时对Nginx日志切割,按天轮转日志
59 23 * * * /root/can_do/rotateLog4Nginx.sh
【5/6】重启下crontab服务
# service crond restart
Redirecting to /bin/systemctl restart crond.service
【6/6】查看执行失败日志
# more /var/spool/mail/root
【小结】
1> 先通过当前用户执行下命令或者脚本是否ok,
2> crontab是按用户执行的,如果非root需要切到当前用户下执行;建议按root加crontab。
3> 加入要执行的crontab命令或者脚本,重启下crontab服务,servcie crond restart。
4> 注意因为要执行的crontab脚本本身失败引起的问题,比如命令需要交互,mv,copy等,建议强制覆盖或者保证可执行成功。
【温馨提示】
如果您觉得满意,可以选择支持下,您的支持是我最大的动力: