我无法通过crontab运行此简单脚本,该脚本在我直接运行它的地方可以正常工作。我有一个类似的MySQL脚本,是从中复制的,只是将MySQL更改为apache2。但是原始的一个有效,但这一点无效。直接运行就可以了。
UP=$(pgrep apache2 | wc -l);
if [ "$UP" -eq 0 ];
then
sudo /usr/sbin/service apache2 restart
fi
crontab:
*/2 * * * * /var/server-scripts/mysqlStatus.sh > /dev/null 2>&1 // Works Perfect
*/2 * * * * /var/server-scripts/apacheStatus.sh > /dev/null 2>$1 // Doesn't work, script runs perfect directly
根据您发布的crontab,我猜您在两个脚本中使用的是同一用户?但是您的脚本不是首先以shabang开头,然后是它们必须是可执行的且可读的。
如果无法执行或无法执行它们,请更改作业以使用正确的解释器运行脚本...
*/2 * * * * sh /var/server-scripts/apacheStatus.sh > /dev/null 2>&1
嗯,通过我纠正为> /dev/null 2>$1
的> /dev/null 2>&1
(是错字?)解决了问题>
主题,更好地编写脚本:
#!/bin/sh
if [ $(pgrep -c apache2) -eq 0 ]
then
/usr/sbin/service apache2 restart
fi