gpt4 book ai didi

python - crontab 如果尚未运行则运行 python 文件

转载 作者:太空狗 更新时间:2023-10-30 00:54:14 24 4
gpt4 key购买 nike

我想通过 crontab 执行我的 python 文件,只有当它关闭或没有运行时。我尝试在 cron 选项卡中添加以下条目,但它不起作用

24 07 * * * pgrep -f test.py || nohup python /home/dp/script/test.py & > /var/tmp/test.out
如果我运行 pgrep -f test.py ||

test.py 工作正常nohup python/home/dp/script/test.py & >/var/tmp/test.out 手动,如果我删除 pgrep -f test.py || 它也可以在 crontab 中工作从我的 crontab 中保留 24 07 * * * nohup python/home/dp/script/test.py & >/var/tmp/test.out

如果我添加 pgrep -f,知道为什么 crontab 不工作吗?有没有其他方法我可以只运行一次 test.py 以避免 test.py 的多个运行进程?谢谢,迪帕克

最佳答案

当从 cron 运行时,pgrep -f 将自己列为错误匹配

我用运行无限循环的 script.py 进行了测试。然后

pgrep -f script.py

...从终端,给 一个 pid,13132,同时从 cron 运行:

pgrep -f script.py > /path/to/out.txt

输出 两个 pid,1313213635

因此我们可以得出结论,当从 cron 运行时,命令 pgrep -f script.py 将自身列为匹配项。不确定如何以及为什么,但这很可能是由于 cron 使用一组非常有限的环境变量(HOME、LOGNAME 和 SHELL)运行这一事实间接引起的。

解决方案

从(包装器)脚本运行 pgrep -f 会使命令列出自身,即使从 cron 运行也是如此。随后,从 cron 运行包装器:

#!/bin/bash

if ! pgrep -f 'test.py'
then
nohup python /home/dp/script/test.py & > /var/tmp/test.out
# run the test, remove the two lines below afterwards
else
echo "running" > ~/out_test.txt
fi

关于python - crontab 如果尚未运行则运行 python 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39485918/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com