当我在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
答案 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.)