테스트 사이트 - 개발 중인 베타 버전입니다

쉘스크립트를 cron으로 실행하는거 질문합니다. 채택완료

PIREE 7년 전 조회 3,152

/php설치경로/php /www/reload.php 를 2초마다 실행하고 싶습니다.

 

cron으로 실행중인 쉘스크립트의 process가 있는지 확인하고 없을때만 쉘스크립트를 실행하도록 하고 싶습니다.

쉘스크립트를 어찌 짜야할지 모르겠어요.

2시간째 검색하고 있는데 서버는 잘 몰라서 어렵네요. ㅠ_ㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
7년 전

헉 자유 게시판에서 물어보시지 뭘 QnA 까지 ..ㅋㅋ

</p>

<p>#!/bin/bash

PROGRAMM="myshell.sh"    # 실행하고자 하는 프로그램의 이름을 가급적 풀네임으로

LINE="$(ps -ef | grep $PROGRAMM | grep -v grep | wc -l )"

if [ "${LINE}" -gt 0 ]

then

   echo "running...."   # 현재 실행중임

else

   echo "not running" # 현재 실행중이 아님

fi</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 4개

P
PIREE
7년 전
답변 고맙습니다.
그래도 규칙은 지켜야겠다고 생각해서 qa에 올렸어요. ^^
P
PIREE
7년 전
한가지 더 여쭤볼께요.
질문이 많이 미안합니다.

쉘스크립트 : /bin/bash /shell_path/shell_name.sh

php 파일 : /php_path /php_file_path/php_name.php

위 같은 경우

PROGRAMM="myshell.sh"
PROGRAMM 을 어떻게 적어야 할까요?
나시
7년 전
둘중에 어떤걸 적어도 관계 없습니다.
하지만 저라면 PROGRAMM="shell_name.sh" 를 사용할거 같습니다.
저중에 가장 유니크하다고 생각되거든요
P
PIREE
7년 전
@나시 친절한 답변 감사합니다.
복 받으실거에요. ^^

댓글을 작성하려면 로그인이 필요합니다.

7년 전

검색하여, https://stackoverflow.com/a/2903591" target="_blank">https://stackoverflow.com/a/2903591 의 코드를 조금 수정한 후, 테스트해보았습니다.

servicename 부분에 서비스명 패턴 문자열을 넣으면 됩니다.

if  문 안에 실행 코드 넣으면 될 듯 하구요.

 

</p>

<p>$ cat ./test.sh

#!/bin/sh</p>

<p>SERVICE="servicename"

RESULT=`ps -ef | sed -n /${SERVICE}/p`</p>

<p>if [ "${RESULT:-null}" = null ]; then

    echo "not running"

else

    echo "running"

fi</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

나시
7년 전
헉 저랑 19초 차이 ^^
마르스컴퍼니
7년 전
다시 테스트해보니.. 제 코드는 제대로 동작을 안하네요..

더 테스트해보고, 수정할까 하다가..

나시님이 먼저 단 답변이 있어, 안해도 될 것 같습니다.
P
PIREE
7년 전
안녕하세요. ^^
답변 고맙습니다.
저때문에 검색도 해 보셨군요.
쉘스크립트 뭔가 복잡해 보여요.
기초가 없어서 그런가 봅니다.

댓글을 작성하려면 로그인이 필요합니다.

ps -ef 로 현재 실행중인 프로세스 리스트에서 쉘스크립트가 있는지 확인하시면 어떨까 싶습니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인