Upstart job to systemd for ubuntu 16.04

July 9, 2017 1.6k views
Linux Commands Ubuntu 16.04

This is as simple upstart job which we wrote for starting our application but I am unable to find any good solution to make it for systemD.. If I may create a simple Start and Post Exec command base file, It just gave me errors and nothing work..

I have only hurdles with those basic values as from start to setgid root? how can we write it in SystemD service?

description  "evercam_media"
start on filesystem or runlevel [2345]
stop on runlevel [!2345]
limit nofile 1000000 1000000

respawn
chdir /
setuid root
setgid root

env HOME=/home/root
env LANG=en_US.UTF-8
env LANGUAGE=en_US:en
env LS_ALL=en_US.UTF-8
env ERL_MAX_PORTS=10240


exec watch -n1 '/usr/local/bin/run_evercam_media.sh'

post-stop exec sudo pkill beam

Any help will be wonderful, i have been struggling so long on this

1 comment
1 Answer

This should be a good starting point:

[Unit]
Description=evercam media
After=network-online.target

[Service]
Restart=on-failure

User=root
Group=root

Environment=HOME=/home/root LANG=en_US.UTF-8 LANGUAGE=en_US:en LS_ALL=en_US.UTF-8 ERL_MAX_PORTS=10240

WorkingDirectory=/
ExecStart=/usr/bin/watch -n1 '/usr/local/bin/run_evercam_media.sh'
ExecStopPost=/bin/pkill beam

LimitNOFILE=1000000

[Install]
WantedBy=multi-user.target

The main difference is that systemd requires absolute paths. I noticed that the service is running as root. I would recommend looking into having it run as a regular user unless absolutely necessary :)

Have another answer? Share your knowledge.