2012-08-23 2 views
0

우리가 작성한 사용자 정의 데몬을 모니터하기 위해 monit을 얻으려고 시도하지만 bash stop/start 스크립트로는 작동하지 않습니다. 명령 줄에서 직접 stop/start 스크립트를 실행하면 매번 100 % 완벽하게 작동합니다. 그것이 monit을 통해 실행되면 변수는 비어 있습니다. 내가하는 데 문제가 스크립트에서 추출이이 MONIT으로 실행됩니다 때Monit이 bash 변수를 잃어 버리고 있습니까?

GETPID=$(ps aux | grep unicorn | grep master | cut -d" " -f7) 
echo "getPID : $GETPID"            
echo $GETPID > $PIDFILE 

$GETPID 변수가 비어 있습니다. 손으로 완벽하게 작동합니다.

누구든지 아이디어가 있습니까?

+0

파일의 첫 줄에'#!/bin/sh' 행을 추가하면 도움이됩니까? – tripleee

+0

은 첫 줄에 #!/bin/bash가 있습니다. 위 코드는 실제로 스크립트에서 추출한 것입니다. – daemonza

+0

'cut '이 공백의 변화에 ​​약하기 때문에'cut'대신'awk '{print $ 2}'를 쓰면 도움이됩니까? –

답변

0

일반적으로 ps 또는 ls의 출력을 구문 분석하는 것은 좋지 않습니다.

당신은 proc 파일 시스템에 find를 사용하여 간단한 pgrep을 작성할 수 있습니다 도움을

# find /proc/ -maxdepth 2 -type l -name exe -lname '/bin/bash' -printf '%h\n' 2>/dev/null | sed 's/.*\///' 
3580 
3595 
9504 
9869 
10054 
10156 
10193 
# pgrep bash 
3580 
3595 
9504 
9869 
10054 
10156 
10193 
0

감사합니다. 문제는 rvm install에서 unicorn으로가는 길입니다.