Como criar um serviço personalizado que será iniciado automaticamente na inicialização no Archlinux?

9

Eu gostaria de executar um comando simples na inicialização do Archlinux (systemd):

nohup fatrat -n &

Eu tenho esse trabalho no 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

Como posso conseguir o mesmo no Arch?

Eu tentei:

[Unit]
Description=Fatrat NoGui Web Access Service

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

[Install]
WantedBy=multi-user.target

Mas falha ao iniciar ao iniciar manualmente (tempo limite)

    
por Joudicek Jouda 23.10.2013 / 02:50

1 resposta

13

Tente isto:

[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
  • Presumi que um "Serviço de Acesso à Web" precisa de rede, por isso adicionei network.target como um requisito.

  • O uso de nohup é desnecessário porque essa funcionalidade é fornecida pelo próprio systemd, mesmo para o '&'.

  • Como não usamos mais o nohup, o tipo mudaria para simples, no entanto, a interface da web disponível na liberação do git não funcionará a menos que seja feita uma bifurcação.

  • Para obter mais informações sobre os arquivos de serviço do systemd, consulte a página do manual "systemd.service" e o link

  • Você pode considerar adicionar Restart=always à seção [Service] para recuperá-lo automaticamente se ele falhar.

  • Coloque o arquivo de serviço em /etc/systemd/system/fatrat.service e ative-o para inicialização automática via systemctl enable fatrat.service

por 24.10.2013 / 15:51