我这样设置Crontab计划任务可以吗?
[root@iZ94r80gdghZ tanteng]# crontab -l
# 系统计划任务
* */1 * * * service mariadb restart >> /home/tanteng/crontab.log
* * */1 * * service php70-php-fpm restart >> /home/tanteng/crontab.log
我是直接把命令语句放在定时任务的后面可以吗,这些命令在本机是可以运行的,同时把输出记录到log日志,可是log日志没有任何内容,也不知道这个计划任务生效没有,这样写对不对?
回复内容:
我设置了两条计划任务,都是定时重启服务,如下:
[root@iZ94r80gdghZ tanteng]# crontab -l
# 系统计划任务
* */1 * * * service mariadb restart >> /home/tanteng/crontab.log
* * */1 * * service php70-php-fpm restart >> /home/tanteng/crontab.log
我是直接把命令语句放在定时任务的后面可以吗,这些命令在本机是可以运行的,同时把输出记录到log日志,可是log日志没有任何内容,也不知道这个计划任务生效没有,这样写对不对?
两个地方你需要注意的
1 service命令是否在crontab中可以访问
2 通过restart的方式,应用产生的日志真的可以记录到指定的文件吗
第1个问题可以查看/var/log/messages
和/var/spool/mails/username
日志判断
第2个问题很好解决,直接命令行service mariadb restart > ~/mariadb.log
,然后连接数据库,做查询(产生日志),然后查看这个文件,但其实我猜应该是没有的。
LS说的基本上很全面了
crontab中,通用或者你不确定的时候,命令直接包装成一个可执行文件,然后直接crontab 可执行文件就可以了
service命令操作的话,一般mariadb之类的回去找配置文件的,所以实际db的log输出会在配置文件指定的位置
service xxx restart >> xxx.log ,这个里面xxx.log只是输出是否启动成功之类的很短的信息
查看crontab日志,看它是否已经执行
星/1 这种写法 多此一举,写星
1、通过查看 crontab 日志,看这个两条命令是否执行,(执行不一定成功)
2、简单判断,通过进程的 pid 判断,是否执行成功,都是 restart 命令,平滑重启之后,pid 是会改变的
1L基本上都说到了。
我也说几点:
1.直接先测试命令,看是否能使用,例如你上面的:service mariadb restart >> /home/tanteng/crontab.log
2.把命令调到 * * * * * 每分钟先做一个测试,可以的话,再修改命令。
在crontab中使用全路径执行命令
* */1 * * * /user/lib/user/bin/service mariadb restart >> /home/tanteng/crontab.log
* * */1 * * /user/lib/user/bin/service php70-php-fpm restart >> /home/tanteng/crontab.log