当我执行以下操作时,我必须在之后按CTRL-c
,否则shell会很奇怪。左/右箭头键,例如没有正确移动,文字搞砸了。
# read -r pid < <(ssh 10.10.10.46 'sleep 50 & echo $!') ; echo $pid
2135
# Killed by signal 2.
^C
#
我需要这个脚本,所以我想知道为什么需要CTRL-c
并且可以解决它吗?
更新
看起来它会打开一个额外的Bash shell,而那就是需要退出的那个。
我真正感兴趣的命令是
read -r pid < <(ssh 10.10.10.46 "mbuffer -4 -v 0 -q -I 8023 > /tmp/mtest & echo $!"); echo $pid
答案 0 :(得分:3)
请改为尝试:
read -r pid \
< <(ssh 10.10.10.46 'nohup mbuffer >/tmp/mtest </dev/null 2>/tmp/mtest.err & echo $!')
三个重要变化:
nohup
的使用(您也可以使用内置的bash disown
获得类似的效果)ssh
开始之前发生,因此您获得的$!
是最近启动的 local <的PID / em>后台处理)。