在以使用者(非 root)身分登入之前在啟動時建立 tmux 會話

在以使用者(非 root)身分登入之前在啟動時建立 tmux 會話

我在家裡為我的朋友託管了一個小型的 Minecraft 伺服器,為了讓我的事情變得更容易,我想讓它當我打開用作伺服器的電腦時,自動啟動 Minecraft 伺服器。問題是我使用 tmux 能夠在需要時管理伺服器。為此,我有這個腳本:

#!/bin/bash

SESSION="server"
SESSIONEXISTS=$(tmux list-sessions | grep -w "$SESSION")

if [ "$SESSIONEXISTS" = "" ]
then

  tmux new-session -d -s "$SESSION" -d -x "$(tput cols)" -y "$(tput lines)"

  tmux rename-window -t 0 'mc'
  tmux send-keys -t 'mc' 'cd magma-1.18.2-40.2.10 && ./run.sh && sudo shutdown now' C-m
  tmux splitw -v

  tmux send-keys -t 'mc' 'glances' C-m
  tmux select-pane -t 0
  tmux splitw -h

  tmux send-keys -t 'mc' 'ngrok start --all' C-m

  tmux select-pane -t 0

fi

tmux attach-session -t "$SESSION":0

我嘗試使用 cron 但沒有成功:

@reboot bash /home/fpp/startup.sh

它只是不會啟動 tmux 會話。

我還嘗試過使用 systemd 單元:[Unit]

Description=mcnrelated.service

After=default.target

[Service]

ExecStart=bash /home/fpp/startup.sh

[Install]

WantedBy=default.target

但啟動時,我發現該服務因錯誤而未啟動。

最後一個選項,我嘗試使用 rc.local:

#!/bin/bash
sudo su -c "./home/fpp/startup.sh" -s /bin/sh fpp
exit 0

但同樣,沒有啟動 tmux 會話。

這個問題可能與 tmux 有關嗎?還是我做錯了什麼?

編輯:要走的路是使用systemd。

在與 ChatGPT 聊了很多之後,我發現在我的腳本中,我用來tput獲取終端行和列。問題在於,當它作為服務運行時,它不會傳回值,因為它不在終端中運行,並且導致腳本失敗。因此,我切換到 .tmux.conf 文件,這樣我就可以調用tmux -t .tmux.conf,這樣我就可以避免使用tput.

另外,正如 ChatGPT 所建議的,我現在使用用戶級 systemd 單元:

[Unit]
Description=Launch Minecraft Server and Related Services
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/bin/tmux -u -f /home/fpp/tmux-config/tmux.conf
RemainAfterExit=true

[Install]
WantedBy=default.target

現在的問題是 tmux 抱怨沒有終端可以打開:

fpp@fpp-server:~$ systemctl --user status mcnrelated.service
× mcnrelated.service - Launch Minecraft Server and Related Services
     Loaded: loaded (/home/fpp/.config/systemd/user/mcnrelated.service; enabled; preset: enabled)
     Active: failed (Result: exit-code) since Thu 2023-09-21 11:42:09 -03; 8min ago
    Process: 1319 ExecStart=/usr/bin/tmux -u -f /home/fpp/.tmux.conf (code=exited, status=1/FAILURE)
   Main PID: 1319 (code=exited, status=1/FAILURE)
        CPU: 37ms

sep 21 11:42:09 fpp-server systemd[550]: Starting mcnrelated.service - Launch Minecraft Server and Related Services...
sep 21 11:42:09 fpp-server tmux[1319]: open terminal failed: not a terminal
sep 21 11:42:09 fpp-server systemd[550]: mcnrelated.service: Main process exited, code=exited, status=1/FAILURE
sep 21 11:42:09 fpp-server systemd[550]: mcnrelated.service: Failed with result 'exit-code'.
sep 21 11:42:09 fpp-server systemd[550]: Failed to start mcnrelated.service - Launch Minecraft Server and Related Services.

這就是我現在的處境。我嘗試過使用-u但沒有成功。

問題出在 tmux 上,至少目前是這樣。一旦我可以成功啟動該服務,我將嘗試查看它是否在啟動時自動啟動

相關內容