我想在 debian linode 服务器上运行“screen”,通过 ssh 终端窗口启动。我想要一个 shell 脚本来启动和分离 screen ,以便在我注销时进程可以继续。我还希望生成日志文件 screenlog.0,以便在进程崩溃时有记录。
但是在写入日志文件时出现问题。在本地,在 Mac 终端窗口上,
% screen -dm -L sh -c 'echo hello'
工作正常,“hello”被写入 screenlog.0。但是在 ssh 窗口中向服务器发出的相同命令会执行,但不会写入任何内容。 但是,如果在该窗口中我进入 screen ,
% screen -L
然后做一些事情,事件被写入 screenlog.0(在服务器上)。
我错过了什么?
最佳答案
事实证明 screen() 命令可能有问题。上述命令不会向 'Debian GNU/Linux 9 (stretch)' 下的 screenlog.0 发送任何输出,而 'Ubuntu 14.04.1 LTS' 会向 screenlog.0 写入奇怪的消息:“错误:无法启动服务器!尝试以 root 身份运行!”,即使以 root 身份运行也是如此。 “Linux Mint 18.1”和 MacOSX 正确运行。
有人建议我使用古老的 unix 命令“nohup”来解决分离进程并记录其输出的问题,即使您关闭了 ssh 连接也是如此。通常,当您关闭终端窗口时,信号 SIGHUP 会发送到在那里启动的任何进程。但是
% nohup myprog > logfile.txt &
工作完美。老方法,好方法。
关于linux - screen 记录无法在 ssh 终端上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54621832/