2016-09-22 5 views
0

저는 nohup을 사용하여 bash에서 Python 스크립트를 실행하고 있습니다. 이 스크립트는 bashrc를 통해 쉘 기능의 일부로 실행됩니다. 내가 이것을 다음과 같이 실행하면 :nohup.out (bash)에 액세스 한 후 프롬프트가 표시됩니다.

function timer { 
    nohup python path/timer.py $1 $2 > path/nohup.out 2>&1 & 
    echo 'blah' 
} 

모든 것이 작동하고 프롬프트가 다시 나타납니다. 그러나, 대신 echo 나는이처럼 nohup을 출력 파일의 끝 부분에 액세스 할 수 tail 전화 :

function timer { 
    nohup python path/timer.py $1 $2 > path/nohup.out 2>&1 & 
    tail -f path/nohup.out 
} 

내 메시지가 반환되지 않습니다. nohup.out의 내용을보고 CTRL-c를 사용하지 않고 프롬프트로 돌아가고 싶습니다.

나는 here의 조언을 따르지만, </dev/null을 추가하면 위와 같은 결과가 나타납니다.

+0

참조 :'man tail' – Cyrus

+0

tail -f는 SIGHUP/SIGINT/etc 신호를 얻지 않으면 종료하지 않습니다. – euphoria83

답변

0

프롬프트가 표시되지 않습니다.

tail -f은 파일이 커짐에 따라 추가 된 데이터를 출력하기 때문에 항상 (path/nohup.out)을 보게됩니다. tail -n을 시도하면 10 행이 path/nohup.out이됩니다.

+0

감사합니다. 처음에'tail -n'이나'tail -lines'는 파일이 관련 정보가 기록되기 전에 읽혀지기 때문에 잘라내지 않았습니다. 저는이 문제를'sleep 1s','tail' 다음으로 작업하고 있습니다 만, 쓰여질 때까지 파일을 보는 것이 더 깔끔합니다. 후속 호출 (예 : ctrl-c가 아닌)에서'tail -f'를 종료하는 방법이 있습니까? 나는'kill $! '의 여러 변종을 시도했다. – eohippus