我想使用 ssh 在“屏幕会话”下向服务器发送一个命令并永远运行!
所以我用的是类似
ssh -t root@server screen -S myinf "python infinit1.py &"
其中 infinit1.py 是脚本。问题是“python infinit1.py”没有进入背景,也没有创建名为“myinf”的屏幕。
我很感谢您的提示。
答案1
这是因为您调用的屏幕需要 pty 才能运行。您需要以分离模式启动屏幕:
ssh root@server screen -d -m -S myinf python infinit1.py
答案2
做这个
ssh -t root@server "nohup bash -c '( ( /usr/bin/python infinit1.py &> /dev/null ) & )'"
这是因为打开的 tty 需要关闭,因此无法保持命令运行。要查看输出,请将 /dev/null 更改为实际文件名。
我还没有尝试使用远程屏幕,所以我省略了它。您也许可以让它工作,但语法可能有点不对。
答案3
您不需要引号或 & 符号。使用 -d -m 选项以分离模式启动屏幕。查看手册页以获取更多信息。
一个有效的命令行示例是:
ssh $host screen -S myinf -d -m tail -F /var/log/dmesg