로컬 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별로 구체적으로 종료하는 것이 가장 좋습니다.

관련 정보