[질문] 새로만든 프로그램을 NTSYSV에 등록 하는 방법....

kimyh의 이미지

새로만든 프로그램을 NTSYSV에 등록하여 부팅시 자동으로 수행할려고 합니다.(리눅스 레드햇 9)
그런데 NTSYSV에 등록도 되고 첵크도 되어 있는데 부팅시 실행이 되지 않는것 같아서요.

먼저 실행파일을 /usr/sbin에 카피해주고 /etc/init.d에 아래와 같은 데몬 스크립트를 카피 해 주었습니다.(퍼미션은 0755)

그런후 /etc/rc.d 디렉토리아래의 rc0.d 부터 rc6.d 까지 링크된것도 확인 했습니다.
그리고 ntsysv 에 등록된것도 확인하고 첵크된것도 확인 했습니다.

그런데 부팅되면 당연히 실행 되어야 할 ntsysv에 등록된 데몬 실행파일(ipdns)이 실행이 안됩니다.

모니터에서 [root@localhost init.d]# ipdns start 또는 ./ipdns 라는 명령으로 실행 시키면 잘 되거든요.
그런데 ntsysv에도 잘 등록이 된거 같은데 부팅시 실행이 않됩니다.

어디에 잘못이 있는지 도와주시면 감사하겠습니다.

/etc/init.d 에 있는 데몬 스크립트(기존 사용중인것을 수정한것임);

#! /bin/sh
#
# chkconfig: 345 50 50 ##런레벨에 따라 /etc/rc.d 디레레토리아래에 rc0.d 부터 rc6.d에 링크
# description: ipdns dynamic dns updater.
# processname: ipdns
# Author : yang-hyun Kim < <a href="mailto:admin@abcd.com" rel="nofollow">admin@abcd.com</a> >
# Date : 2007.01.01
# <a href="http://www.abcd.com" rel="nofollow">http://www.abcd.com</a>
#
#Register on NTSYSV and checking on it. 
/sbin/chkconfig --add ipdns ##ntsysv에 등록
/sbin/chkconfig --level 345 ipdns on ##ntsysv에 등록된 데몬 첵크
 
# Source function library.
. /etc/rc.d/init.d/functions
 
# Get config.
. /etc/sysconfig/network
 
# Check that networking is up.
if [ ${NETWORKING} = "no" ]
then
        exit 0
fi
 
[ -f /usr/sbin/ipdns ] || exit 0
 
# See how we were called.
case "$1" in
  start)
        echo -n "Starting ipdns: "
        daemon /usr/sbin/ipdns
 
        echo
        touch /var/lock/subsys/ipdns
        ;;
  stop)
        echo -n "Stopping ipdns: "
        killproc /usr/sbin/ipdns
 
        echo
        rm -f /var/lock/sbsys/ipdns
        ;;
  status)
        status ipdns
        ;;
  restart)
        $0 stop
        $0 start
        ;;
  *)
        echo "Usage: ipdns  {start|stop|status|restart}"
        exit 1
esac
 
exit 0

위의 소스중에서
#Register on NTSYSV and checking on it.
/sbin/chkconfig --add ipdns
/sbin/chkconfig --level 345 ipdns on

이 부분은 ntsysv에 자동으로 등록해주고 첵크 하라는 의미로 제가 임의로 추가한건데 ntsysv에서 확인해보면 제대로 동작 됩니다.

그런데 /etc/rc.d/init.d/ipdns restart 명령을 내리면
[root@localhost init.d]# /etc/rc.d/init.d/ipdns restart
Stopping ipdns: [실패]
Starting ipdns: [ 확인 ]
처럼 몇번을 해봐도 Stopping에서 [실패]가 나옵니다.
그리고 이상한것은 Starting에서 [확인] 이 나온데도 확인해보면 실행이 않된다는겁니다.

혹시 실행파일에 추가한 아래부분에 문제가 있는지 모르겠습니다.
아울러 살펴 주시면 감사하겠습니다.

//		리눅스 ntsysv에 등록하여 부팅시 자동실행하기위한 조치		  		  
	         switch( fork() )
        {
                 case -1:
                         exit(1);
                 case 0:
                         setsid();
                         break;
                  default:
                         exit(0);
        }
//		리눅스 ntsysv에 등록하여 부팅시 자동실행하기위한 조치 끝

너무 질문이 장황하게 길어저 죄송합니다.
아시는 선배님 도움 주시면 감사하겟습니다.

ssik425의 이미지

사용하고 있는 스크립트의 일부분입니다.

prog="httpd"
ret_val=0

start(){
echo -e "Prog Daemon Start !!"
/etc/httpd/bin/httpd > /dev/null 2>&1
ret_val=$?
if [ $ret_val -eq 0 ] ; then
action $"Starting $prog: " /bin/true
touch /var/lock/subsys/$prog
else
ret_val=1
fi
return $ret_val
}

