Linux 起動時に tmux をバックグラウンドで起動しサーバーを走らせておく
Linux OS を起動したときに、systemd のサービスのように自動起動して、常駐するサーバーを走らせたかった。
適当にウェブ検索しただけだと出てこなかったので、備忘録としてやり方をまとめておく。
service.sh の作成
tmux のセッションを起動するコマンドを記した service.sh を作成する。
hoge:サーバーを起動するコマンド/path/to/working-directory:実行ディレクトリへのパスwindow-name:tmux のウィンドウの名前(タブみたいなやつ)session-name:tmux のセッションの名前(左下に来るやつ)
/usr/bin/tmux new-session -d -c /path/to/working-directory -n window-name -s session-name 'hoge'service.sh は適当な場所に、パーミッション 775 等で保存しておく。
systemd サービスファイルの作成
OS 起動時に service.sh を実行して、tmux をバックグラウンドで起動しサーバーを走らせるサービスファイルを作る。
以下の内容のファイルを、/etc/systemd/system/hoge.service におく( hoge の部分は適当な名前に )
Hoge:サービスの名前(適当につける)/path/to/service.sh:先ほど作ったservice.shへのパスfoo:実行ユーザーの名前
[Unit]
Description=Hoge
After=network.service
[Service]
Type=forking
# Restart=always
WorkingDirectory=/path/to/working-directory
ExecStart=/bin/bash /path/to/service.sh
User=foo
Group=foo
[Install]
WantedBy=multi-user.targetサービスの有効化
以下のコマンドで、サービスを有効化する
sudo systemctl daemon-reload
sudo systemctl enable hoge.service
sudo systemctl start hoge.service
sudo systemctl status hoge.serviceここまでやって、tmux ls を実行した際に、新たなセッションができていたら、ひとまず tmux の起動は成功。tmux a -t session-name を実行して、サーバーが動作していれば成功。


