Crontab 定时任务无法执行 service stop 或 systemctl top 命令

例如我写了一个脚本backup.sh,脚本内部包含有 service apache2 stopsystemctl start apache2rsyncmysqldump 等命令。手动执行 backup.sh 是能供正常执行里面的所有命令的,但使用定时任务 Crontab 执行脚本backup.shservicesystemctl,相关的这些命令均无法执行,其他命令例如 rsyncmysqldump 这些却都可以正常执行的奇怪问题。

最近偶尔查看了一下syslog日志发现我一直使用的备份脚本定时任务报错:CRON[44480]: (CRON) info (No MTA installed, discarding output)

可是定时备份却一直都能正常运行,这个脚本用了很长的时间,一直都没有注意日志的报错信息,因为无论是数据库,网站数据文件,都能正常的按照脚本命令进行备份,偶尔在今天才发现syslog日志这里的报错信息!

实际上我这几天折腾Lsyncd实时同步备份的时候就已经觉得有点怪怪的问题,因为我查看Lsyncd日志文件的时候,没有发现Lsyncd有停止与启动的日志记录。执行定时备份数据库与Rsync备份整站数据的时候,我先命令停止Lsyncd与apache2,再执行数据库与网站数据的备份。但是Lsyncd没有停止与启动的日志记录,难道这个问题不奇怪吗?明明是命令无法执行才会没有日志记录,所以最后终于发现确实是命令无法执行导致的。

解决方法:

Crontab定时任务执行的脚本里,需要停止的服务,必须写实际路径!

/etc/init.d/apache2 stop

即可正常执行。

知道即可,详细理由,以后有空再研究。

发表回复