我知道这可能在之前的各个帖子中得到了回答,但我自己也无法做到这一点。
我有一个bash脚本(service.sh)我想每分钟运行一次。它需要传递一个参数(在这种情况下, start )。
使用另一个脚本(test.sh)我正在安排上述脚本的cron表达式:
echo "* * * * * /opt/service.sh start" > /opt/cronForSecops
crontab /opt/cronForSecops
我可以通过使用 crontab -l </ em>看到这被正确设置为:
* * * * * /opt/service.sh start
但是, service.sh 没有运行,我看到没有创建日志/文件( service.sh 文件应该这样做,当我正常运行。)
有人可以指导我出错的地方吗?
答案 0 :(得分:1)
尝试使用以下内容创建名为/opt/start-service.sh
的简单包装脚本:
#!/bin/sh
/opt/service.sh start
并确保它是可执行的,然后使用
* * * * * /opt/start-service.sh
作为crontab条目
答案 1 :(得分:1)
我在使用以下crontab时遇到了同样的问题:
0 23 * * * sudo -u myname /home/myname/bin/buildme.sh -f >> /home/myname/log.txt
在bash脚本中,我使用它来获取-f选项:
while getopts ":f" opt; do
case $opt in
f)
force_full=1
;;
\?)
echo "Invalid option: -$OPTARG" >&2
;;
esac
done
因此,我注意到由于某种原因,当我通过cron进行操作时,该选项没有得到兑现。好吧,将/ bin / bash添加到cronjob可以将其正确修复。新的crontab是:
0 23 * * * sudo -u myname /bin/bash /home/myname/bin/buildme.sh -f >> /home/myname/log.txt
希望有帮助!