wmbusmeters/scripts/install_systemd_service.sh

96 wiersze
2.8 KiB
Bash
Executable File

# Copyright (C) 2021 Fredrik Öhrström (gpl-3.0-or-later)
#
# Create /lib/systemd/system/wmbusmeters.service
#
if [ -f /etc/systemd/system/wmbusmeters.service ]
then
echo "Oups! Found an old wmbusmeters.service here /etc/systemd/system/wmbusmeters.service"
echo "Removing this! Keeping a backup here though $HOME/ancient.wmbusmeters.service"
mv /etc/systemd/system/wmbusmeters.service $HOME/ancient.wmbusmeters.service
fi
if [ -f /etc/udev/rules.d/99-wmbus-usb-serial.rules ]
then
echo "Oups! Found an old udev rule here /etc/udev/rules.d/99-wmbus-usb-serial.rules"
echo "Removing this! Keeping a backup here though $HOME/ancient.99-wmbus-usb-serial.rules"
mv /etc/udev/rules.d/99-wmbus-usb-serial.rules $HOME/ancient.99-wmbus-usb-serial.rules
fi
SYSTEMD_NEEDS_RELOAD=false
mkdir -p "$ROOT"/lib/systemd/system/
OLD_WMBS=~/old.wmbusmeters.service.backup
CURR_WMBS="$ROOT"/lib/systemd/system/wmbusmeters.service
if [ -f $CURR_WMBS ]
then
echo "systemd: backing up $CURR_WMBS to here: $OLD_WMBS"
cp $CURR_WMBS $OLD_WMBS 2>/dev/null
fi
# Create service file for starting daemon without explicit device.
# This means that wmbusmeters will rely on the conf file device setting.
cat <<'EOF' > $CURR_WMBS
[Unit]
Description="wmbusmeters service"
Documentation=https://github.com/wmbusmeters/wmbusmeters
Documentation=man:wmbusmeters(1)
After=network.target
StopWhenUnneeded=false
StartLimitIntervalSec=10
StartLimitInterval=10
StartLimitBurst=3
[Service]
Type=forking
PrivateTmp=yes
User=wmbusmeters
Group=wmbusmeters
Restart=always
RestartSec=1
# Run ExecStartPre with root-permissions
PermissionsStartOnly=true
ExecStartPre=-/bin/mkdir -p /var/lib/wmbusmeters/meter_readings
ExecStartPre=/bin/chown -R wmbusmeters:wmbusmeters /var/lib/wmbusmeters/meter_readings
ExecStartPre=-/bin/mkdir -p /var/log/wmbusmeters
ExecStartPre=/bin/chown -R wmbusmeters:wmbusmeters /var/log/wmbusmeters
ExecStartPre=-/bin/mkdir -p /run/wmbusmeters
ExecStartPre=/bin/chown -R wmbusmeters:wmbusmeters /run/wmbusmeters
ExecStart=/usr/sbin/wmbusmetersd /run/wmbusmeters/wmbusmeters.pid
ExecReload=/bin/kill -HUP $MAINPID
PIDFile=/run/wmbusmeters/wmbusmeters.pid
[Install]
WantedBy=multi-user.target
EOF
if diff $OLD_WMBS $CURR_WMBS 1>/dev/null
then
echo "systemd: no changes to $CURR_WMBS"
else
echo "systemd: updated $CURR_WMBS"
SYSTEMD_NEEDS_RELOAD=true
fi
OLD_WMBAS=~/old.wmbusmeters@.service.backup
CURR_WMBAS="$ROOT"/lib/systemd/system/wmbusmeters@.service
if [ -f $CURR_WMBAS ]
then
echo "systemd: removing $CURR_WMBAS"
echo "systemd: backing up $CURR_WMBAS to here: $OLD_WMBAS"
cp $CURR_WMBAS $OLD_WMBAS 2>/dev/null
rm $CURR_WMBAS
SYSTEMD_NEEDS_RELOAD=true
fi
if [ "$SYSTEMD_NEEDS_RELOAD" = "true" ]
then
echo
echo
echo "You need to reload systemd configuration! Please do:"
echo "sudo systemctl daemon-reload"
fi