Linux 使用crontab运行带有参数的脚本
我知道这可能已经在之前的各种帖子中得到了回答,但我自己还没能做到这一点 我有一个bash脚本(service.sh),我想每分钟运行一次。它需要传递一个参数(从本例开始) 我正在使用另一个脚本(test.sh)为上述脚本调度cron表达式:Linux 使用crontab运行带有参数的脚本,linux,bash,shell,sh,crontab,Linux,Bash,Shell,Sh,Crontab,我知道这可能已经在之前的各种帖子中得到了回答,但我自己还没能做到这一点 我有一个bash脚本(service.sh),我想每分钟运行一次。它需要传递一个参数(从本例开始) 我正在使用另一个脚本(test.sh)为上述脚本调度cron表达式: echo "* * * * * /opt/service.sh start" > /opt/cronForSecops crontab /opt/cronForSecops 通过使用crontab-l,我可以看出这被正确设置为: * * * * *
echo "* * * * * /opt/service.sh start" > /opt/cronForSecops
crontab /opt/cronForSecops
通过使用crontab-l,我可以看出这被正确设置为:
* * * * * /opt/service.sh start
但是,service.sh没有运行,我没有看到创建任何日志/文件(当我正常运行service.sh文件时,它应该这样做)
有人能告诉我哪里出了问题吗?尝试创建一个名为
/opt/start service.sh的简单包装脚本,内容如下:
#!/bin/sh
/opt/service.sh start
确保它是可执行的,然后使用
* * * * * /opt/start-service.sh
作为crontab条目我遇到了与使用以下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
希望有帮助 service.sh是否具有执行权限?crontab是否为正确的用户配置,以及该用户是否具有执行权限?请查看以获取调试步骤并使用查找结果报告。因此,请确保具有crontab作业的用户实际具有运行/opt中的bash脚本的权限。一个技巧可能是在/var/log/syslog中查找权限被拒绝的ish错误,如果这不是您已经做过的,请参考“.并且我看不到正在创建任何日志/文件…”。除其他人提到的内容外,您可能还需要在脚本中仔细检查PATH变量。它可能无法找到您要求它运行的程序。最后,cron的一些版本有一个bug,如果最后一个条目没有以换行符结尾,它就会被忽略。确保在crontab的末尾添加一个额外的换行符,以确保.service.sh具有权限,并且crontab是为同一用户(非root用户)配置的。我可以使用同一用户运行service.sh。这将如何解决问题?@GigaWatt的问题不是忽略service.sh
的参数吗?