Linux administrators mostly face some cases where they need to run a script as a service. This includes some custom monitoring scripts to trigger some failover jobs.
Here we see how we can run a script as a service in the centos server.
[[email protected] ~]# vim /opt/devopstree.sh [[email protected] ~]# cat /opt/devopstree.sh while true; do echo "Hello world" > /var/log/helloworld.log sleep 60s done [[email protected] ~]#
To run this script as a service, all we need to do is create a systemd service file under /etc/systemd/system/ directory,
[[email protected] ~]# vim /etc/systemd/system/helloworld.service [[email protected] ~]# [[email protected] ~]# cat /etc/systemd/system/helloworld.service [Unit] Description=Hello World Requires=network-online.target After=network-online.target ConditionFileNotEmpty=/opt/devopstree.sh [Service] EnvironmentFile=/etc/sysconfig/helloworld Environment=GOMAXPROCS=2 Restart=on-failure ExecStart=/bin/bash /opt/devopstree.sh StandardOutput=/var/log/helloworld.log StandardError=/var/log/helloworld.log LimitMEMLOCK=infinity ExecReload=/bin/kill -HUP $MAINPID KillSignal=SIGTERM [Install] WantedBy=multi-user.target [[email protected] ~]#
Once you saved this file your script can be started as a service. You can just start it as a normal service.
You can even enable this service to run in boot time,
[[email protected] ~]# systemctl enable helloworld.service Created symlink from /etc/systemd/system/multi-user.target.wants/helloworld.service to /etc/systemd/system/helloworld.service. [[email protected] ~]# [[email protected] ~]# systemctl is-enabled helloworld.service enabled [[email protected] ~]#
That’s It. Now our script is running a service.
Also, we can use setsid command to run a script as a service,
setsid /opt/devopstree.sh >/var/log/helloworld.log 2>&1 < /dev/null &
But systems service file is the best way to do this. Which way you prefer, leave your comments below.