首页 > 解决方案 > 无法使用 crontab 运行脚本

问题描述

我无法通过 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

标签: bashubuntucron

解决方案


根据您发布的 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

推荐阅读