Skip to main content
 首页 » 编程设计

python之BASH之crontab 始终运行,除了 python 脚本

2023年11月22日54mate10pro

当我从 shell/var/tmp/server_always_alive.sh 手动运行此脚本时没有问题。但是当我让它与 crontab 一起运行时,即使所有的逻辑都是正确的,它也不会运行。

如何让 python server.py 通过这个 crontab 运行?

sun@sun-Inspiron-One-2320:~$ uname -a 
Linux sun-Inspiron-One-2320 3.5.0-17-generic #28-Ubuntu SMP Tue Oct 9 19:31:23 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux 

/var/tmp/server_always_alive.sh:

#!/bin/bash 
echo "test 1" 
echo "test 2" 
# 58888 TCP port is server port of server.py, if its not running server.py has to execute auto 
main=$(export DISPLAY=:0.0 && lsof -i tcp:58888 | grep LISTEN | awk '{print $2}') 
if [ -z "$main" ]; then 
        export DISPLAY=:0.0 && python /var/tmp/python/server.py & 
        sleep 2 
        break 
fi 
echo "test 3" 
echo "all runs except python server.py" 

定时任务:

* * * * * /var/tmp/server_always_alive.sh & 

请您参考如下方法:

DISPLAY=:0.0 表示您的 python“服务器”正在连接到 X 服务器。为什么?

Cron 将没有必要的 X“cookie”。 ,并且几乎肯定不会以与 X 服务器相同的用户身份运行。

编辑:我会相信您以正确的用户身份运行。

编辑:如果您真的需要从 cron 运行图形程序,请尝试

xhost +si:localuser:`whoami`