【发布时间】:2014-07-04 03:40:45
【问题描述】:
我知道这可能已经在各种帖子中早先得到了回答,但我无法自己运行。
我有一个 bash 脚本 (service.sh),我想每分钟运行一次。它需要传递一个参数(在本例中为 start)。
使用另一个脚本 (test.sh) 我正在为上述脚本安排 cron 表达式:
echo "* * * * * /opt/service.sh start" > /opt/cronForSecops
crontab /opt/cronForSecops
我可以通过使用 crontab -l 看到它被正确设置为:
* * * * * /opt/service.sh start
但是,service.sh 没有运行,并且我没有看到正在创建的日志/文件(service.sh 文件应该这样做,当我正常运行)。
谁能指导我哪里出错了?
【问题讨论】:
-
service.sh 有执行权限吗?是否为正确的用户配置了 crontab,该用户是否具有执行权限?
-
查看crontab tag wiki 了解调试步骤并报告您的发现
-
还要确保执行 crontab 作业的用户实际上有权运行 /opt 中的 bash 脚本。提示可能是在 /var/log/syslog 中查找权限被拒绝的错误,如果这不是您已经完成的操作,请参阅“..我没有看到正在创建的日志/文件..”。
-
除了其他人提到的内容之外,您可能还需要仔细检查脚本中的 PATH 变量。它可能无法找到您要求它运行的程序。最后,某些版本的 cron 有一个错误,如果最后一个条目不以换行符结尾,它会被忽略。确保在 crontab 末尾添加一个额外的换行符以确保安全。
-
service.sh 具有权限,并且正在为同一用户(非 root)配置 crontab。我可以使用同一个用户运行 service.sh。
标签: linux bash shell sh crontab