tmux를 시작하고 시작 시 일련의 명령을 실행합니다.

tmux를 시작하고 시작 시 일련의 명령을 실행합니다.

부팅 시 특정 사용자에 대해 tmux를 시작하는 방법을 찾으려고 합니다. tmux 세션은 두 개의 Python 스크립트를 실행해야 합니다.

파이썬을 시작할 수 있을 것 같아요여기서 언급한, 하지만 차라리 tmux 세션에 넣고 싶습니다.

가능합니까? 어떻게 해야 하나요?

답변1

내 경우에는 스크립트 실행만을 위한 사용자 계정이 있었기 때문에 ~/.tmux.conf 파일을 생성하여 해당 사용자의 홈 디렉터리에 기본 tmux 구성을 제공했습니다.

내 ~/.tmux.conf 파일은 대략 다음과 같습니다.

new-session -d -s MYSESSIONNAME
set -g status off
new-window ~/my-startup-script.sh

분명히 my-startup-script.sh에는 +x 권한 세트가 필요합니다.

~/.tmux.conf tmux 스크립트를 시작하려면 다음 명령을 실행하십시오.

tmux start-server

답변2

부팅 순서에서 cron이 너무 일찍 실행되는 시스템에서 @reboot다음 패턴으로 쉘 스크립트를 실행합니다.

#!/bin/bash
source ~/.bash_profile
if tmux has-session -t auto-session > /dev/null 2>&1; then
    :
else
    tmux new-session -d -s auto-session -n foo bar
    tmux new-window -d -t auto-session
fi

crontab을 통해 몇 분마다 주기적으로

*/2 * * * * $HOME/path/to/start-user-auto-session.bash

답변3

나는 내 앞에 게시된 답변을 시도했지만 나에게는 신비합니다. 그래서 저는 더 적은 수의 매개변수를 사용하는 더 간단한 솔루션을 찾기로 결정했습니다.

온라인에서 치트 시트를 받았습니다.이것은 좋은 예입니다

내가 매일 사용하는 몇 가지 명령은 다음과 같습니다.

  • 새 TMUX 세션 만들기tmux new -s SESSIONNAME
  • 세션 나열tmux ls
  • 기존 세션을 터미널에 연결tmux a -t SESSIONNAME
  • 세션 종료tmux kill-session -t SESSIONNAME
  • 기존 세션에 키 보내기 tmux send-keys -t SESSIONNAME "cd /pathname/"

다음은 기존 세션과 상호 작용하는 방법의 예입니다.

# create two new sessions SES1 and SES2 and detach them.(-d -s is important)
tmux new-session -d -s SES1
tmux new-session -d -s SES2

# let us send some commands to the other session (Python for example)
tmux send-keys -t SES1 "ipython3" C-m
tmux send-keys -t SES1 "from numpy import zeros" C-m
tmux send-keys -t SES1 "a = zeros((10,10))" C-m

이제 새 터미널 창에서 SES1을 열면 ipython이 실행되고 두 개의 명령을 실행하는 것을 볼 수 있습니다.

$ ipython3
Python 3.8.5 (default, Jul 28 2020, 12:59:40) 
Type 'copyright', 'credits' or 'license' for more information
IPython 7.13.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: from numpy import zeros                 

In [2]: a = zeros((10,10))                      

In [3]:  

방법 1: 이것은 제가 가장 좋아하는 것이며 광범위하게 사용하고 있습니다.

파일 만들기nano ~/.tmux.conf

문서 내용

#TMUX start-up script
new-session -d -s SES3
set -g status off #NOTE: this will disable the status bar(green text in the bottom. Personally, I like it there.

send-keys -t SES3 "ipython3" C-m
send-keys -t SES3 "from numpy import zeros" C-m
send-keys -t SES3 "a = zeros((10,10))" C-m

방법 2: 다음 단계는 스크립트를 생성하고 시작 시 실행하는 것입니다. 바라보다예를 들어 이

tmux_startup에서 파일을 만듭니다 /etc/init.d/.

sudo nano /etc/init.d/tmux_startup

파일 예

#!/bin/bash
# chkconfig: 2345 20 80
# description: Description comes here.... tmux script runs on startup.

tmux new-session -d -s SES1
tmux new-session -d -s SES2

tmux send-keys -t SES1 "ipython3" C-m
tmux send-keys -t SES1 "from numpy import zeros" C-m
tmux send-keys -t SES1 "a = zeros((10,10))" C-m

시스템을 부팅하면 생성한 세션이 표시되어야 합니다.

$ tmux ls

답변4

다음으로 끝남또 다른 문제또한 내 답변의 일부가 포함된 답변을 여기에 추가하라는 요청도 받았습니다. 그래서 이것은 그것을 하고 확장하려는 시도입니다.

지금까지 여기에 나온 답변 중 어느 것도 방법을 제공하지 않습니다.멀티플렉서바꾸다예약 된 일들추가 스크립트 없이 작동합니다. 내 기술은 @rebootCron 확장을 지원하는 모든 시스템에서 작동합니다. 이것은 작동해야합니다최대최신 배포판이지만 상황이 다양할 수 있으며 기본적으로 작동하지 않을 수도 있습니다.

이것은 단지 한 줄입니다. 이것은 crontab예이다맨 위연결 tmux attach -t my_session후 기다리고 있습니다 ( )내 세션시작 후 언젠가:

@reboot tmux new-session -d -s my_session 'top'

원한다면 더 화려하게 만들 수 있습니다. 원래 예에서는 tmux new-session명령을 시작하고 세션의 첫 번째(유일한) 창 내에 해당 출력을 표시할 뿐만 아니라 동시에 출력을 파일에 기록하는 보다 복잡한 마지막 매개 변수를 보여줍니다. 사용모기예를 들어:

@reboot tmux new-session -d -s my_session "bash -c 'mosquitto -c /etc/mosquitto.conf -p 1883 -v 2>&1 | tee /tmp/mosquitto_nodaemon.log'"

출처가 함께하길 바랍니다!

(Mods, 이 답변을 다른 답변으로 수정한 후 삭제해야 한다고 생각되면 자유롭게 그렇게 하십시오.)

관련 정보