だいたい/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によって異なるので要確認。そらそうだが罠過ぎる。

参考

systemd のユニットファイルの作り方

Systemd メモ書き - Qiita