Last active
August 29, 2015 14:00
-
-
Save katanacrimson/10f095f081385e3f0b16 to your computer and use it in GitHub Desktop.
Compare and contrast: sysvinit versus systemd
This file contains hidden or 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
[Unit] | |
Description=Music Player Daemon | |
After=sound.target | |
[Service] | |
ExecStart=@prefix@/bin/mpd --no-daemon | |
[Install] | |
WantedBy=multi-user.target |
This file contains hidden or 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: mpd | |
# Required-Start: $local_fs $remote_fs | |
# Required-Stop: $local_fs $remote_fs | |
# Should-Start: autofs $network $named alsa-utils pulseaudio avahi-daemon | |
# Should-Stop: autofs $network $named alsa-utils pulseaudio avahi-daemon | |
# Default-Start: 2 3 4 5 | |
# Default-Stop: 0 1 6 | |
# Short-Description: Music Player Daemon | |
# Description: Start the Music Player Daemon (MPD) service | |
# for network access to the local audio queue. | |
### END INIT INFO | |
. /lib/lsb/init-functions | |
PATH=/sbin:/bin:/usr/sbin:/usr/bin | |
NAME=mpd | |
DESC="Music Player Daemon" | |
DAEMON=/usr/bin/mpd | |
MPDCONF=/etc/mpd.conf | |
START_MPD=true | |
# Exit if the package is not installed | |
[ -x "$DAEMON" ] || exit 0 | |
# Read configuration variable file if it is present | |
[ -r /etc/default/$NAME ] && . /etc/default/$NAME | |
if [ -n "$MPD_DEBUG" ]; then | |
set -x | |
MPD_OPTS=--verbose | |
fi | |
DBFILE=$(sed -n 's/^[[:space:]]*db_file[[:space:]]*"\?\([^"]*\)\"\?/\1/p' $MPDCONF) | |
PIDFILE=$(sed -n 's/^[[:space:]]*pid_file[[:space:]]*"\?\([^"]*\)\"\?/\1/p' $MPDCONF) | |
mpd_start () { | |
if [ "$START_MPD" != "true" ]; then | |
log_action_msg "Not starting MPD: disabled by /etc/default/$NAME". | |
exit 0 | |
fi | |
log_daemon_msg "Starting $DESC" "$NAME" | |
if [ -z "$PIDFILE" -o -z "$DBFILE" ]; then | |
log_failure_msg \ | |
"$MPDCONF must have db_file and pid_file set; cannot start daemon." | |
exit 1 | |
fi | |
PIDDIR=$(dirname "$PIDFILE") | |
if [ ! -d "$PIDDIR" ]; then | |
mkdir -m 0755 $PIDDIR | |
if dpkg-statoverride --list --quiet /run/mpd > /dev/null; then | |
# if dpkg-statoverride is used update it with permissions there | |
dpkg-statoverride --force --quiet --update --add $( dpkg-statoverride --list --quiet /run/mpd ) 2> /dev/null | |
else | |
# use defaults | |
chown mpd:audio $PIDDIR | |
fi | |
fi | |
start-stop-daemon --start --quiet --oknodo --pidfile "$PIDFILE" \ | |
--exec "$DAEMON" -- $MPD_OPTS "$MPDCONF" | |
log_end_msg $? | |
} | |
mpd_stop () { | |
if [ -z "$PIDFILE" ]; then | |
log_failure_msg \ | |
"$MPDCONF must have pid_file set; cannot stop daemon." | |
exit 1 | |
fi | |
log_daemon_msg "Stopping $DESC" "$NAME" | |
start-stop-daemon --stop --quiet --oknodo --retry 5 --pidfile "$PIDFILE" \ | |
--exec $DAEMON | |
log_end_msg $? | |
} | |
# note to self: don't call the non-standard args for this in | |
# {post,pre}{inst,rm} scripts since users are not forced to upgrade | |
# /etc/init.d/mpd when mpd is updated | |
case "$1" in | |
start) | |
mpd_start | |
;; | |
stop) | |
mpd_stop | |
;; | |
status) | |
status_of_proc -p $PIDFILE $DAEMON $NAME | |
;; | |
restart|force-reload) | |
mpd_stop | |
mpd_start | |
;; | |
force-start) | |
mpd_start | |
;; | |
force-restart) | |
mpd_stop | |
mpd_start | |
;; | |
force-reload) | |
mpd_stop | |
mpd_start | |
;; | |
*) | |
echo "Usage: $0 {start|stop|restart|force-reload}" | |
exit 2 | |
;; | |
esac |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment