서버가 시작될 때 tmux 내에서 스크립트를 어떻게 실행합니까?

서버가 시작될 때 tmux 내에서 스크립트를 어떻게 실행합니까?

활성 상태를 유지하기 위해 tmux 세션에서 실행하는 봇이 있습니다. 가끔 서버가 재부팅되고 집에 없거나 인터넷이 연결되지 않으면 봇이 오프라인 상태를 유지합니다. 크론 작업을 추가하여 봇을 시작할 수 있습니다. 이런 스크립트가 있어요

tmux new -s bot
bash '/home/user/bot_start.sh'

하지만 그것이 하는 일은 새로운 tmux 세션을 시작하고 실행하는 것입니다.

bot_start.sh

tmux 세션 외부. 열린 tmux 세션(예: "bot")에서 스크립트를 실행하고 싶습니다.

답변1

tmux명령은 세션에서 실행되어야 하는 명령을 명령줄의 인수로 사용합니다. 인수가 제공되지 않으면 대화형 쉘이 시작됩니다. 명령(또는 셸)이 종료되면 세션 tmux도 종료됩니다.

그래서 당신은 사용할 수 있습니다

tmux new-session -s bot bash "$HOME/bot_start.sh"

그러면 새 tmux세션이 시작되고 해당 세션에서 지정된 스크립트가 실행됩니다.

세션이 이미 존재하는지 테스트하고, 존재하는 경우 새 세션을 시작하지 않으려면 다음을 수행하세요.

! tmux has-session -t bot 2>/dev/null && tmux new-session -s bot bash "$HOME/bot_start.sh"

아니면 좀 더 자세히 말하자면,

if ! tmux has-session -t bot 2>/dev/null; then
    tmux new-session -s bot bash "$HOME/bot_start.sh"
fi

관련 정보