我通过ssh连接到另一台服务器并运行一个shell脚本,命令如下:
我如何正常退出而不会卡住呢?
谢谢。
nohup ./script.sh 1>/dev/null 2>&1 &
然后输入exit以退出该服务器。但是它卡住了。该服务器是Solaris系统。我如何正常退出而不会卡住呢?
谢谢。
我猜想这个脚本是一个长时间运行的。在这种情况下,当您终止ssh会话时,您需要将该进程与要关闭的终端分离。
实际上,您已经通过重新分配stdout
和stderr
到/dev/null
完成了大部分工作,但是您没有为stdin
做到这一点。
我使用了以下测试案例:
ssh localhost
nohup sleep 10m &> /dev/null &
^D
# hangs
虽然
ssh localhost
nohup sleep 10m &> /dev/null < /dev/null &
^D
# exits
我赞同使用出色的gnu screen
,它可以为您提供此服务以及其他服务。
哦,你有没有考虑直接运行脚本而不是在shell中运行?例如:
ssh user@host script.sh
~.
这个命令关闭ssh会话。
screen
并学会分离屏幕。这比留下后台进程要好得多;它还可以让您重新连接并查看进程的运行情况。script.sh
,我认为我们无法确定命令挂起的原因。sh -c ./script.sh &