我知道这可能已经在早先的各种帖子中得到了回答,但我无法自己运行。
我有一个 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 文件应该做的,当我正常运行)。
谁能指导我哪里出错了?
最佳答案
我在使用以下 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
希望对您有所帮助!
关于linux - 使用 crontab 运行带参数的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23682517/