This tutorial (create a new service with systemd) describes the steps to follow to turn a program into a systemd service that can be started automatically during system startup. For our example, we will create a service to start the daemon Deluge start ( deluged ), but it can be applied to any program.
Page Contents
Prerequisites
- Have the administrative rights
- Knowing how to use the terminal
How to create a new service with systemd
Creating a program encapsulating script
Deluged does not support stopping or stimulus parameters, we need to create a script that will do that. We can store the script in / usr / local / bin
sudo cat> /usr/local/bin/deluge.sh
Then paste the following code:
#! / bin / bash
# /usr/local/bin/deluge.sh
#
function d_start ( )
{
echo "Deluge: starting service"
deluged --pidfile = / tmp / deluge.pid
sleep 5
echo "PID is $ (cat /tmp/deluge.pid) "
}
function d_stop ( )
{
echo "Deluge: stopping Service (PID = $ (cat /tmp/deluge.pid) )"
kill $ ( cat / tmp / deluge.pid )
rm / tmp / deluge.pid
}
function d_status ( )
{
ps -ef | grep deluged | grep -v grep
echo "PID indicate indication file $ (cat /tmp/deluge.pid 2> / dev / null) "
}
# Some Things That run always
touch / var / lock / deluge
# Management instructions of the service
box "$ 1" in
start )
d_start
;;
Stop )
d_stop
;;
Reload )
d_stop
sleep 1
d_start
;;
Status )
d_status
;;
* )
Echo "Usage: $ 0 {start | stop | reload | status}"
exit 1
;;
esac
exit 0
Create the service file
In Systemd, services are defined in files tickets · located in / etc / systemd / system / .
Create a service package for our program:
sudo cat> /etc/systemd/system/deluge.service
Then paste the following code:
[Unit] Description = Deluge daemon After network.target = auditd.service [Service] Type = forking ExecStart = / usr / local / bin / start deluge.sh ExecStop = / usr / local / bin / stop deluge.sh ExecReload = / usr / local / bin / reload deluge.sh [Install] WantedBy = multi-user.target
Service Installation
We must now reload the list of services:
sudo systemctl daemon reload
Then activate the launch of the service at boot:
sudo systemctl enable deluge
Key services management commands
For reference, the following commands to manage the service:
In our example, <service> == deluge
systemctl sudo <command></command>
| order | Description |
|---|---|
| start | Start Service |
| stop | Stop Service |
| status | Service Status |
| is-enabled | Whether the service is activated at boot |
| enable | Active start the service |
| disable | Disables the startup service |
Conclusion
Please note, services are launched by root , so if you have already configured the program with another user, it will:
- either copy the configuration to
root, - or point the service to the proper configuration (for
delugedthere is an option-config)
So, it remains only to test that everything is working by running the service:
sudo systemctl start deluge
If everything can restart the machine to check that the service starts automatically:
sudo reboot
