我通过 bash 调用以下命令,但它根本没有创建屏幕会话:
screen -d -m time python3 myscript.py ; sleep 1
当我screen -r
这样做时,它说没有屏幕可以恢复。但是当我尝试时:
screen -d -m time python3; sleep 1
然后执行此操作时screen -r
会显示 Py 控制台。
我做错了什么?
答案1
screen -d -m time python3 myscript.py
python3 myscript.py
在屏幕会话内运行,然后退出。如果您稍后没有看到该屏幕会话,那是因为脚本已经退出。
看来你期望myscript.py
跑得更久。一定是出了什么问题。将输出(尤其是错误)重定向到文件以查看发生了什么。或者通过运行另一个程序来保持会话。
screen -d -m time sh -c 'python3 myscript.py; echo $?; sleep 999999999'
如果直接从屏幕运行该脚本时该脚本不起作用,但从交互式 shell 运行该脚本则有效,这很可能表明两件事:
myscript.py
依赖于某些设置,可能是环境变量。它不是独立的。- 您将此设置设置在错误的位置。您可能在 中设置了一个环境变量
.bashrc
,该变量只能由交互式 shell 读取。改为设置环境变量.profile
;当您登录时会读取此文件。