Linux systemd for your Go application

Systemd is a Linux software suite that handles system services (daemon) and timers; it enables you to start, stop and restart your application using systemctl command. It can also start your application during operating systems boot-up sequence.

Note that you will need to have root or sudo privileges for this operation.

To create a systemd unit file, create a service file inside the directory /etc/systemd/system/. The filename must end with .service for example:

/etc/systemd/system/awesome-go-web-application.service

Below is the sample template for a systemd unit file.

# Systemd unit file for example application
[Unit]
Description=Service Description
After=syslog.target network.target

[Service]
Type=simple
Restart=always
RestartSec=30s
User=user
Group=group
WorkingDirectory=/path/to/working-directory
ExecStart=/path/to/working-directory/./golang-application

[Install]
WantedBy=multi-user.target

References

https://wiki.debian.org/systemd

https://access.redhat.com/sites/default/files/attachments/12052018_systemd_6.pdf

Posted in Go

Leave a Reply