그냥 쉘로만 짜야 한다면 다음과 같이 하면 됩니다.

#!/bin/sh

while [
1 ]; do
    echo “Hello World!”
    sleep 1
done

위에서
sleep /bin 디렉토리에 있는 실행파일입니다. argument로 시간을 줄
수 있고, 그냥 숫자만 넣으면 ‘초’를 나타냅니다. 하지만 ‘m’, ‘h’, ‘d’ 를 숫자 뒤에 붙여서 각각 분, 시간, 일을 지정해줄 수도
있답니다.

#
sleep
30m

예를 들어 이와 같이 실행하게 되면 30분을 쉬는 것입니다.

그럼 위에 작성한 파일을 데몬으로 (PPID가
init의 PID인 1로) 띄우는 방법입니다. 만약 위 파일을 sample.sh라고 가정한다면,

# ./sample.sh
>/dev/null 2>&1 &

이와 같은 방법으로 데몬으로 만들 수 있습니다. 그냥 파일
이름 뒤에 & (AMPERSAND)만 붙이게 되면 뒷배경에서 띄우겠다는 의미입니다. 그러나 일반 데몬이 그렇듯
>/dev/null를 사용해서 stdout을 null 디바이스로 뽑고 2>&1
stderrstdout과 마찬가지로 null 디바이스로 뽑아서 없애버리는 것입니다.

이렇게 한 후에는
현재 접속한 login 세션으로부터 접속을 종료 한 후에 다시 접속을 하면 됩니다. 접속이 끊어지면 뒷배경에서 돌던 sample.sh가 원래
PPID였던 쉘이 종료되므로 자신의 PARENT를 잃어버리고 그 쉘의 PID인 init의 PID, 즉 1에 종속되게
되죠.

#
ps -ef
|grep sample

paul    28155    1  0 12:56 ?    00:00:00 ./sample.sh

그럼
이제 거의 완벽한 데몬이 된 것입니다. (^-^ 😉

Leave a Reply

Your email address will not be published. Required fields are marked *