systemd/Services
Template:Article summary start Template:Article summary heading Template:Article summary wiki Template:Article summary end
This page is useful to publish systemd service files that are missing in the appropriate package in the repositories. These files can be copied from other distributions or created by yourself.
Contents
- 1 Adsuck
- 2 BOINC Daemon
- 3 Courier-IMAP
- 4 dropbear
- 5 Folding@home SMP
- 6 IPv6 (Hurricane Electric)
- 7 Logmein Hamachi
- 8 pcscd
- 9 Filesystem mounts
- 10 screen
- 11 Static Ethernet network
- 12 Set network interface in promiscuous mode
- 13 tpfand
- 14 truecrypt volume setup
- 15 truecrypt (mount encrypted fs)
- 16 truecrypt (unmount encrypted fs)
- 17 verynice
- 18 VideoLAN 2.0
- 19 Xvfb
- 20 ZNC
- 21 Nexus
- 22 Gitlab
- 23 See also
Adsuck
/etc/systemd/system/adsuck.service
[Unit] Description=Adsuck daemon After=network.target [Service] Type=forking ExecStart=/usr/sbin/adsuck -l 127.0.0.1 -c /var/adsuck -f /resolv.conf /hosts -r /filter ExecStartPost=/bin/sh -c "echo 'nameserver 127.0.0.1' > /etc/resolv.conf" ExecStop=/bin/kill $MAINPID ExecStopPost=/bin/sh -c "cp /var/adsuck/resolv.conf /etc/resolv.conf" ExecReload=/bin/kill -HUP $MAINPID ; /bin/kill -USR1 $MAINPID [Install] WantedBy=multi-user.target
BOINC Daemon
/etc/systemd/system/boinc.service
[Unit] Description=BOINC Daemon [Service] User=boinc Nice=19 ExecStart=/usr/bin/boinc_client --dir /var/lib/boinc --redirectio [Install] WantedBy=multi-user.target
Courier-IMAP
/etc/systemd/system/authdaemond.service
[Unit] Description=Courier Authentification Daemon [Service] Type=forking ExecStart=/usr/sbin/authdaemond start ExecStop=/usr/sbin/authdaemon stop PIDFile=/run/authdaemon/pid [Install] WantedBy=multi-user.target
/etc/systemd/system/courier-imapd.service
[Unit] Description=Courier IMAP Daemon Requires=authdaemond.service After=authdaemond.service [Service] Type=forking EnvironmentFile=/etc/courier-imap/imapd ExecStart=/usr/lib/courier-imap/imapd.rc start ExecStop=/usr/lib/courier-imap/imapd.rc stop PIDFile=/var/run/courier/imapd.pid [Install] WantedBy=multi-user.target
/etc/systemd/system/courier-imapd-ssl.service
[Unit] Description=Courier IMAP Daemon Requires=authdaemond.service After=authdaemond.service [Service] Type=forking EnvironmentFile=/etc/courier-imap/imapd ExecStart=/usr/lib/courier-imap/imapd-ssl.rc start ExecStop=/usr/lib/courier-imap/imapd-ssl.rc stop PIDFile=/var/run/courier/imapd-ssl.pid [Install] WantedBy=multi-user.target
/usr/lib/tmpfiles.d/authdaemond.conf
D /run/authdaemon 0755 courier courier
/usr/lib/tmpfiles.d/courier-imapd.conf
D /run/courier 0755 courier courier
dropbear
/etc/systemd/system/dropbear.service
[Unit] Description=Dropbear SSH server [Service] Type=oneshot ExecStart=/usr/sbin/dropbear -p 22 -d /etc/dropbear/dropbear_dss_host_key -w -P /var/run/dropbear.pid RemainAfterExit=yes [Install] WantedBy=multi-user.target
Folding@home SMP
See the comment on the AUR package. The unit file is copied below for convenience.
/etc/systemd/system/foldingathome-smp.service
[Unit] Description=Folding@home distributed computing client After=network.target [Service] Type=simple WorkingDirectory=/opt/fah-smp ExecStart=/opt/fah-smp/fah6 -smp -verbosity 9 -forceasm [Install] WantedBy=multi-user.target
IPv6 (Hurricane Electric)
/etc/systemd/system/he-ipv6.service
[Unit] Description=he.net IPv6 tunnel After=network.target [Service] Type=oneshot RemainAfterExit=yes ExecStart=/sbin/ip tunnel add he-ipv6 mode sit remote 209.51.161.14 local <local IPv4> ttl 255 ExecStart=/sbin/ip link set he-ipv6 up mtu 1480 ExecStart=/sbin/ip addr add <local IPv6>/64 dev he-ipv6 ExecStart=/sbin/ip -6 route add ::/0 dev he-ipv6 ExecStart=/sbin/ip addr add <public IPv6>/64 dev he-ipv6 ExecStop=/sbin/ip -6 route del ::/0 dev he-ipv6 ExecStop=/sbin/ip link set he-ipv6 down ExecStop=/sbin/ip tunnel del he-ipv6 [Install] WantedBy=multi-user.target
Logmein Hamachi
/etc/systemd/system/hamachi.service
[Unit] Description=Hamachi Daemon After=network.target [Service] Type=forking ExecStart=/opt/logmein-hamachi/bin/hamachid [Install] WantedBy=multi-user.target
pcscd
/etc/systemd/system/pcscd.service
[Unit] Description=PC/SC Smart Card Daemon Requires=pcscd.socket [Service] ExecStart=/usr/sbin/pcscd --foreground --auto-exit ExecReload=/usr/sbin/pcscd --hotplug StandardOutput=syslog [Install] Also=pcscd.socket
/etc/systemd/system/pcscd.socket
[Unit] Description=PC/SC Smart Card Daemon Activation Socket [Socket] ListenStream=/var/run/pcscd/pcscd.comm [Install] WantedBy=sockets.target
Reference:
Filesystem mounts
See: Systemd#Filesystem_mounts
screen
Autostarts screen for the specified user. (e.g. `systemctl enable screen@florian.service`)
/etc/systemd/system/screen@.service
[Unit] Description=screen After=network.target [Service] Type=forking User=%i ExecStart=/usr/bin/screen -dmS autoscreen ExecStop=/usr/bin/screen -S autoscreen -X quit [Install] WantedBy=multi-user.target
Static Ethernet network
This is a custom service file for static Ethernet configurations. For other configurations, see Systemd#Network
/etc/conf.d/network
interface=eth0 address=192.168.0.1 netmask=24 broadcast=192.168.0.255 gateway=192.168.0.254
/etc/systemd/system/network.service
[Unit] Description=Network Connectivity Wants=network.target Before=network.target [Service] Type=oneshot RemainAfterExit=yes EnvironmentFile=/etc/conf.d/network ExecStart=/sbin/ip link set dev ${interface} up ExecStart=/sbin/ip addr add ${address}/${netmask} broadcast ${broadcast} dev ${interface} ExecStart=/sbin/ip route add default via ${gateway} ExecStop=/sbin/ip addr flush dev ${interface} ExecStop=/sbin/ip link set dev ${interface} down [Install] WantedBy=multi-user.target
Set network interface in promiscuous mode
/etc/systemd/system/promiscuous@.service
[Unit] Description=Set %i interface in promiscuous mode [Service] Type=oneshot ExecStart=/usr/sbin/ip link set dev %i promisc on RemainAfterExit=yes [Install] WantedBy=multi-user.target
If you want to enable promiscuous mode on interface eth0
run:
# systemctl enable promiscuous@eth0.service
tpfand
/etc/systemd/system/tpfand.service
[Unit] Description=ThinkPad Fan Control [Service] Type=forking PIDFile=/var/run/tpfand.pid ExecStart=/usr/sbin/tpfand [Install] WantedBy=multi-user.target
truecrypt volume setup
This service employ truecrypt as a mapper only and requires you to create an entry in fstab to mount the mapped & unencrypted device to your desired mountpoint like for instance so:
/etc/fstab
/dev/mapper/truecrypt1 /home/ ext4 defaults 0 2
The 2
means your fs will be fscked regularly.
/usr/lib/systemd/system/truecrypt@.service
[Unit] Description=Truecrypt Setup for %I DefaultDependencies=no Conflicts=umount.target Before=umount.target After=systemd-readahead-collect.service systemd-readahead-replay.service [Service] RemainAfterExit=yes StandardInput=tty-force ExecStart=/usr/bin/truecrypt --filesystem=none %I ExecStop=/usr/bin/truecrypt --filesystem=none -d %I [Install] WantedBy=cryptsetup.target
If your encrypted volume is /dev/sda2
, you would enable the service with this command:
# systemctl enable truecrypt@dev-sda2.service
Before=
. Cheers to dgbaley27 for basically writing this! Improvements welcome!truecrypt (mount encrypted fs)
/etc/systemd/system/multi-user.target/truecrypt-mount.service
[Unit] Description=Mount Truecrypt-encrypted filesystems ConditionFileIsExecutable=/usr/bin/truecrypt #Requires=truecrypt-unmount.service #Before=mpd.service [Service] Type=oneshot ExecStart=/usr/bin/truecrypt -t /dev/sdXY /MOUNTPOINT StandardInput=tty-force RemainAfterExit=yes [Install] WantedBy=multi-user.target #Also=truecrypt-unmount.service
Before=mpd.service
, which takes care that mpd is started after this script. If you also use truecrypt-unmount.service
(see next service) uncomment the Requires=truecrypt-unmount.service
and Also=truecrypt-unmount.service
so it gets installed and activated by systemd automatically when using this script.truecrypt (unmount encrypted fs)
/etc/systemd/system/multi-user/truecrypt-unmount.service
[Unit] Description=Truecrypt unmount on shutdown, poweroff, reboot, system halt Before=local-fs-pre.target #Before=mpd.service ConditionPathExistsGlob=/media/truecrypt* DefaultDependencies=no [Service] Type=oneshot ExecStart=/usr/bin/truecrypt -d TimeoutSec=5 StandardInput=tty [Install] WantedBy=shutdown.target reboot.target halt.target poweroff.target
TimeoutSec=5
with ExecStart=sleep 5
. If you use mpd
, make sure to uncomment Before=mpd.service
to make sure this service is executed after mpd is closed down (different order during the shutdown of processes than during start up!). Script gleaned from tladuke on the forums.verynice
/etc/systemd/system/verynice.service
[Unit] Description=A tool for dynamically adjusting the nice-level of processes [Service] Type=forking PIDFile=/var/run/verynice.pid ExecStart=/usr/sbin/verynice -d /var/run/verynice.pid ExecStop=/bin/kill -15 $MAINPID [Install] WantedBy=multi-user.target
VideoLAN 2.0
Change the User parameter.
/etc/systemd/system/vlc.service
[Unit] Description=VideoOnLAN Service After=network.target [Service] Type=forking User=nobody ExecStart=/usr/bin/cvlc --intf=lua --lua-intf=http --daemon --http-port 8090 Restart=on-abort [Install] WantedBy=multi-user.target
Xvfb
Change the User/Group parameters.
/etc/systemd/system/xinit.service
[Unit] Description=xinit with xvfb After=network.target [Service] User=bitlbee Group=bitlbee ExecStart=/usr/bin/xvfb-run bash %h/.xinitrc [Install] WantedBy=multi-user.target
ZNC
Assuming znc was set up to be run by znc user from /var/lib/znc
as explained in the Znc wiki page.
/etc/systemd/system/znc.service
[Unit] Description=ZNC Daemon After=network.target [Service] ExecStart=/usr/bin/znc -f -d /var/lib/znc User=znc [Install] WantedBy=multi-user.target
Nexus
This is for Sonatype's Nexus OSS Artifact Repository. nexus2AUR is in the AUR.
/etc/systemd/system/nexus.service
[Unit] Description=Nexus OSS Artifact Repository [Service] Type=forking EnvironmentFile=-/etc/conf.d/nexus ExecStart=/opt/nexus/bin/nexus start ExecStop=/opt/nexus/bin/nexus stop ExecReload=/opt/nexus/bin/nexus restart PIDFile=/opt/nexus/run/nexus.pid [Install] WantedBy=multi-user.target
Gitlab
/etc/systemd/system/gitlab.service
[Unit] Description=Self Hosted Git Management Requires=postgresql.service redis.service After=postgresql.service redis.service Wants=postfix.service gitlab-worker.service [Service] Type=forking User=gitlab WorkingDirectory=/home/gitlab/gitlab ExecStart=/home/gitlab/gitlab/script/rails server -d -e production PIDFile=/home/gitlab/gitlab/tmp/pids/server.pid [Install] WantedBy=multi-user.target
/etc/systemd/system/gitlab-worker.service
[Unit] Description=Gitlab Resque Worker Requires=redis.service After=redis.service Wants=postfix.service postgresql.service [Service] Type=forking User=gitlab WorkingDirectory=/home/gitlab/gitlab ExecStart=/bin/bash -c '. ~/.bashrc; . ./resque.sh' ExecStopPost=/usr/bin/rm /home/gitlab/gitlab/tmp/pids/resque_worker.pid PIDFile=/home/gitlab/gitlab/tmp/pids/resque_worker.pid