【问题标题】:Can't kill process started by another ssh session in bash script无法终止 bash 脚本中另一个 ssh 会话启动的进程
【发布时间】:2018-01-26 10:41:09
【问题描述】:

我正在编写一个 bash 脚本,我需要通过 ssh 登录远程机器,启动一个进程,结束 ssh 会话,做一些其他事情,然后通过 ssh 再次登录以终止该进程。但是该过程不会被杀死。我已经尝试了很多方法。 这是脚本中不起作用的部分:

ssh localadmin@10.101.30.61 &>/dev/null << EOF
tshark -i ens160 -w /home/localadmin/dns_traffic_61.pcap &>/dev/null &
EOF


ssh localadmin@10.101.30.61 &>/dev/null << EOF
kill $(pidof tshark)
EOF

我还尝试将 tshark 命令放入脚本中,这样我会像这样终止脚本:

ssh localadmin@10.101.30.61 &>/dev/null << EOF
sh tshark.sh &>/dev/null &
EOF

ssh localadmin@10.101.30.61 &>/dev/null << EOF
pid=$(ps -ef | grep tshark.sh | grep -v grep | awk '{print $2}')
kill $pid  
EOF

还有这个:

ps -ef | grep tshark.sh | grep -v grep | awk '{print $2}'|xargs kill

似乎没有任何效果。

注意:当我通过 ssh 手动连接时,我可以终止进程,只有 bash 脚本不能。

【问题讨论】:

    标签: linux bash ssh


    【解决方案1】:

    在结束标记周围使用单引号,这样扩展不会在当前 shell 中发生,而是在远程中发生

    ssh localadmin@10.101.30.61 &>/dev/null << 'EOF'
    kill $(pidof tshark)
    EOF
    

    比较

    cat << EOF
    $$
    EOF
    

    cat << 'EOF'
    $$
    EOF
    

    【讨论】:

      猜你喜欢
      • 2011-10-28
      • 1970-01-01
      • 1970-01-01
      • 2017-07-09
      • 1970-01-01
      • 2011-01-12
      • 2023-03-12
      • 1970-01-01
      • 2011-12-10
      相关资源
      最近更新 更多