bash 스크립트로 백그라운드 프로세스 강제


0

내가 bash 스크립트를 만들려고하는데 - 그 중에서도 sunwait가 시작된다.

/root/bin/sunwait sun up -0:00:00 54.453158N 11.013071E; mycommand &

Sunwait은 특정 명령을 실행하기 전에 천문 현상이 발생하기를 기다리는 바이너리입니다. 맨 마지막에 앰퍼샌드를 사용하여 스크립트를 배경으로 보내면 스크립트는 다른 작업을 계속할 수 있지만 작동하지 않으며 이유를 모르겠습니다.

쉘에서 직접 명령을 실행해도 sunwait는 백그라운드로 보내지지 않습니다. 나는 아무런 성공도하지 못하고 nohup을 시도했다.

우분투 14.04 서버 LTS에 있습니다. 왜 작동하지 않는거야?

답변:


1

Sunwait은 특정 명령을 실행하기 전에 천문 현상이 발생하기를 기다리는 바이너리입니다.

구문을 검토 한 후에이 해석이 잘못되었다고 생각합니다. 귀하의 예에서 sunwait 실제로 아무런 명령도 실행되지 않습니다. 나는 익숙하지 않다. sunwait그러나 빠른 연구는 천문학적 인 사건을 기다리고 나서 끝내는 것이라고 나에게 계시했다.

귀하의 경우 그것은 이렇게 간다 :

  • 셸이 줄을 읽고 세미콜론을 만난다. ; 그 시점까지 모든 것을 실행합니다. sunwait 명령 줄 옵션이 있습니다.
  • 쉘은 sunwait 끝내기 위해.
  • 결국 sunwait 완료되면 셸이 다음으로 진행됩니다. mycommand 앰퍼샌드 때문에 백그라운드에서 실행합니다. &.

따라서 질문에 대한 직접적인 대답이 가장 일반적입니다. 그것이 작동하고 있기 때문에 (당신이 원하는 것을하고있는 것이 아니라) "일하는"것이 아닙니다.

고치다:

  1. 어느 한 쪽 { /root/bin/sunwait sun up -0:00:00 54.453158N 11.013071E; mycommand; } &

  2. 또는 /root/bin/sunwait sun up -0:00:00 54.453158N 11.013071E && mycommand &

첫 줄에는 두 개의 명령이 있습니다. {} 보이는 & 하나의 명령 인 것처럼, 모든 것이 백그라운드로 간다. 간단하고 자주 좋은. 두 번째 경우는 약간 다릅니다. mycommand 다음과 같은 경우에만 실행됩니다. sunwait 오류없이 끝난다. sunwait 잘못 코딩 됨). 그것은 당신이 처음에 기대했던 행동입니다, 그렇죠?. 개인적으로 두 번째 픽스는 좀 더 우아합니다. 실수로 입력 한 것을 상상해보십시오. mycommand 그리고 시시한 폭탄이라고 잠시 깨달았습니다. 죽이는 sunwait 1 차 시나리오에서 폭탄을 발사하고 2 차에서 폭탄을 터뜨릴 것입니다.


자세한 설명과 가능한 수정 사항을 논의 해 주셔서 감사합니다 !! 나는 지금 바보 같고 & amp; & amp; 매력처럼 작동합니다 :)
Niksac

1

당신의 라인은 세미콜론 (; ; ). 두 명령을 모두 백그라운드로 보내야합니다.

/root/bin/sunwait sun up -0:00:00 54.453158N 11.013071E & mycommand &

또는 명령을 차례로 실행하려면 서브 쉘과 백그라운드에서 명령을 실행하십시오.

( /root/bin/sunwait sun up -0:00:00 54.453158N 11.013071E; mycommand ) &

후자의 예제는 첫 번째 명령이 현재 두 명령을 시작하고 백그라운드에서 시작할 때 달성하려는 것으로 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.