当我从 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`