
exec.sh
node01からリモートでPythonスクリプトを実行する次のスクリプトがあります。
#!/bin/bash
ssh node01 "python2.7 /home/user/run.py"
使用またはexec.sh
終了CTRL+C
すると、kill -9
SSHを介して実行された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で具体的に終了するのが最善です。