ローカルbashスクリプトが終了したときにSSHを介して実行されるスクリプトを終了する方法

ローカルbashスクリプトが終了したときにSSHを介して実行されるスクリプトを終了する方法

exec.shnode01からリモートでPythonスクリプトを実行する次のスクリプトがあります。

#!/bin/bash
ssh node01 "python2.7 /home/user/run.py"

使用またはexec.sh終了CTRL+Cすると、kill -9SSHを介して実行されたPythonスクリプトはまだnode01で実行されています。

私が望むのは、スクリプトを終了するたびにnode01で実行されているプロセスを終了することですexec.sh

ベストアンサー1

これは、exec.shがローカルであり、リモートコンピュータでコマンドを実行するためです。したがって、ローカルプロセスを終了してもリモートプロセスは実行中です。

目的を達成するには、CTRL + C信号をキャプチャし、リモートホストでコマンドを終了する前にexec.shが必要です。

function trap_ctrlc ()
{
# kill the remote process
  ssh user@pass "pkill -9 python"

  exit 2 
}

# initialise trap to call trap_ctrlc function
# when signal 2 (SIGINT) is received
trap "trap_ctrlc" 2

your script here

注:Pythonは非常に多様なプロセス終了機能を提供します。起動時にプロセスIDを保存してから、IDで具体的に終了するのが最善です。

おすすめ記事