GNU 병렬 종료 시 내 프로그램도 실패합니다.

GNU 병렬 종료 시 내 프로그램도 실패합니다.

저는 parallelbash 기능을 실행하기 위해 GNU를 사용하고 있습니다. 이 함수에는 프로그램을 다시 시작하는 bash 스크립트가 포함되어 있습니다. 처음에는 다시 시작해도 괜찮았지만 parallel종료할 때 프로그램도 실패했습니다. 왜?

#!/bin/bash

function_A () {
        local module=$1
        set -x
        cd /dir/${module}/;sh stop_${module}.sh;sh start_${module}.sh;sleep 10
}
export -f function_A

parallel --tag --onall --env function_A -S my_host function_A ::: my_program

PS 출력:

root     12967  0.0  0.0  65960  1152 pts/1    Ss+  16:30   0:00 bash -c echo $SHELL | egrep "/t?csh" > /dev/null && echo CSH/TCSH DO NOT SUPPORT newlines IN VARIABLES/FUNCTIONS && exec false;? eval `echo $SHELL | grep "/t\{0,1\}csh" > /dev/null  && echo setenv PARALLEL_SEQ 1\;  setenv PARALLEL_PID 6431  || echo PARALLEL_SEQ=1\;export PARALLEL_SEQ\;  PARALLEL_PID=6431\;export PARALLEL_PID` ; tty >/dev/null && stty isig -onlcr -echo;echo $SHELL | grep "/t\{0,1\}csh" > /dev/null && setenv function_A \(\)\ \{\ \ local\ module=\$1\;"?"\ set\ -x\;"?"\ cd\ /dir/\$\{module\}/\;"?"\ sh\ test.sh\;"?"\ sleep\ 10"?"\} || export function_A=\(\)\ \{\ \ local\ module=\$1\;"?"\ set\ -x\;"?"\ cd\ /dir/\$\{module\}/\;"?"\ sh\ test.sh\;"?"\ sleep\ 10"?"\} && eval function_A"$function_A";function_A my_program

답변1

귀하의 질문에 대해 제가 이해한 바로는 원격 시스템에서 데몬을 시작하고 GNU Parallel이 종료되면 데몬이 계속 실행되어야 합니다.

이렇게 하려면 로그아웃한 후에도 명령이 계속 실행되도록 하는 도구를 사용해야 합니다. 나는 다음과 같은 3가지 도구를 알고 있습니다.

nohup
screen
tmux

따라서 함수에서 다음을 사용하십시오.

    cd /dir/${module}/;nohup sh stop_${module}.sh;nohup sh start_${module}.sh;sleep 10

답변2

노력하다 nohup sh "start_${module}.sh" &:

#!/bin/bash

function_A () {
        local module=$1
        set -x
        cd "/dir/${module}/"
        sh "stop_${module}.sh"
        nohup sh "start_${module}.sh" &
        sleep 10
}
export -f function_A

parallel --tag --onall --env function_A -S my_host function_A ::: my_program

nohup명령을 사용하면 셸이 종료될 때(예: 로그아웃 중) 기본 스크립트가 종료되지 않습니다. '&'는 즉시 프로세스를 백그라운드로 전환합니다. 또한 "start_${module}.sh"작업이 비대화형인지 확인하세요 . 예를 들어 sh -c 'sh start_${module}.sh')로 실행하여 작동하는지 확인하세요.

관련 정보