rc.local에 배치하면 tmux가 트리거되지 않습니다.

rc.local에 배치하면 tmux가 트리거되지 않습니다.

나는 시작하고 싶다티먹스라즈베리 파이에서 부팅 시 - 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.localPi가 재부팅되었습니다. 결국 재부팅하면 Once를 사용하여 세션을 연결할 때 다음 sudo tmux a과 같은 tmux 세션을 얻습니다.창문 2개

  1. 초기 세션은 다음으로 인해 트리거된 빈 세션입니다.tmux new-session -d -s sess1

  2. 그리고 ++를 사용 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.

관련 정보