Persistently starting your application from the Native Bash Shell.

Your application should have a startup bash script that gets installed in /etc/init.d/. This startup bash script should have the following general format :

  • Install your application startup bash script that you created above into /etc/init.d/
  • Run your application with /etc/init.d/ start
  • Run chkconfig --add
  • Run chkconfig --level 3 on. init runlevel 3 is the standard multi-user runlevel in Open NX-OS.
  • Verify that your application is scheduled to run on level 3 by running chkconfig --list and confirm that level 3 is set to on

Verify that your application is listed in /etc/rc3.d. You should see something similar to the following example, where there is an 'S' followed by a number, followed by your application name (tcollector in this example), and a link to your bash startup script in ../init.d/:

bash-4.2# ls -l /etc/rc3.d/tcollector  
lrwxrwxrwx 1 root root 20 Sep 25 22:56 /etc/rc3.d/S15tcollector -> ../init.d/tcollector  
bash-4.2#  

Full Example: Daemonizing an Application

bash-4.2# cat /etc/init.d/hello.sh  
#!/bin/bash  
PIDFILE=/tmp/hello.pid  
OUTPUTFILE=/tmp/hello  
echo $$ > $PIDFILE  
rm -f $OUTPUTFILE  

while true  
do  
   echo $(date) >> $OUTPUTFILE  
   echo 'Hello World' >> $OUTPUTFILE  
   sleep 10  
done  
bash-4.2#  
bash-4.2#  
bash-4.2# cat /etc/init.d/hello  

#!/bin/bash  
#  
# hello Trivial "hello world" example Third Party App  
#  
# chkconfig: 2345 15 85  
# description: Trivial example Third Party App  
#  
### BEGIN INIT INFO  
# Provides: hello  
# Required-Start: $local_fs $remote_fs $network $named  
# Required-Stop: $local_fs $remote_fs $network  
# Description: Trivial example Third Party App  
### END INIT INFO  

PIDFILE=/tmp/hello.pid  

# See how we were called.  
case "$1" in  
start)  
   /etc/init.d/hello.sh &  
   RETVAL=$?  
;;  
stop)  
   kill -9 `cat $PIDFILE`  
   RETVAL=$?  
;;  
status)  
    ps -p `cat $PIDFILE`  
    RETVAL=$?  
;;  
restart|force-reload|reload)  
   kill -9 `cat $PIDFILE`  
   /etc/init.d/hello.sh &  
   RETVAL=$?  
;;  
*)  
echo $"Usage: $prog {start|stop|status|restart|force-reload}"  
RETVAL=2  
esac  
exit $RETVAL  
bash-4.2#  
bash-4.2# chkconfig --add hello  
bash-4.2# chkconfig --level 3 hello on  
bash-4.2# chkconfig --list hello  
hello           0:off   1:off   2:on    3:on    4:on    5:on    6:off
bash-4.2# ls -al /etc/rc3.d/*hello*  
lrwxrwxrwx 1 root root 15 Sep 27 18:00 /etc/rc3.d/S15hello -> ../init.d/hello  
bash-4.2#  
bash-4.2# reboot