2015-01-24 1 views
1

죄송합니다. 질문은 매우 모호합니다.하지만 누군가가 여전히 도움을 줄 수 있기를 바랍니다. exec bash 명령을 이해 했으므로 인수로 지정된 코드 세그먼트로 바꿉니다. 실제로 실행중인 스크립트를 다른 것으로 대체하십시오.exec를 사용하여 충돌하는 바이너리를 다시 시작 하시겠습니까?

그러나 나는 exec (fork이 아님)을 사용하여 사람들이 중단되거나 0이 아닌 종료 코드로 종료되는 경우 실행 파일을 다시 실행하는 루프를 보았을 것이라고 확신합니다. 불행히도 지금은 그 코드 조각을 찾을 수 없습니다. 가능한 모든 것이거나 상상할 수 있습니까?

답변

3

난 당신이보고 구체적으로 무엇인지 모르겠지만, 예를 들어, 프로세스를 시작하고 다시 시작하는 루프에서 간부를 사용하여 생각할 수있는 방법이 있습니다

while true 
do 
    (unset DISPLAY && exec ./myfile) 
done 

여기 (..)은 명백한 서브 쉘이므로 명확하지 않은 경우에도 포크가 있습니다.

exec을 반복하는 다른 이유는 작동하는 파일을 찾거나 파일이 만들어 지거나 사용할 수있게 될 때까지 다른 파일이나 다른 경로를 실행하려고 시도하는 것을 포함합니다.

그러나 아무런 종류의 암시 적 또는 명시 적 포크가없는 프로세스를 성공적으로 수행 할 방법이 없으며 스크립트가 재귀 적으로 실행되지 않는 한 exec 자체를 다시 돌릴 수 없습니다.

+0

고마워! 나는 (...)에 대해 몰랐다. – Shamdor

1

이것은 실제로 생각하는 것보다 더 일반적인 문제입니다.

이전에는 프로세스가 있는지 모니터링하기 위해 항상 bash 스크립트를 구현했습니다. 그렇지 않은 경우 다시 시작합니다. 여기

당신을 위해 일할 수있는 몇 가지 솔루션입니다 : 가 https://serverfault.com/questions/52976/simple-way-of-restarting-crashed-processes

+0

그래, 나는 그 과정을 모니터하는 여러 가지 방법이 있다고 확신하지만, 이것에 대한 'exec'사용에 대해 궁금하다. (도움이된다. 도움이된다.) – Shamdor