Linux 漫游ssh-c并在连接关闭后保持后台进程运行

Linux 漫游ssh-c并在连接关闭后保持后台进程运行,linux,vagrant,Linux,Vagrant,我正在写一个脚本,在一台流浪机器中启动和后台处理一个进程。似乎每次脚本结束和ssh会话结束时,后台进程也会结束 下面是我正在运行的命令: vagrant ssh-c”cd/vagrant/src;nohup python hello.py>hello.out>2>&1&“ hello.py实际上只是一个flask开发服务器。如果我以交互方式登录到ssh并手动运行nohup命令,那么在我关闭会话后,服务器将继续运行。但是,如果我通过vagrant ssh-c运行它,几乎就好像该命令从未运行过一样(

我正在写一个脚本,在一台流浪机器中启动和后台处理一个进程。似乎每次脚本结束和ssh会话结束时,后台进程也会结束

下面是我正在运行的命令:

vagrant ssh-c”cd/vagrant/src;nohup python hello.py>hello.out>2>&1&“


hello.py
实际上只是一个flask开发服务器。如果我以交互方式登录到ssh并手动运行
nohup
命令,那么在我关闭会话后,服务器将继续运行。但是,如果我通过
vagrant ssh-c
运行它,几乎就好像该命令从未运行过一样(即没有创建hello.out文件)。手动运行和通过vagrant ssh-c运行之间有什么区别,以及如何修复它以使其正常工作?

在尝试将Django应用程序作为守护进程运行时,我遇到了同样的问题。我不知道为什么,但在后面加上“睡眠1”对我来说很有用

vagrant ssh -c "nohup python manage.py runserver & sleep 1"

运行wireshark时,在ssh命令中运行nohup对我来说不起作用。这确实:

nohup vagrant ssh -c "wireshark" &

我尝试了大量的解决方案,包括精心设计的stdout和stderr重定向,并提供/dev/null作为输入。这是我发现的唯一一个真正有效的。@SandyChapman我刚刚发现了这个。奇怪的是,还有什么选择呢?@cricket_007通常是当你为一些不理想的事情添加一个神奇的等待时。它会导致在不同系统上运行时容易被破坏的劣质代码。I.在这种情况下,可能需要在tmux会话中运行alternernative?不知道,必须尝试一些替代方法。在我使用pipenv的情况下:
vagrant ssh-c“pipenv运行nohup python./manage.py运行\u long\u备份--my arg&sleep 1;”
。他似乎成功了。我可以
流浪ssh;tail-f nohup.out
来观察命令的输出。不管它值多少钱,我一直在努力解决这个问题。然而,尽管这不是对你问题的直接回答,我发现JetBrains Webstorm为我解决了这个问题。它与Vagrant集成,允许我为在Vagrant框中运行的Bash或NodeJ设置运行配置。然后可以在WebStorm中停止和启动这些运行配置。太棒了。我一点也不明白,但这对我也很有用。实际上,我运行了
vagrant ssh-c“sudo-u otheruser-I一些script.sh”
,但无法让它继续运行。但我这边的诺胡普成功了。知道为什么会这样吗?我在没有
nohup
的情况下得到了相同的结果,最后使用了
——对于
vagrant ssh
没有tty
选项。