Daemonizing Problem - Serious

 
Thread Tools Search this Thread
Special Forums UNIX and Linux Applications Daemonizing Problem - Serious
# 1  
Old 05-17-2013
Code Daemonizing Problem - Serious

Hello All,

I have a serious problem about daemonizing my script ( an executable, I named it as myScript at below ). I use standart template ( Centos 5.9 ) but due to a problem I could not figure out the reason, after random time it fails to start, and since I made it in while loop it restarts forever. For example, it works 2-3 hours, then it fails and begins to restart, or it fails at the first try and restarts forever...

And another thing is, I have a second script ( named it as mySecondScript at below ) and while I start them ( second script first, then the first script ) there is no problem, but while stopping them, first script fails to stop ( because of killing process or removing pid ), what should I change in process catching line, thanks in advance.

Here is the code;
Code:
#!/bin/sh
#
#chkconfig: 2345 99 30
#description: myScript
#processname: myScript

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 1
# Process name ( For display )
NAME=myScript
# Daemon name, where is the actual executable
DAEMON=/myScript/APP/myScript
# Daemon user
DAEMONUSER=scriptUser
# pid file for the daemon
PIDFILE=/var/run/myScript/myScript.pid
# log file for deamon
LOGFILE=/var/log/myScript.log

        # Define variables
        PS_CMD="ps -e -o pid,args"
        proc_list=`$PS_CMD | grep $NAME | grep -v grep | grep -v sh | grep -v /myScript/APP/mySecondScript | grep -v vi | grep -v su | grep -v tail`
        procs=`echo $proc_list | awk '{print $1}'`

start () {
        # see if it exists
        if [ -n "$procs" ]; then
                echo "$NAME is already running..."
        elif [ -e "$PIDFILE" ]; then
                echo "$NAME is already running..."
        else
                # start daemon
                touch $PIDFILE
                while [ 1 ]
                do
                        nohup $DAEMON >>$LOGFILE 2>&1 &
                        #daemon +9 --check $NAME $DAEMON >> $LOGFILE

                        echo "#--------------------------------------------------#" >> $LOGFILE
                        echo "# $NAME quit due to error, re-running in 15 seconds #" >> $LOGFILE
                        echo "#--------------------------------------------------#" >> $LOGFILE

                        sleep 15
                done
        fi
}

stop () {
        # see if it exists
        if [ -n "$procs" ]; then
                # stop daemon
                killproc $NAME
                rm -rf $PIDFILE
                echo -e "\n`date +%a' '%b' '%d' '%H:%M:%S' '%Y` - $NAME has been stopped...\n" >> $LOGFILE
        elif [ -e "$PIDFILE" ]; then
                rm -rf $PIDFILE
                echo -e "\n`date +%a' '%b' '%d' '%H:%M:%S' '%Y` - $NAME pid file deleted...\n" >> $LOGFILE
                killproc $NAME
        else
                killproc $NAME
                echo "$NAME is not running..."
        fi
}

case "$1" in
  start)
        start &
    ;;
  stop)
        stop
    ;;
  status)
        status $NAME
        RETVAL=$?
        ;;
  *)
    echo $"Usage: $0 {start|stop|status}"
    exit 1
    ;;
esac

exit 0

and here is the log file;
Code:
Thu May  9 12:03:17 2013 - myScript has been started...

