2017-09-22 3 views
0

나는 a.sh 스크립트를 실행 중이고 b.sh를 병렬로 실행 중이다. 이제 b.sh는 a.sh가 끝나지 않으면 비즈니스 로직을 실행하지 않아야합니다. b.sh에서이를 수행하기 위해 ps -ef 명령에서 a.sh라는 이름으로 검색하는 while 루프가 있지만 a.sh에는 많은 sleep 명령이 있으므로 sleep이 실행될 때 ps에서 결과를 볼 수 없습니다. 예를 들어 a.sh에 대한 ef 명령은 다음과 같습니다. sleep 60a.sh가 b.sh에서 실행 중인지 확인하는 방법?

이 시나리오에서는 b.sh가 어떻게 든 액세스 할 수있는 a.sh에 플래그를 설정합니다. 하지만 a.sh가 b.sh를 호출하지 않기 때문에 b.sh에서 그러한 변수에 액세스하는 방법을 모르겠습니다.

또는 자식 프로세스를 생성하고 사용자 정의 이름을 지정하고 a.sh의 끝에서 종료 할 수 있습니다.

그런 식으로, b.sh에서 특정 이름의 프로세스를 찾을 수있을 때까지 b.sh에서 비즈니스 로직의 실행을 시작하지 않습니다. 그러나 나는 이것을하는 방법을 모른다.

답변

1

왜 의사 소통을 허용하지 않습니까? 예를 들어, 당신은 무엇을 할 수 있는지 :

  • a.sh 쓰기를 일부 임시 파일의 진행 상태 진행하는 해당 파일에 올바른 일을보기 위해 대기 파일을 읽는
  • b.sh 루프로.

bash에서 신호를 사용하는 것이 더 쉽고 안전 할 수 있지만 그 작업을 수행해야한다고 생각합니다. 문제의 동시적인 측면에 대해서는주의를 기울이십시오.

(담당자가 충분하지 않을 수 있음)