부팅 시 특정 사용자에 대해 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
다음으로 끝남또 다른 문제또한 내 답변의 일부가 포함된 답변을 여기에 추가하라는 요청도 받았습니다. 그래서 이것은 그것을 하고 확장하려는 시도입니다.
지금까지 여기에 나온 답변 중 어느 것도 방법을 제공하지 않습니다.멀티플렉서바꾸다예약 된 일들추가 스크립트 없이 작동합니다. 내 기술은 @reboot
Cron 확장을 지원하는 모든 시스템에서 작동합니다. 이것은 작동해야합니다최대최신 배포판이지만 상황이 다양할 수 있으며 기본적으로 작동하지 않을 수도 있습니다.
이것은 단지 한 줄입니다. 이것은 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, 이 답변을 다른 답변으로 수정한 후 삭제해야 한다고 생각되면 자유롭게 그렇게 하십시오.)