2013-08-20 3 views
0

bash 스크립트에서 몇 개의 명령을 실행하려고 시도하지만 명령이 완료 될 때까지 기다리지 않고 끊깁니다. 이 스크립트는 단순히 실행 중인지 확인합니다. 이 파이썬 명령에 도달하면 명령이 실행되는 동안bash에서 명령을 실행 한 다음 명령을 죽이지 않고 종료하십시오.

#!/bin/bash 
ps cax | grep python > /dev/null 
if [ $? -eq 0 ]; then 
    echo "Process is running." 
else 
    echo "Process is not running... Starting..." 
    python likebot.py 
    echo $(ps aux | grep python | grep -v color | awk {'print $2'}) 
fi 

는 최대 정지됩니다. 그 때까지 내가 cntrl 전에 cid를 제공합니다. 어쨌든 나는이 bash 스크립트를 실행하고 명령이 실행되면 bash 스크립트를 종료 할 수있다 (완료 될 때까지 기다리지 않고).

+1

& after 명령 사용 –

+0

'&'연산자를 이미 사용해 보셨습니까? – EverythingRightPlace

+0

http://codereview.stackexchange.com에서 제출해야합니다. 피드백은 쉘 프로그래밍에 대해 많은 것을 가르쳐 줄 것입니다. –

답변

6

일반적으로 명령을 실행하고 기다리지 않으려면 ; 또는 개행 문자 대신에 &을 구분 기호로 사용하면됩니다. 이렇게하면 특수 변수 !에서 해당 프로세스의 PID를 쉘에서 사용할 수 있습니다. 해당 프로세스가 완료 될 때까지 기다리려면 wait을 사용할 수 있습니다. 기다리지 않으려면 wait을 생략하면됩니다. 귀하의 경우 :

python likebot.py & # Start command asynchronously 
echo $!    # echo the pid of the most recent asynchronous process 
1

항상 당신이 작업이 여전히 로그인 프로세스의 자식 베어 &와뿐만 아니라 'nohup을'을 고려하는 것이 좋습니다 그 경우 죽을 실행해야 likebot처럼 보이는 때문에 죽는다.

관련 문제