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