cc-2055: switch to init.d

-fix uninstall scripts
-make daemon script for media-monitor and show-recorder
-create pid file for liquidsoap
-fix airtime-check-system
-make sure all startup scripts are using exec
This commit is contained in:
martin 2011-05-31 18:55:22 -04:00
parent 79e24e5af5
commit 079d9d36b0
14 changed files with 192 additions and 98 deletions

View file

@ -12,6 +12,6 @@ exec 2>&1
export PYTHONPATH=${api_client_path}
# Note the -u when calling python! we need it to get unbuffered binary stdout and stderr
python -u ${media_monitor_path}${media_monitor_script}
exec python -u ${media_monitor_path}${media_monitor_script}
# EOF

View file

@ -0,0 +1,49 @@
#!/bin/bash
USERID=pypo
GROUPID=pypo
NAME=Airtime
DAEMON=/usr/bin/airtime-media-monitor
PIDFILE=/var/run/airtime-media-monitor.pid
start () {
start-stop-daemon --start --background --quiet --chuid $USERID:$GROUPID --make-pidfile --pidfile $PIDFILE --startas $DAEMON
}
stop () {
# Send TERM after 5 seconds, wait at most 30 seconds.
start-stop-daemon --stop --oknodo --retry TERM/5/0/30 --quiet --pidfile $PIDFILE
rm -f $PIDFILE
}
case "${1:-''}" in
'start')
# start commands here
echo -n "Starting $NAME: "
start
echo "Done."
;;
'stop')
# stop commands here
echo -n "Stopping $NAME: "
stop
echo "Done."
;;
'restart')
# restart commands here
echo -n "Restarting $NAME: "
stop
start
echo "Done."
;;
'status')
# status commands here
/usr/bin/airtime-check-system
;;
*) # no parameter specified
echo "Usage: $SELF start|stop|restart|status"
exit 1
;;
esac

View file

@ -72,9 +72,11 @@ try:
sys.exit()
current_script_dir = get_current_script_dir()
print "Checking and removing any existing media monitor processes"
os.system("python %s/media-monitor-uninstall.py 1>/dev/null 2>&1"% current_script_dir)
time.sleep(5)
#print "Checking and removing any existing media monitor processes"
#os.system("python %s/media-monitor-uninstall.py 1>/dev/null 2>&1"% current_script_dir)
#time.sleep(5)
p = Popen("/etc/init.d/airtime-media-monitor stop", shell=True)
sts = os.waitpid(p.pid, 0)[1]
# Create users
create_user("pypo")
@ -93,6 +95,9 @@ try:
print "Creating symbolic links"
os.system("rm -f /usr/bin/airtime-media-monitor")
os.system("ln -s "+config["bin_dir"]+"/airtime-media-monitor /usr/bin/")
print "Installing media-monitor daemon"
shutil.copy(config["bin_dir"]+"/airtime-media-monitor-init-d", "/etc/init.d/airtime-media-monitor")
print "Waiting for processes to start..."
p = Popen("/etc/init.d/airtime-media-monitor start", shell=True)

View file

@ -37,21 +37,17 @@ try:
print 'Error loading config file: ', e
sys.exit()
os.system("python /usr/bin/airtime-media-monitor-stop")
os.system("/etc/init.d/airtime-media-monitor stop")
print "Removing log directories"
remove_path(config["log_dir"])
print "Removing symlinks"
os.system("rm -f /usr/bin/airtime-media-monitor-start")
os.system("rm -f /usr/bin/airtime-media-monitor-stop")
os.system("rm -f /usr/bin/airtime-media-monitor")
print "Removing application files"
remove_path(config["bin_dir"])
print "Removing daemontool script media-monitor"
remove_path("rm -rf /etc/service/media-monitor")
remove_user("pypo")
print "Uninstall complete."
except Exception, e:

View file

@ -14,4 +14,5 @@ export PYTHONPATH=${api_client_path}:$PYTHONPATH
# Note the -u when calling python! we need it to get unbuffered binary stdout and stderr
exec python -u ${pypo_path}${pypo_script}
# EOF

View file

@ -4,17 +4,23 @@ USERID=pypo
GROUPID=pypo
NAME=Airtime
DAEMON=/usr/bin/airtime-playout
PIDFILE=/var/run/airtime.pid
DAEMON0=/usr/bin/airtime-playout
PIDFILE0=/var/run/airtime-playout.pid
DAEMON1=/usr/bin/airtime-liquidsoap
PIDFILE1=/var/run/airtime-liquidsoap.pid
start () {
start-stop-daemon --start --background --quiet --chuid $USERID:$GROUPID --make-pidfile --pidfile $PIDFILE --startas $DAEMON
start-stop-daemon --start --background --quiet --chuid $USERID:$GROUPID --make-pidfile --pidfile $PIDFILE0 --startas $DAEMON0
start-stop-daemon --start --background --quiet --chuid $USERID:$GROUPID --make-pidfile --pidfile $PIDFILE1 --startas $DAEMON1
}
stop () {
# Send TERM after 5 seconds, wait at most 30 seconds.
start-stop-daemon --stop --oknodo --retry TERM/5/0/30 --quiet --pidfile $PIDFILE
rm -f $PIDFILE
start-stop-daemon --stop --oknodo --retry TERM/5/0/30 --quiet --pidfile $PIDFILE0
start-stop-daemon --stop --oknodo --retry TERM/5/0/30 --quiet --pidfile $PIDFILE1
rm -f $PIDFILE0
rm -f $PIDFILE1
}

