Cron 中的 Bash 脚本未在 Ubuntu 20.04.2 LTS 服务器上运行 Python 脚本

Cron 中的 Bash 脚本未在 Ubuntu 20.04.2 LTS 服务器上运行 Python 脚本

我有一个 Ubuntu 20.04.2 LTS 服务器,其中运行了一些 Python 脚本,我创建了一个cronjob运行 Bash 脚本来检查我的 Python 脚本是否正在运行。

脚本如下:

#!/bin/sh
#!/bin/python2.7


SERVICE="start_server.py"
if ps -ef | grep "$SERVICE" | grep -v grep >/dev/null
then
    echo "start_server.py is running" >> /home/ubuntu/mislaka/script_log.log
else
        python2.7 /home/ubuntu/mislaka/start_server.py &
    echo "start_server.py stopped" >> /home/ubuntu/mislaka/script_log.log
fi

这是cronjob配置:

* * * * * /home/ubuntu/mislaka/check_process.sh

检查log文件时,我可以看到它正在echo向文件添加命令,但并未启动 Python 脚本。如果我在外部运行脚本,它cronjob会按预期运行。

有任何想法吗?

答案1

bash 和 sh shell 之间存在一些差异。如果您使用 bash,则应使用:

#!/bin/bash

答案2

发现了我的问题所在。我没有在 else 语句下用一行写命令,而是用两行写:

echo "start_server.py stopped" >> /home/ubuntu/mislaka/script_log.log && python2.7 start_server.py &

这解决了我的问题。

相关内容