yoshubom 发表于 2020-03-22 22:15

关于ssh 远程执行脚本的疑问

本帖最后由 yoshubom 于 2020-03-22 22:19 编辑

在B 机器上有两个脚本,分别是
loop.sh

# loop.sh
while true; do
date
sleep 2
done


loop12.sh

# loop12.sh
optv=$1
while true; do
case $optv in
2)
    echo "from stderr" >&2
    date >&2
    ;;
*)
    echo "from stdout"
    date
    ;;
esac
sleep 2
done


现在从A 机器上远程调用loop.sh
ssh HostB './loop.sh &'
在A 的终端上会每隔2 秒打印出时间,Ctrl+c 结束之后,再到B 机器上查看
ps -ef | grep loop
发现./loop.sh 进程还在B 机器上。

奇怪的是,从A 机器上远程调用loop12.sh
ssh HostB './loop12.sh &'
也会间隔2 秒打印时间,但是Ctrl+c 结束之后,发现在B 机器上的./loop12.sh 进程也消失了。

请问这是为什么呢?请各位高人指点,谢谢!






本友会机友会摄友会 发表于 2020-03-23 13:22

reyleon 发表于 2020-03-31 12:56

看到这个问题让我也开始寻找 "为什么" 了 :dizzy:
真是奇怪

chengchow 发表于 2020-03-31 16:26

本帖最后由 chengchow 于 2020-03-31 16:28 编辑

应该和进程的调度方法有关,貌似只有在执行了shell内嵌命令的情况下,进程中断终端才会退出, echo就是shell内嵌命令,具体情况不清楚,等高手来回答
这样是会退出的

[*]# loop.sh
[*]while true; do
[*]date
[*]sleep 2
[*]:
[*]done

页: [1]
查看完整版本: 关于ssh 远程执行脚本的疑问