我正在通过 ssh 连接到使用 AFS 主目录的 Linux 集群。我正尝试使用 GNU screen 在分离的 screen 中运行一个长时间运行的程序。如果我保持登录状态,程序就会完美执行,包括写入文件。
我希望能够从 ssh 会话中注销,并让程序在分离的屏幕上运行。我尝试注销并通过 ssh 重新登录。但是,当我检查分离的屏幕时,我发现我的程序已崩溃,因为它没有写入文件的权限。
[local]me: ssh [email protected]
[remote]user: screen # this pops up a new screen
[remote]user: python get_data.py
然后我按 Ctrl-a d(分离屏幕)
[remote]user: logout
[local]me: ssh [email protected]
[local]me: screen
这是我在分离的屏幕上看到的:
Traceback (most recent call last):
File "get_data.py", line 430, in <module>
File "get_data.py", line 346, in produce_roof_patches
File "get_data.py", line 225, in save_patch
IOError: [Errno 13] Permission denied: '../data/training/labels.csv'
如果我不注销而只是分离(Ctrl-a d)并通过“屏幕”重新连接,那么程序将继续运行而不会出现任何问题。
我了解到这是因为注销时我的文件系统被卸载,并且程序没有权限写入我的文件系统的任何位置。有解决方法吗?
答案1
分离...如... <control>-<z> 然后bg
?或使用符号运行&
?这些不是分离的。这些是分叉进程。
可以使用nohup
命令启动分离进程,或者在tmux
会话或类似情况下运行。
如果您想了解更多信息,请随时询问。
答案2
使用绝对路径而不是相对路径来写入文件解决了我的问题。