linux - 使用 crontab 运行带参数的脚本

标签 linux bash shell sh cron

我知道这可能已经在早先的各种帖子中得到了回答,但我无法自己运行。

我有一个 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/

相关文章:

shell - 是否可以通过 gnu awk 命令使用变量而不是文件?

linux - 使用 "-fPIC"标志编译可执行文件(无共享库)

linux - 命令 ls -lt | 的含义 wc -l

ruby - 打印与特定十六进制值关联的 ASCII 字符

PHP 系统调用函数不能正确导出变量

linux - 在 unix/linux 中删除文件中最后一次出现的字符串

c++ - Eye of Gnome - 使用 shell 脚本在不同窗口打开两个图像

c++ - 对于 C++ 程序员来说,哪个是最好的 Linux 程序?

linux - 更高效地使用 VirtualBox?

java - glassfish 中的 Ojdbc14.jar - 找不到它