다른 펼쳐 (이미 실행 중)가 계속 후 시작
그래서 프로세스가 실행 중이며 완료하는 데 몇 시간이 있습니다. 하나가 앞으로 자동으로 다른 프로세스를 시작하고 싶습니다. 첫 번째 펼쳐의 두 번째 펼쳐보기에 대한 호출을 추가 할 수 있습니다 두 펼쳐서 실행할 다른 펼쳐도 없습니다. Linux에서 작업을 수행 할 수있는 방법이 있습니까?
편집 : 한 가지 옵션은 x
pgrep을 사용하여 매 분 마다 폴링 하고 프로세스가 완료되었는지 확인하는 것입니다. 다른 하나를 시작하십시오. 그러나이 솔루션이 마음에 들지 않습니다.
추신 : 도움이 둘 다 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"
wait
bash 내장 명령을 사용하여 이미 프로세스를 사용할 수 있습니다 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
'ProgramingTip' 카테고리의 다른 글
MySQL-LIMIT가있는 UPDATE 쿼리 (0) | 2020.12.14 |
---|---|
m2e 수명주기 매핑을 수 없습니다. (0) | 2020.12.14 |
SQL 임시 테이블의 데이터 유형 찾기 (0) | 2020.12.14 |
프로그래밍 방식으로 Android 앱 아이콘 배포 / 배포 해제 (0) | 2020.12.14 |
tar : 파일을 업그레이드 됨 변경됨 (0) | 2020.12.14 |