我有一个 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 &
这解决了我的问题。