아래에 설명된 대로 tmux 트리거 스크립트가 실행 중입니다.라즈베리파이 위지 7.10:
1 단계
#!/bin/bash # this script is called "sess" tmux new-session -d -s sess1 'sudo /home/pi/bin/myscript.py' exit 0
실행 중인 스크립트를 다음과 같이 확인했습니다.
- 먼저 Python 스크립트를 실행
sudo /home/pi/bin/myscript.py
한 다음 다음을 입력하세요.멀티플렉서명령은 위와 같습니다tmux new-session -d -s sess1 'sudo /home/pi/bin/myscript.py'
. 스크립트가 두 번 실행됩니다.
사용자가 이 스크립트를 입력하고 실행할 수 있다면 전체 내용을 bash 스크립트로 작성할 수 있다고 가정하는 것이 안전하기 때문입니다. 그래서 위에서 언급한 "sess" 스크립트는
- 2 단계
다음을 통해 파일에 대한 실행 권한을 부여했습니다.chmod +x /home/pi/bin/sess
- 3단계
rc.local
또한 다음을 사용하여 스크립트를 실행 해 보았습니다 .
# in the rc.local file
/home/pi/bin/sess &
exit 0
내가 설정한 이후 rc.local
파일이 트리거됩니다.무선 랜내 Pi가 Ad-Hoc 네트워크에 참여할 수 있도록 시작 시 매개변수입니다.
ssh
내 Pi에 들어갈 수 있기 때문에 이를 명확하게 확인할 수 있습니다 .
관찰 결과:
다시 시작한 후에는 스크립트가 트리거되지 않습니다. 이는 tmux ls
다음 명령으로 확인할 수 있습니다 Connection to Server Failed
. 또한 슈퍼유저가 incase를 사용하여 tmux 세션을 가지고 있는지 확인했지만 sudo tmux ls
출력은 동일합니다.
- 4단계
다음을 사용하여 스크립트를 실행하려고합니다 crontab
.
sudo crontab -u pi -e
## inside the crontab
@reboot /home/pi/bin/sess &
나는 또한예약 된 일들슈퍼유저용
sudo crontab -e
@reboot /home/pi/bin/sess &
관찰 결과:
재부팅 후에는 스크립트가 실행되지 않습니다.
- 5단계
나는서브쉘rc.local
트리거되는 스크립트의 모든 활동을 캡처합니다 .
# in the rc.local file
(/home/pi/bin/sess &) > /tmp/tmux.log
관찰 결과
다시 시작하면 cat /tmp/tmux.log
파일에 아무것도 없습니다. 파일이 tmux.log
실제로 생성되었습니다.
추론
아이러니 sudo /etc/rc.local
하게도 내가 실제로 연결 세션을 사용 하고 목록을 볼 수 있기 때문에 로그인할 때 sudo ~/bin/sess
스크립트가 완벽하게 실행됩니다.sudo tmux a
sudo tmux ls
하지만 시작 시 실행되지 않기 때문에 시작 시 트리거되지 않으면 그 목적은 쓸모가 없습니다.
$PATH
실제로 어떤 환경변수가 표시되는지도 확인했습니다 /home/pi/bin
.
또한 환경 변수가 정렬되지 않을 수 있으므로 모든 스크립트에서 tmux에 대한 전체 경로를 사용해 보았습니다. 하지만 행운은 없어
$ which tmux
$ /usr/bin/tmux
아이러니하게도 내가 내 말을 따르면우분투 14.04 LTS
rc.local
내 파일을 통해 노트북 스크립트가 트리거됩니다.
더 많은 선택
어쩌면 데몬 스크립트를 시도해 보세요. an 과 a가 이것을 처리할 수 있는지
init.d/
확실하지 않으면 데몬도 처리하지 못할 수도 있습니다.rc.local
crontab
~/.tmux.conf
a가 좋은지 모르겠습니다 .
답변1
최적화된 솔루션으로 분리된 스크립트 문제 해결멀티플렉서트리거 스크립트에서 다음 옵션을 사용하라는 메시지가 표시됩니다.
#!/bin/bash
# this script is called "sess"
tmux new-session -d -s sess1
# this statement is a life-saver for tmux detached sessions
tmux set-option -t sess1 set-remain-on-exit on
# In my case running the script in a new window worked
tmux new-window -d -n 'nameofWindow' -t sess1:1 'sudo /home/pi/bin/script.py'
exit 0
이제 다음 스크립트를 호출하면 rc.local
Pi가 재부팅됩니다. 결국 재부팅 시 Once를 사용하여 세션을 연결하면 sudo tmux a
tmux 세션이 생성됩니다.창문 2개
초기 세션은 다음으로 인해 트리거된 빈 세션입니다.
tmux new-session -d -s sess1
다른 하나는
tmux new-window
명령 에서 나오며 다음과 같이 언급된 대로 CTRL++를 사용 B하여 열 수 있습니다 .1sess1:1
노트:단축키는 사용자마다 다를 수 있으며, 기본 tmux 단축키(키 바인딩)는 CTRL+ 입니다 B.
추리
스크립트가 오류로 끝나면 창에는 오류가 발생한 위치(제 경우에는 Python 스크립트의 오류)와 하단에 표시됩니다.페인이 죽었어. 그래서 스크립트의 버그로 인해멀티플렉서관련 로그(피드백)를 제공하지 않고 세션이 종료되므로 위의 출력은 기록되지 않습니다./tmp/tmux.log
set-remain-on-exit on
따라서 분리 모드의 스크립트에 오류가 발생할 경우를 대비하여 tmux를 사용하여 스크립트를 실행할 때 항상 권장됩니다.