2013-10-10 3 views
0

내가 로그인 할 때 node가 실행되고 있는지 확인하려면 내 .bashrc 파일 그래서 나는이 있습니다. node가 실행중인 경우프로세스가 Bash에 존재하는지 테스트하는 방법?

물론
pkill node 
sleep 1 
node server.js & 

, 즉 확인하지 않습니다 ... 그것은 단순히이 시작됩니다 죽인다 다시.

node_process = $(pidof node) 
if [not_exists node_process]; then 
    node server.js & 
fi 

문제는 not_exists 방법 : 존재하지 않는 것입니다 대신 나는 이런 식으로 뭔가를하고 싶습니다. Bash에서 숫자 또는 문자열의 존재 여부를 테스트하는 방법은 무엇입니까? 이것이 로그인 할 때 노드가 실행되고 있는지 확인하는 가장 좋은 방법입니까? 문자열 -z를 사용하여 비어있는 경우

+1

[프로세스 ID (PID)가 있는지 확인하는 방법] (http://stackoverflow.com/questions/3043978/how-to-check-if-a-process-id-pid-exists)의 가능한 복제본 –

답변

1

당신은 확인할 수 :

node_process_id=$(pidof node) 
if [[ -z $node_process_id ]]; then 
    node server.js & 
fi 

pidof 반환 아무것도 일치하는 프로세스가 발견되지 않으면, 그래서 node_process_id은 빈 문자열로 설정됩니다.

+0

이것은 내가 찾고있는 것처럼 보입니다. 'if' 조건 내에서'$ (pidof node)'를 움직일 수 있습니까? 왜 'if'조건 주위에 대괄호 2 개가 필요합니까? –

+0

이중 브래킷은 단일 브래킷의보다 친숙한 'bash'버전입니다. 그리고 네, 만약에'if! 피 도프 노드; 노드 server.js & fi'가 제대로 작동해야합니다. – chepner

관련 문제