だいたい/etc/systemd/system/
配下に置く。
# 一般的設定
[Unit]
# いわゆる説明文。statusとかで出てくる。
Description=Template Unit File
# このユニットが起動する前に起動すべきもの スペースで複数指定可能 一個でもコケたらだめ
After=network.target
# サービス設定
[Service]
# 実行ユーザ/グループ指定
# User=
# Group=
# 起動方法の指定
# simple - 起動コマンド実行で起動完了(正常処理完了)とする
# forking - 起動コマンドの終了で起動完了(正常処理完了)とする
# プロセスの追跡にPIDFileの設定が必要みたい。
Type=simple
# Type=fortking時に監視するプロセスのPIDファイルパス
# PIDFile
# 起動時に実行するコマンド マイクラ鯖閉じる時にお知らせsayコマンドとか。
# ExecStart=
# 終了時に実行するコマンド
# ExecStop=
# 再起動時に呼ばれるコマンド... restartコマンド実行時に呼ばれる?
# ExecReload=
# 起動結果判定に関係ない事前コマンド
# ExecStartPre=
# 起動結果判定に関係ない事後コマンド
# ExecStartPost=
# プロセス停止時の再起動条件
# always - 常に再起動する
# no - 再起動しない
# on-success - 終了コードが0で再起動
# on-failure - 終了コードが0**以外**で再起動
# Restart=
# 作業ディレクトリ指定
# WorkingDirectory=
# インストール(サービス起動時)設定
[Install]
# サービス起動時に所属するサービス JavaでいうObjectみたいな全ての元凶がdefault.target。
# ユーザレベルではmulti-user.targetは使えないらしいのでdefault.targetを使うらしい。らしい。
WantedBy=multi-user.target
# WantedBy=default.target
[Unit]
Description=Template Unit File
After=networking.service
[Service]
Type=simple
ExecStart=# ここにコマンドを入力 #
Restart=no
[Install]
WantedBy=multi-user.target
Afterのサービス指定にネットワークサービスを指定する。
networking.service
の場合もあればnetwork.target
の場合もあり。OSによって異なるので要確認。そらそうだが罠過ぎる。