A systemd status update
A systemd status update
Posted Aug 24, 2010 1:00 UTC (Tue) by rahulsundaram (subscriber, #21946)In reply to: A systemd status update by jond
Parent article: A systemd status update
NetworkManager.service file for systemd
----------------------------------------
[Unit]
Description=Network Manager
After=syslog.target
[Service]
Type=dbus
BusName=org.freedesktop.NetworkManager
ExecStart=/usr/sbin/NetworkManager --no-daemon
[Install]
WantedBy=network.target multi-user.target
Alias=dbus-org.freedesktop.NetworkManager.service
----
The equivalent sysvinit script is:
-----------------------------------
#!/bin/sh
#
# NetworkManager: NetworkManager daemon
#
# chkconfig: - 23 84
# description: This is a daemon for automatically switching network \
# connections to the best available connection.
#
# processname: NetworkManager
# pidfile: /var/run/NetworkManager/NetworkManager.pid
#
### BEGIN INIT INFO
# Provides: network_manager $network
# Required-Start: messagebus
# Required-Stop: messagebus
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop NetworkManager
# Description: NetworkManager is a tool for easily managing network connections
### END INIT INFO
prefix=/usr
exec_prefix=/usr
sbindir=/usr/sbin
NETWORKMANAGER_BIN=${sbindir}/NetworkManager
# Sanity checks.
[ -x $NETWORKMANAGER_BIN ] || exit 1
# Source function library.
. /etc/rc.d/init.d/functions
# Source network configuration
. /etc/sysconfig/network
# so we can rearrange this easily
processname=NetworkManager
servicename=NetworkManager
pidfile=/var/run/NetworkManager/NetworkManager.pid
RETVAL=0
start()
{
echo -n $"Setting network parameters... "
sysctl -e -p /etc/sysctl.conf >/dev/null 2>&1
success
echo
echo -n $"Starting NetworkManager daemon: "
daemon --pidfile $pidfile --check $servicename $processname --pid-file=$pidfile
RETVAL=$?
echo
if [ -n "${NETWORKWAIT}" ]; then
[ -z "${LINKDELAY}" ] && LINKDELAY=10
echo -n $"Waiting for network..."
nm-online -q --timeout=$LINKDELAY || nm-online -q -x --timeout=30
[ "$?" = "0" ] && success "network startup" || failure "network startup"
echo
[ -n "${NETWORKDELAY}" ] && /bin/sleep ${NETWORKDELAY}
fi
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$servicename
}
stop()
{
echo -n $"Stopping NetworkManager daemon: "
killproc -p $pidfile $servicename
RETVAL=$?
echo
if [ $RETVAL -eq 0 ]; then
rm -f /var/lock/subsys/$servicename
rm -f $pidfile
fi
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status -p $pidfile $processname
RETVAL=$?
;;
restart)
stop
start
;;
condrestart)
if [ -f /var/lock/subsys/$servicename ]; then
stop
start
fi
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart}"
;;
esac
exit $RETVAL
Posted Aug 24, 2010 5:53 UTC (Tue)
by rvfh (guest, #31018)
[Link]
Posted Aug 24, 2010 6:04 UTC (Tue)
by Kamilion (subscriber, #42576)
[Link]
# /etc/init/nginx.conf
pre-start exec /usr/sbin/nginx -t
expect fork
# /etc/init/php-fastcgi.conf
expect fork
Pretty simple; How would this look as two systemd units?
Posted Aug 24, 2010 11:41 UTC (Tue)
by sorpigal (guest, #36106)
[Link] (1 responses)
The value of init scripts is that I can know for sure what happens at init time because I can read the source and it's in a format every sysadmin is familiar with. I like a lot of things about systemd, but trying to kill shell scripts during init is not one of them. If performance gains are not really the goal, as someone said, and moving away from shell scripts didn't gain you much anyway, then why do it? It seems obviously detrimental to me, no matter what the benefits are.
Posted Aug 24, 2010 13:01 UTC (Tue)
by rahulsundaram (subscriber, #21946)
[Link]
A systemd status update
A systemd status update
# nginx - starts the nginx webserver
start on (net-device-up and local-filesystems)
stop on runlevel [016]
respawn
exec /usr/sbin/nginx
# php-fastcgi - starts php-cgi as an external FASTCGI process
start on (net-device-up and local-filesystems)
stop on runlevel [!2345]
respawn
exec /usr/bin/sudo -u www-data PHP_FCGI_CHILDREN=2 PHP_FCGI_MAX_REQUESTS=25 /usr/bin/php-cgi -q -b /tmp/php-fastcgi.socket
(Feel free to specify better start/stop criteria)
A systemd status update
A systemd status update