stop()
{
echo -e "httpd Daemon Stop !!"
echo -n $"Stopping $prog:"
killproc $prog
ret_val=$?
echo
rm -f /var/lock/subsys/$prog
killproc $prog > /dev/null 2>&1
return $ret_val
}

개발자들의 궁극적 비전은 ?

개발자들의 궁극적 비전은 ?

ssik425의 이미지


이부분이 이상해보이네요..

killproc /usr/sbin/ipdns

==> killproc ipdns

개발자들의 궁극적 비전은 ?

개발자들의 궁극적 비전은 ?

bushi의 이미지

#Register on NTSYSV and checking on it.
/sbin/chkconfig --add ipdns
/sbin/chkconfig --level 345 ipdns on

뻬세요. 관리자가 헷갈립니다.
패키지 제작하실 때 post_install 과 pre_uninstall 을 제대로 활용하기 위해서라도 빼야합니다.
보통
post_install:
/sbin/chkconfig -add ipdns
/sbin/chkconfig --level 345 ipdns on
/sbin/service ipdns restart
pre_uninstall:
/sbin/service ipdns stop
/sbin/chkconfig -del ipdns

제작하신 프로그램 안에서 syslog 를 사용, 로그를 적절하게 기록하도록 하세요.
사용자뿐만 아니라 개발자 자신에게도 필요합니다.
스크립트가 제대로 실행되는 것과 ipdns 라는 데몬이 제대로 도는 것은 별개입니다.

콘솔에서 init 2 또는 init 3 등으로 run level 을 바꿔가며 될 때까지 디버깅 하세요.

다 이상 없는데 부팅때만 이상하다면 /etc/inittab 에서 default runlevel 이 3,4 또는 5 인지 보시고요.

현시점에서는,
부팅 때 스크립트가 실행이 안된 것인지, ipdns 라는 데몬이 잘못 종료된 것인지 조차 파악하기 어렵습니다.

kimyh의 이미지

하루가 지나도 답변이 없어서 무척 고민을 했었는데 이렇게 좋은 답변 주시니 정말 감사할 따름입니다.

질문이 너무 길어져서 생략한 부분이 있었는데 C로 만든 2개의 프로그램(1.환경설정 프로그램, 2.작업처리 실행파일)중에서 환경설정 프로그램을 다운받아 실행시키면 2번의 작업처리 실행 파일이 NTSYSV에 자동으로 등록되어 첵크 되게 하고 부팅시 2번의 작업처리 실행 파일만 동작 하도록 하기 위한 것 입니다.
따라서 질문 내용의 모든 과정이 1번의 환경설정 파일을 실행 시키면 이루어 지도록 코딩 한것입니다.

제가 나름대로 확인한 바로는 부팅 스크립트는 동작을 하는것 같습니다.
왜냐하면 부팅을 하면 부팅 프로세스에 ipdns가 떠있고 로그인후 ntsysv에도 제대로 등록이 되어있거든요.

그런데 부팅후 /usr/sbin 아래에 분명히 실행파일 ipdns가 카피되어 있는데도 다시 카피를 시켜주고
[root@localhost init.d]# /etc/rc.d/init.d/ipdns restart 이렇게 명령을 주어보면 제대로 스크립트가 동작을 하고 실행파일도 그때부터 동작을 합니다.

그런데 부팅하는 과정에서만 /usr/sbin 아래에 있는 실행파일이 동작을 못 하는거 같아요.

killproc /usr/sbin/ipdns 이분분도
killproc ipdns 이렇게 수정 해봤는데도 마찬가지 입니다.

그리고 제가 임의로 삽입한
#Register on NTSYSV and checking on it.
/sbin/chkconfig --add ipdns
/sbin/chkconfig --level 345 ipdns on 부분을 삭제하면 NTSYSV에 등록이 않되더라구요.
그래서 부득히 넣은건데 다른 데몬 스크립트에는 위 부분이 없더라구요.

제가 데몬 스크립트를 잘못 작성한건지 아니면 실행파일의 데몬 처리부분이 잘못된건지 또 다른 조치가 필요한데 그걸 빼먹은건지 도무지 알수가 없군요.
오늘도 밤샘했는데 진척이 없어 위에 바쁘신중에도 답변 해주신 분들께 죄송 합니다.
그리고 조언 해 주신 로그파일 작성부분은 이것을 먼저 끝내고 해야될것 같군요.

답변 주신분들께 감사드리고요
죄송합니다만 다시한번 살펴 주시면 정말 감사하겠습니다.

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

살며 그리고 사랑하며...
정보는 공유할때 그 가치가 있는것.....
나의 조그만 지식공유는 남에게 엄청난 기쁨을 안겨 준다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.