我创建了一个 bash 文件,它在名为“cronscreen”的现有 screen 上执行 python 脚本。 bash 文件包含以下行:
screen -S cronscreen -X stuff "python test.py$(printf \\r)"
当我从命令行运行该文件时,它工作正常,当我附加“cronscreen”时,我看到输出被打印出来了。但是,我希望它在 cron 中运行,所以我按如下方式设置了 crontab:
* * * * * myuser /home/myuser/myscript.sh > /home/ec2-user/agg.log
cron 已执行,因为我可以看到文件 agg.log 每分钟重新生成一次,但是当我附加“cronscreen”时,我看不到那里打印任何输出(并且 agg.log 为空)。这是为什么?谢谢。
更新:
我也试过将脚本改成这个(重新连接 screen ),但没有改变:
screen -r cronscreen
screen -S cronscreen -X stuff "python test.py$(printf \\r)"
最佳答案
screen 需要一个 tty active 来创建一个 session ,这在 cron 下是不可用的。
您需要将它分成两部分,首先是运行 screen 并使其分离 - screen -dmS cronscreen 然后在您的 cronjob 中使用 -r cronscreen 附加到 screen session
关于linux 无法访问 crontab 上的 screen ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38848629/