Systemd

From CLONWiki
Jump to navigation Jump to search

Creating service in systemd (RHEL7 and up)

NOTES:

systemctl list-units | grep -o '.*\.mount'


DiagGuiServer example

Create file /usr/lib/systemd/system/DiagGuiServer.service with following contents:

[Unit]
Description=DiagGuiServer
#After=network.target
#Requires=autofs.service
#Requires=nfs-utils.service nfs-lock.service autofs.service
#Requires=autofs.service
#After=network.target apps.mount home.mount usr-clas12.mount usr-local.mount
#After=-.mount
#RequiresMountsFor=/usr/clas12/release/1.4.0/coda/Linux_x86_64/bin
#Wants=remote-fs.target
#After=remote-fs.target
#ConditionPathExists=/usr/clas12/release/1.4.0/coda/Linux_x86_64/bin 
[Service]
Type=simple
User=clasrun
Group=onliners
ExecStart=/usr/clas12/release/1.4.0/coda/Linux_x86_64/bin/DiagGuiServer init
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target


NOTE: various commented out settings in [Unit] section were tried to make sure DiagGuiServer service run after everything else is ready (in particular automounts), but nothing really worked; solution was to allow restart on failure in section [Service], so after a couple of failures service DiagGuiServer finally starts.


Create directory /etc/systemd/system/DiagGuiServer.service.d/

Create file /etc/systemd/system/DiagGuiServer.service.d/override.conf with following contents:

[Service]
Environment="LD_LIBRARY_PATH=/apps/gcc/8.3.0/lib:/apps/gcc/8.3.0/lib64:/usr/lib:/usr/local/lib:/usr/local/activemq/lib:/usr/clas12/release/1.4.0/coda/Linux_x86_64/lib:/usr/clas12/release/1.4.0/clon/Linux_x86_64/lib:/usr/clas12/release/1.4.0/clon/lib"
Environment="IPC_HOST=clon00"
Environment="MYSQL_HOST=clondb1"
Environment="EXPID=clasrun"
Environment="CLON_PARMS=/usr/clas12/release/1.4.0/parms"

Following commands can be used to control service:

systemctl start DiagGuiServer
systemctl stop DiagGuiServer
systemctl status DiagGuiServer

To start service at boot time, execute command:

systemctl enable DiagGuiServer

following message should come up on screen:

Created symlink from /etc/systemd/system/default.target.wants/DiagGuiServer.service to /usr/lib/systemd/system/DiagGuiServer.service.