起動時に一般ユーザーでtmuxを起動させる
マイクラサーバーでマシンの起動時にtmuxセッションを「一般ユーザー」で動かそうとして悪戦苦闘した
とりあえずやったこと
systemdのサービスを作成
code:ini
Unit
Description=tmux session for minecraft
After=network.target
Service
Type=oneshot
User=tekkamelon
Environment="TERM=xterm-256color" "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" "HOME=/home/tekkamelon"
ExecStart=/usr/local/bin/start-tmux.sh
ExecStop=/usr/bin/tmux kill-session -t minecraft
RemainAfterExit=yes
Restart=on-failure
RestartSec=5
Install
WantedBy=multi-tekkamelon.target
サービスで動かすスクリプトを作成
code:sh
#!/bin/bash
set -x
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export TERM=xterm-256color
export HOME=/home/tekkamelon
# tmuxを起動
/usr/bin/tmux start-server
# セッションを作成
/usr/bin/tmux new-session -d -s minecraft 2>> /tmp/tmux-mysession-error.log
/usr/bin/tmux new-session -d -s bot
/usr/bin/tmux new-session -d -s edit
# マインクラフトサーバーのセッションでの作業ディレクトリを設定
tmux send-keys -t minecraft "cd /home/tekkamelon/Minecraft" C-m
# discord botを起動
tmux send-keys -t bot "mc_discord_bot.py" C-m
exit 0
参考
https://grok.com/share/c2hhcmQtMg%3D%3D_31a96b3d-208e-48a6-9a66-c097f2ecd9e7
#systemd #シェルスクリプト