Last active
November 21, 2020 17:15
-
-
Save scp93ch/5908666 to your computer and use it in GitHub Desktop.
Init script for an interpreted script.This is particularly useful to get simple services written in Python started at boot time.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
### BEGIN INIT INFO | |
# Provides: myservice | |
# Required-Start: $remote_fs $syslog | |
# Required-Stop: $remote_fs $syslog | |
# Default-Start: 2 3 4 5 | |
# Default-Stop: 0 1 6 | |
# Short-Description: Put a short description of the service here | |
# Description: Put a long description of the service here | |
### END INIT INFO | |
# Change the next 3 lines to suit where you install your script and what you want to call it | |
DIR=/usr/local/bin/myservice | |
DAEMON=$DIR/myservice.py | |
DAEMON_NAME=myservice | |
# Add any command line options for your daemon here | |
DAEMON_OPTS="" | |
# This next line determines what user the script runs as. | |
# Root generally not recommended but necessary if you are using the Raspberry Pi GPIO from Python. | |
DAEMON_USER=root | |
# The process ID of the script when it runs is stored here: | |
PIDFILE=/var/run/$DAEMON_NAME.pid | |
. /lib/lsb/init-functions | |
do_start () { | |
log_daemon_msg "Starting system $DAEMON_NAME daemon" | |
start-stop-daemon --start --background --pidfile $PIDFILE --make-pidfile --user $DAEMON_USER --chuid $DAEMON_USER --startas $DAEMON -- $DAEMON_OPTS | |
log_end_msg $? | |
} | |
do_stop () { | |
log_daemon_msg "Stopping system $DAEMON_NAME daemon" | |
start-stop-daemon --stop --pidfile $PIDFILE --retry 10 | |
log_end_msg $? | |
} | |
case "$1" in | |
start|stop) | |
do_${1} | |
;; | |
restart|reload|force-reload) | |
do_stop | |
do_start | |
;; | |
status) | |
status_of_proc "$DAEMON_NAME" "$DAEMON" && exit 0 || exit $? | |
;; | |
*) | |
echo "Usage: /etc/init.d/$DAEMON_NAME {start|stop|restart|status}" | |
exit 1 | |
;; | |
esac | |
exit 0 |
Thanks, I've added "--chuid" and explained it all in this blog post:
http://blog.scphillips.com/2013/07/getting-a-python-script-to-run-in-the-background-as-a-service-on-boot
Hi scphilips. My service is initialized wit the flag -c <../../../file.conf>
Can you orient me about of how to can I modify this script .sh for it?
Thanks
Hi scphilips, Can I use this script to run another shell script as a daemon?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Note that --user $DAEMON_USER will not make the daemon run as this user, so probably this is a bug. Should be -c.