^[[60G[^[[0;32m  OK  ^[[0;39m]^M#--------------------------------------------------#
# myScript quit due to error, re-running in 15 seconds #
#--------------------------------------------------#

Thu May  9 12:03:33 2013 - myScript has been started...

^[[60G[^[[0;32m  OK  ^[[0;39m]^M#--------------------------------------------------#
# myScript quit due to error, re-running in 15 seconds #
#--------------------------------------------------#

Thu May  9 12:03:48 2013 - myScript has been started...

^[[60G[^[[0;32m  OK  ^[[0;39m]^M#--------------------------------------------------#
# myScript quit due to error, re-running in 15 seconds #
#--------------------------------------------------#

Thu May  9 12:04:04 2013 - myScript has been started...

^[[60G[^[[0;32m  OK  ^[[0;39m]^M#--------------------------------------------------#
# myScript quit due to error, re-running in 15 seconds #
#--------------------------------------------------#

Thu May  9 12:04:19 2013 - myScript has been started...

^[[60G[^[[0;32m  OK  ^[[0;39m]^M#--------------------------------------------------#
# myScript quit due to error, re-running in 15 seconds #
#--------------------------------------------------#

Thu May  9 12:04:35 2013 - myScript has been started...

^[[60G[^[[0;32m  OK  ^[[0;39m]^M#--------------------------------------------------#
# myScript quit due to error, re-running in 15 seconds #
#--------------------------------------------------#


Last edited by azuahaha; 05-17-2013 at 08:09 AM..
# 2  
Old 05-17-2013
It is nice if a daemon has 1 as parent, by a killed parent shell. But a true daemon should not be in an interactive process group or related to a controlling terminal, so I often launched mine with at, crontab (auto restart as a bonus) or an ssh nohup that kills ssh after the nohup, or off an xtern that I then kill. Of course, it you have root you can have init.d or some daemon manager like src launch it for you on boot.

I used to lose my Xserver's mwm from ctrl-c SIGINT on the launching xterm; drove me nuts until I used the first xterm to launch everything and then killed it, making them all orphans, or devoted it to top.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

sed Or Grep Problem OR Terminal Problem?

I don't know if you guys get this problem sometimes at Terminal but I had been having this problem since yesterday :( Maybe I overdid the Terminal. Even the codes that used to work doesn't work anymore. Here is what 's happening: * I wanted to remove lines containing digits so I used this... (25 Replies)
Discussion started by: Nexeu
25 Replies

2. IP Networking

Problem with forwarding emails (SPF problem)

Hi, This is rather a question from a "user" than from a sys admin, but I think this forum is apropriate for the question. I have an adress with automatic email forwarding and for some senders (two hietherto), emails are bouncing. This has really created a lot of problems those two time so I... (0 Replies)
Discussion started by: carwe
0 Replies

3. AIX

AIX OS problem? network problem?

Dear ALL. I installed AIX OS on customer sites. but Only one site is too slow when I connected telnet, ftp.. Ping is too fast. but telnet and FTP is not connected.. of course i check the configuration file on aix but it's normal. Do any Idea?? thanks in advance. - Jun - (3 Replies)
Discussion started by: Jeon Jun Seok
3 Replies

4. UNIX for Dummies Questions & Answers

DHCP problem and eth1 problem

At work I am trying to get this one Linux machine (let's call it ctesgm07) to behave like another Linux machine that we have (let's call it test007). test007 returns the following version info: cat /etc/debian_version: lenny/sid uname -a: Linux test007 2.6.27-7-generic #1 SMP Tue Nov 4... (0 Replies)
Discussion started by: sllinux
0 Replies

5. AIX

user login problem & Files listing problem.

1) when user login to the server the session got colosed. How will resolve? 2) While firing the command ls -l we are not able to see the any files in the director. but over all view the file system using the command df -g it is showing 91% used. what will be the problem? Thanks in advance. (1 Reply)
Discussion started by: pernasivam
1 Replies

6. Solaris

problem in finding a hardware problem

Hi I am right now facing a strange hardware problem. System get booted with the following error: Fatal Error Reset CPU 0000.0000.0000.0003 AFSR 0100.0000.0000.0000 SCE AFAR 0000.07c6.0000.1000 SC Alert: Host System has Reset It happen 4 or 5 times and get the same error every time.I... (8 Replies)
Discussion started by: girish.batra
8 Replies

7. Shell Programming and Scripting

ssh script problem problem

Hi Please help me with the following problem with my script. The following block of code is not repeating in the while loop and exiting after searching for first message. input_file ========== host001-01 host001-02 2008-07-23 13:02:04,651 ConnectionFactory - Setting session state... (2 Replies)
Discussion started by: pcjandyala
2 Replies

8. Shell Programming and Scripting

Daemonizing a bash script

I've no idea how people usually do that. I've check at O'Reilly's bash cookbook, and it talks a little about daemonizing the script. it refers to : 1-Running it in bg with & 2-Redirecting STDIN, STDOUT and STERR 3-Using nohup command to make script not being interrupted by hang up signal... (5 Replies)
Discussion started by: viko
5 Replies

9. Shell Programming and Scripting

problem with dd command or maybe AFS problem

Hi, folks. Sorry for bothering, but maybe someone could help me please. The problem is the following: there is some script that copies files from local file system to AFS. The copying is performed with dd command. The script copies data into some AFS volumes. The problem appeared with one... (0 Replies)
Discussion started by: Anta
0 Replies

10. UNIX for Advanced & Expert Users

SSH Problem auth problem

Hi, Just recently we seem to be getting the following error message relating to SSH when we run the UNIX script in background mode: warning: You have no controlling tty. Cannot read confirmation.^M warning: Authentication failed.^M Disconnected; key exchange or algorithm negotiation... (1 Reply)
Discussion started by: budrito
1 Replies
Login or Register to Ask a Question