私は始めたい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
分離されたスクリプトのトラブルシューティングに最適なソリューションtmuxトリガー スクリプト内で次のオプションを使用する必要があります。
#!/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が再起動されました。再起動時にセッションをアタッチすると、sudo tmux a
Tmuxセッションが取得されます。2つの窓
最初のものは、単に空のセッションがトリガーされたものです。
tmux new-session -d -s sess1
そして、コマンドからもう一つは、(として言及されているので、++を
tmux new-window
使用して開くことができますCTRLB1sess1:1
注記:ホットキーはユーザーによって異なる場合があります。デフォルトのtmuxホットキー(bindkeys)はCTRL+ですB)
推論
スクリプトがエラーで終了した場合、ウィンドウにはエラーが発生した場所が表示されます。私の場合はPythonスクリプトのエラーで、下部に次のメッセージが表示されます。ペインは死んだそのため、スクリプトのエラーにより、tmuxセッションは関連するログ(フィードバック)を出力せずに終了したため、上記の出力は記録されませんでした。/tmp/tmux.log
set-remain-on-exit on
したがって、スクリプトに障害がある場合に備えて、tmuxでスクリプトを実行するときは常に を使用することをお勧めします。
答え2
rc.local
起動時の環境は豊富ではないと思います。$PATH
および$HOME
(シェルは~
に展開されます$HOME
) がわかっている場合、それらは (通常のユーザーの) 変数ではありません。設定されていない可能性があります。さらに、スクリプトはこの制限された環境を継承します。
ただし、コマンドが継承するsudo /etc/rc.local
とsudo ~/bin/session.sh
あなたの環境とすべての作品。
これを修正するには、 の代わりにフルパスを使用します~/
。 にもフルパスを使用しますtmux
。