我正在编写一个脚本来启动和处理流浪汉机器内的进程。似乎每次脚本结束并且ssh会话结束时,后台进程也会结束。
这是我正在运行的命令:
vagrant ssh -c "cd /vagrant/src; nohup python hello.py > hello.out > 2>&1 &"
hello.py
实际上只是一个烧瓶开发服务器。如果我以交互方式登录ssh并手动运行nohup
命令,则在关闭会话后,服务器将继续运行。但是,如果我通过vagrant ssh -c
运行它,它几乎就像命令从未运行一样(即没有创建hello.out文件)。手动运行和通过vagrant ssh -c之间有什么区别,以及如何修复它以使其有效?
答案 0 :(得分:11)
我在尝试将Django应用程序作为守护程序运行时遇到了同样的问题。我不知道为什么,但为我增加一个“睡1”的作品。
vagrant ssh -c "nohup python manage.py runserver & sleep 1"
答案 1 :(得分:1)
在运行wireshark时,在ssh命令中运行nohup对我不起作用。这样做了:
nohup vagrant ssh -c "wireshark" &