Archlinuxの起動時に自動起動するカスタムサービスを作成するにはどうすればよいですか?


10

Archlinux(systemd)で起動時に簡単なコマンドを実行したいと思います。

nohup fatrat -n &

私はこれを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

Archで同じことをするにはどうすればよいですか?

私はもう試した:

[Unit]
Description=Fatrat NoGui Web Access Service

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

[Install]
WantedBy=multi-user.target

しかし、手動で開始すると開始に失敗します(タイムアウト)

回答:


14

これを試して:

[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
  • 「Webアクセスサービス」にはネットワークが必要であると想定していたため、要件としてnetwork.targetを追加しました。

  • この機能はsystemd自体によって提供されるため、nohupを使用する必要はありません。

  • nohupはもう使用しないため、タイプはsimpleに変わりますが、gitリリースで使用できるWebインターフェースは、フォークしない限り機能しません。

  • systemdサービスファイルの詳細については、「systemd.service」のマニュアルページとhttps://wiki.archlinux.org/index.php/Systemd#Writing_custom_.service_filesを参照してください。

  • セクションに追加Restart=alwaysして、[Service]クラッシュした場合に自動的に再起動することを検討してください。

  • サービスファイルをに置き、次の/etc/systemd/system/fatrat.service方法で自動起動できるようにします。systemctl enable fatrat.service


ありがとう、うまくいきました!私がしなければならない唯一の違いは、ユーザーとしてアプリケーションを実行するセクションのUser=my_user_name下に追加することでした[Service]。アプリケーションから設定ファイルを読み込むことができますこの方法/home/my_user_name/.local/share/fatrat/data
Joudicek Jouda
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.