View file

@ -89,9 +89,11 @@ try:
sys.exit()
current_script_dir = get_current_script_dir()
print "Checking and removing any existing pypo processes"
os.system("python %s/pypo-uninstall.py 1>/dev/null 2>&1"% current_script_dir)
time.sleep(5)
#print "Checking and removing any existing pypo processes"
#os.system("python %s/pypo-uninstall.py 1>/dev/null 2>&1"% current_script_dir)
#time.sleep(5)
p = Popen("/etc/init.d/airtime-playout stop", shell=True)
sts = os.waitpid(p.pid, 0)[1]
# Create users
create_user("pypo")

View file

@ -37,30 +37,17 @@ try:
print 'Error loading config file: ', e
sys.exit()
os.system("python /usr/bin/airtime-playout-stop")
os.system("/etc/init.d/airtime-playout stop")
print "Removing cache directories"
remove_path(config["cache_base_dir"])
print "Removing symlinks"
os.system("rm -f /usr/bin/airtime-playout-start")
os.system("rm -f /usr/bin/airtime-playout-stop")
os.system("rm -f /usr/bin/airtime-playout")
print "Removing pypo files"
remove_path(config["bin_dir"])
print "Removing daemontool script pypo"
remove_path("/etc/service/pypo")
if os.path.exists("/etc/service/pypo-fetch"):
remove_path("/etc/service/pypo-fetch")
if os.path.exists("/etc/service/pypo-push"):
remove_path("/etc/service/pypo-push")
print "Removing daemontool script pypo-liquidsoap"
remove_path("/etc/service/pypo-liquidsoap")
remove_user("pypo")
print "Pypo uninstall complete."
except Exception, e:

View file

@ -16,10 +16,11 @@ exec 2>&1
export PYTHONPATH=${api_client_path}
su ${recorder_user} -c "python -u ${recorder_path}${recorder_script}"
#this line works: su ${recorder_user} -c "python -u ${recorder_path}${recorder_script}"
exec python -u ${recorder_path}${recorder_script}
#ecasound does not work when recorder script is called with setuidgid.
#setuidgid ${recorder_user} python -u ${recorder_path}${recorder_script}
# EOF

View file

@ -0,0 +1,49 @@
#!/bin/bash
USERID=pypo
GROUPID=pypo
NAME=Airtime
DAEMON=/usr/bin/airtime-show-recorder
PIDFILE=/var/run/airtime-show-recorder.pid
start () {
start-stop-daemon --start --background --quiet --chuid $USERID:$GROUPID --make-pidfile --pidfile $PIDFILE --startas $DAEMON
}
stop () {
# Send TERM after 5 seconds, wait at most 30 seconds.
start-stop-daemon --stop --oknodo --retry TERM/5/0/30 --quiet --pidfile $PIDFILE
rm -f $PIDFILE
}
case "${1:-''}" in
'start')
# start commands here
echo -n "Starting $NAME: "
start
echo "Done."
;;
'stop')
# stop commands here
echo -n "Stopping $NAME: "
stop
echo "Done."
;;
'restart')
# restart commands here
echo -n "Restarting $NAME: "
stop
start
echo "Done."
;;
'status')
# status commands here
/usr/bin/airtime-check-system
;;
*) # no parameter specified
echo "Usage: $SELF start|stop|restart|status"
exit 1
;;
esac

View file

@ -70,9 +70,11 @@ try:
sys.exit()
current_script_dir = get_current_script_dir()
print "Checking and removing any existing recorder processes"
os.system("python %s/recorder-uninstall.py 1>/dev/null 2>&1"% current_script_dir)
time.sleep(5)
#print "Checking and removing any existing recorder processes"
#os.system("python %s/recorder-uninstall.py 1>/dev/null 2>&1"% current_script_dir)
#time.sleep(5)
p = Popen("/etc/init.d/airtime-show-recorder stop", shell=True)
sts = os.waitpid(p.pid, 0)[1]
# Create users
create_user("pypo")
@ -95,7 +97,10 @@ try:
print "Creating symbolic links"
os.system("rm -f /usr/bin/airtime-show-recorder")
os.system("ln -s "+config["bin_dir"]+"/airtime-show-recorder /usr/bin/")
os.system("ln -s "+config["bin_dir"]+"/airtime-show-recorder /usr/bin/")
print "Installing show-recorder daemon"
shutil.copy(config["bin_dir"]+"/airtime-show-recorder-init-d", "/etc/init.d/airtime-show-recorder")
print "Waiting for processes to start..."
p = Popen("/etc/init.d/airtime-show-recorder start", shell=True)

View file

@ -37,14 +37,13 @@ try:
print 'Error loading config file: ', e
sys.exit()
os.system("python /usr/bin/airtime-show-recorder-stop")
os.system("/etc/init.d/airtime-show-recorder stop")
print "Removing log directories"
remove_path(config["log_dir"])
print "Removing symlinks"
os.system("rm -f /usr/bin/airtime-show-recorder-start")
os.system("rm -f /usr/bin/airtime-show-recorder-stop")
os.system("rm -f /usr/bin/airtime-show-recorder")
print "Removing application files"
remove_path(config["bin_dir"])
@ -52,9 +51,6 @@ try:
print "Removing media files"
remove_path(config["base_recorded_files"])
print "Removing daemontool script recorder"
remove_path("rm -rf /etc/service/recorder")
remove_user("pypo")
print "Uninstall complete."
except Exception, e: