【问题标题】:crontab job does not work as expected, but called manually workscrontab 作业未按预期工作,但调用手动工作
【发布时间】:2018-08-21 16:15:41
【问题描述】:

我的 crontab 工作有问题。我正在调用一个 bash 脚本,它启动两个与一个应用程序交互的 python 脚本(两者都不会终止)。

@reboot /bin/sh /home/user/path/to/bash_script/foo.sh

在我的 foo.sh 文件中,我调用了两个 python 脚本。

#!/bin/bash
cd /usr/bin/ &
python /home/user/path/to/python_script1/bar.py & 
python /home/user/path/to/python_script2/baz.py &

在每次启动时,我都可以通过执行来检查 bar 和 baz 是否正在运行

ps aux | grep python

但是当我打开应用程序时,第二个 python 脚本(baz)没有按预期工作

如果我手动调用 foo.sh,应用程序上的一切都会按预期工作

我尝试了几种方法,例如在 crontab 上调用 python 脚本,但结果都是一样的。

你有什么想法/建议吗?

谢谢

【问题讨论】:

    标签: python bash unix cron


    【解决方案1】:

    当你这样做时:

    cd /usr/bin/ &
    

    您将命令发送到后台,即生成一个子 shell 并在其中运行 cd,原始 shell 的当前工作目录保持原样。

    假设您的 Python 脚本中有一些依赖于 /use/bin/ 中可执行文件的相对路径的内容,请删除 &

    cd /usr/bin/
    

    【讨论】:

    • 感谢 heemayl!我试过你的建议,但没有成功。我的第二个脚本没有启动...#!/bin/bash cd /usr/bin/ python /home/user/path/to/python_script1/bar.py & python /home/user/path/to/python_script2/baz.py &
    • @FAM 我认为这是一个不同的问题。您应该查看错误。应该通过删除我在回答中提到的子shell调用来解决原始问题。
    猜你喜欢
    • 2016-02-21
    • 1970-01-01
    • 2018-09-27
    • 1970-01-01
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多