Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用crontab运行带有参数的脚本_Linux_Bash_Shell_Sh_Crontab - Fatal编程技术网

Linux 使用crontab运行带有参数的脚本

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,我可以看出这被正确设置为: * * * * *

我知道这可能已经在之前的各种帖子中得到了回答,但我自己还没能做到这一点

我有一个bash脚本(service.sh),我想每分钟运行一次。它需要传递一个参数(从本例开始)

我正在使用另一个脚本(test.sh)为上述脚本调度cron表达式:

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
的参数吗?