Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I'would like to run a simple command upon startup on Archlinux (systemd):

nohup fatrat -n &

I've got this working on Debian:

#! /bin/sh
# /etc/init.d/fatratWS

### BEGIN INIT INFO
# Provides: fatratWS
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: fatratWS init script.
# Description: Starts and stops fatrat Web Server services.
### END INIT INFO

#VAR
FATRAT_PID=$(ps aux | awk '/fatrat --nogui/ && !/awk/ && !/nohup/ {print $2}')

# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting script fatratWS"
if [ -z "$FATRAT_PID" ]; then
nohup fatrat --nogui &
echo "Started"
else
echo "fatratWS already started"
fi
;;
stop)
echo "Stopping script fatratWS"
if [ ! -z "$FATRAT_PID" ]; then
kill $FATRAT_PID
fi
echo "OK"
;;
status)
if [ ! -z "$FATRAT_PID" ]; then
echo "The fatratWS is running with PID = "$FATRAT_PID
else
echo "No process found for fatratWS"
fi
;;
*)
echo "Usage: /etc/init.d/fatratWS {start|stop|status}"
exit 1
;;
esac

exit 0

How can I achieve the same on Arch?

I've tried:

[Unit]
Description=Fatrat NoGui Web Access Service

[Service]
ExecStart=/usr/bin/nohup /usr/bin/fatrat -n &
Type=forking

[Install]
WantedBy=multi-user.target

But it fails to start when starting manually (timeout)

share|improve this question

1 Answer 1

up vote 3 down vote accepted

Try this:

[Unit]
Description=Fatrat NoGui Web Access Service
Requires=network.target
After=network.target

[Service]
ExecStart=/usr/bin/fatrat -n
Type=forking

[Install]
WantedBy=multi-user.target
  • I assumed, that a "Web Access Service" needs network, so I added network.target as a requirement.

  • Using nohup is unnecessary because this functionality is provided by systemd itself, same for the '&'.

  • Because we don't use nohup anymore, the type would change to simple, however, the web interface available on the git release won't work unless we make it forking.

  • For more information on systemd service files see the "systemd.service" man page and https://wiki.archlinux.org/index.php/Systemd#Writing_custom_.service_files

  • You might consider to add Restart=always to the [Service] section to get it restarted automatically if it crashes.

  • Put the service file at /etc/systemd/system/fatrat.service and enable it for automatic startup via systemctl enable fatrat.service

share|improve this answer
    
Thanks you, it works! The only difference I had to make was to add User=my_user_name under [Service] section to run the application as my user. This way the application can load its configuration files from /home/my_user_name/.local/share/fatrat/data –  Joudicek Jouda Oct 24 '13 at 18:09

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.