当我在shell中使用命令时,进程停止

时间:2014-01-08 11:42:57

标签: linux shell unix ssh

当我在shell中使用follow命令时,进程将停止,为什么?

ssh 127.0.0.1 "sleep 10"&

[1]+  Stopped                 ssh 127.0.0.1 "sleep 10"

ps的结果是

zh     24495  0.0  0.0 18816 2364 pts/1    T    19:35   0:00 ssh 127.0.0.1 sleep 10

3 个答案:

答案 0 :(得分:0)

“&安培;”在您执行的命令末尾告诉shell在后台运行此命令。如果在执行命令后执行“fg”命令,则命令将被置于前台。

同时检查 ctrl + z bg 命令。

答案 1 :(得分:0)

后台进程,当尝试访问控制tty进行输入或输出时会自动暂停。信号是SIGTTIN和SIGTOUT。该过程的默认行为是在收到这些信号时自行停止。

答案 2 :(得分:0)

如果它持续超过10秒,它可能正在等待输入。密码或known_hosts(是/否)提示。

如果你继续在这个shell中做某事,在某些时候你会看到它吐出来:

~$
[1]+  Done                    ssh 127.0.0.1 "sleep 10"

然后我猜你不应该担心,它一直在运行。

修改

我认为-n选项可以做到:

~$ ssh -n 127.0.0.1 "sleep 10" &
[1] 24545
~$ jobs
[1]+  Running                 ssh -n 127.0.0.1 "sleep 10" &
~$
[1]+  Done                    ssh -n 127.0.0.1 "sleep 10"

从手册页:

 -n      Redirects stdin from /dev/null (actually, prevents reading from stdin).  This must be used when ssh is run in the
         background.  A common trick is to use this to run X11 programs on a remote machine.  For example, ssh -n
         shadows.cs.hut.fi emacs & will start an emacs on shadows.cs.hut.fi, and the X11 connection will be automatically
         forwarded over an encrypted channel.  The ssh program will be put in the background.  (This does not work if ssh
         needs to ask for a password or passphrase; see also the -f option.)