나는 시작하고 싶다티먹스라즈베리 파이에서 부팅 시 - 2. 파일을 작성 하고 홈 디렉토리에 있는 파일 session.sh
에 저장했습니다 . ~/bin/
이 ~/bin/
또한 에 포함되어 있으므로 $PATH
트리거될 수 있습니다.
Bash 파일은 다음과 같습니다.
#!/bin/sh
mySession(){
tmux new-session -d -s SessionName
tmux new-window -d -n 'windowName' "~/bin/myPythonScript.py"
}
mySession
exit 0
내가 준실행위에서 언급한 bash 스크립트를 포함한 모든 스크립트에 대한 권한도 다음을 사용합니다.chmod +x session.sh
에서rc.local이 파일을 다음과 같이 트리거한다고 합니다.
#!/bin/sh
scriptSession(){
echo "starting the tmux session"
~/bin/session.sh &
}
scriptSession
exit 0
Pi 재부팅을 여러 번 시도했지만 세션이 트리거되지 않았습니다.
내가 실행할 때 sudo tmux ls
, 그것은 단지 보여줍니다error Connecting to Server
sudo /etc/rc.local
하지만 내가 할 때나 sudo ~/bin/session.sh
세션이 시작될 때! 사용자가 트리거한 세션이 아닌 부팅 시 자동 시작을 원하기 때문에 이런 일이 발생하지 않기를 바랍니다.
어떤 아이디어가 문제가 될 수 있습니까?
편집하다
또한 다음을 사용하여 bash 하위 쉘에서 실패 로그를 수집해 보았습니다.rc.local파일:
(scriptSession)&>>/var/log/myLog.txt
하지만 cat /var/log/myLog.txt
아무것도 나타나지 않고 스크립트가 여전히 실패합니다.
답변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 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
하여 열 수 있는 명령 의 또 다른 하나 는 (CTRLB1sess1:1
메모:단축키는 사용자에 따라 다를 수 있으며, 기본 tmux 단축키(바인드키)는 CTRL+ 입니다 B.
추론
스크립트가 오류로 끝나면 창에 오류가 있었던 위치가 표시됩니다. 제 경우에는 Python 스크립트의 오류가 표시되고 하단에 표시됩니다.페인이 죽었습니다. 따라서 스크립트의 오류로 인해티먹스관련 로그(피드백)를 제공하지 않고 세션이 종료되었으므로 위에서 언급한 출력이 기록되지 않았습니다./tmp/tmux.log
set-remain-on-exit on
따라서 분리 모드에서 스크립트에 결함이 있는 경우를 대비하여 tmux로 스크립트를 실행할 때 항상 를 사용하는 것이 좋습니다.
답변2
rc.local
스타트업 환경이 풍족하지 않은 것 같아요 . 그것이 무엇 $PATH
이든 알고 있다면 $HOME
(쉘은 ~
로 확장됩니다 $HOME
) 그것은 당신의 (일반 사용자의) 변수가 아닙니다. 제 생각에는 설정이 해제된 것 같습니다. 또한 스크립트는 이 제한된 환경을 상속합니다.
그러나 그렇게 하거나 명령이 상속 sudo /etc/rc.local
되면sudo ~/bin/session.sh
당신의환경과 모든 일.
이 문제를 해결하려면 ~/
. 전체 경로를 사용하십시오 tmux
.