ProgramingTip

다른 펼쳐 (이미 실행 중)가 계속 후 시작

bestdevel 2020. 12. 14. 20:39
반응형

다른 펼쳐 (이미 실행 중)가 계속 후 시작


그래서 프로세스가 실행 중이며 완료하는 데 몇 시간이 있습니다. 하나가 앞으로 자동으로 다른 프로세스를 시작하고 싶습니다. 첫 번째 펼쳐의 두 번째 펼쳐보기에 대한 호출을 추가 할 수 있습니다 두 펼쳐서 실행할 다른 펼쳐도 없습니다. Linux에서 작업을 수행 할 수있는 방법이 있습니까?

편집 : 한 가지 옵션은 xpgrep을 사용하여 마다 폴링 하고 프로세스가 완료되었는지 확인하는 것입니다. 다른 하나를 시작하십시오. 그러나이 솔루션이 마음에 들지 않습니다.

추신 : 도움이 둘 다 bash 펼쳐입니다.


설문 조사는 아마 갈 길이 없을 끔찍할 필요는 없습니다.

pid=$(ps -opid= -C your_scriptname)
while [ -d /proc/$pid ] ; do
    sleep 1
done && ./your_other_script

첫 번째 프로세스의 PID가 주어지면 루프

while ps -p $PID; do sleep 1; done ; script2

트릭을해야합니다. 이것은 pgrep 및 프로세스 이름보다 조금 더 안정적입니다.


ctrl + z를 먼저

fg; echo "first job finished"

waitbash 내장 명령을 사용하여 이미 프로세스를 사용할 수 있습니다 wait. 남자 배쉬 .

wait [n ...] 지정된 각 프로세스를 기다렸다가 종료 상태를 반환합니다. 각 n은 프로세스 ID 또는 작업 사양 일 수 있습니다. 작업 사양이 제공되는 작업의 파이프 라인에있는 모든 프로세스가 대기합니다. n을 지정하지 않고 현재 활성화 된 모든 프로세스가 대기하고 반환 상태는 0입니다. n이 존재하지 않는 프로세스 또는 작업을 지정하는 경우 반환 상태는 127입니다. 없는 경우 반환 상태는 마지막으로 대기 한 프로세스 또는 작업의 종료 상태입니다.


프로그램이 여러 악마를 실행하는 경우 종종 있습니다. 이 경우 pid는 배열됩니다. 다음을 사용하십시오.

PID = ($ (pidof -x process_name)) # 현재 주어진 프로세스의 모든 PID를 $ pid 배열에 저장합니다.

이제 thiton의 코드를 다음과 같이 수정하십시오.

while ps -p ${PID[*]}; do sleep 1; done ; script2


다음과 같이 해결했습니다.

nohup bash script1.sh &

기다림

nohup bash script2.sh &


가장 쉬운 방법 :

./script1.sh && ./script2.sh

&&는 script2로 진행하기 전에 script1이 완성으로 완료 대기를 말합니다.


동일한 요구 사항이 모두 다음과 같은 방법으로 해결했습니다.

while [[ "$exp" != 0 ]]; do
exp=$(ps -ef |grep -i "script1" |grep -v grep |wc -l)
sleep 5;
done

script2에 전화

참고 URL : https://stackoverflow.com/questions/7485776/start-script-after-another-one-already-running-finishes

반응형