
私は次のコマンドを使用して数メートル離れたraspberryPi + bigMonitorでビデオを実行しています。
ssh pi 'omxplayer file.mp4 </dev/null &>/dev/null &'
良い結果。
ただし、sshの仮想端末割り当てを使用したい場合、-t
このコマンドは機能しなくなります。
omxplayerの前にncursesベースのビデオメニューと「fzf」を使用する必要があります-t
が、主な問題はsleep 10
omxplayerでシミュレートできるため、すべての具体的な質問は重要ではありません。
リモートコンピュータから:
watch -n1 'ps aux | grep [s]leep\ 10' #monitoring if 'sleep' running.
ローカルマシンでさまざまなテストを実行します。
ssh -t pi 'sleep 10 </dev/null &>/dev/null &' #not working
ssh -t pi 'nohup sleep 10 </dev/null &>/dev/null & disown' #not working
ssh -t pi 'setsid sleep 10 </dev/null &>/dev/null &' #not working
ssh -t pi 'nohup sleep 10 </dev/null &>/dev/null & sleep 0' #works OK !!!!
ssh -t pi 'setsid sleep 10 </dev/null &>/dev/null & sleep 0' #works OK
ssh -t pi 'nohup sleep 10 </dev/null &>/dev/null & /bin/true' #not working
ssh -t pi 'nohup sleep 10 </dev/null &>/dev/null & (true & wait)' #works ok
最後に、@egmontが提案した「スリープ0」はおそらく最高の解決策でしょう。
より良い、より信頼できる解決策があるかどうか、そしてこれの正確な原因が何であるかまだ疑問に思います。 (sshがvtを終了すると、並列nohup / setsidの実行に速すぎる可能性があります。)
答え1
問題は、nohupに移動してスリープモードまたはomxplayerを実行しているバックグラウンドシェルがnohupに移動して信号ハンドラを無視するように設定する前にSIGHUPを受信することです。
ssh -t pi 'trap HUP "" ; omxplayer file.mp4 </dev/null &>/dev/null &'
私には毎回効果がありますが、他の方法は時々sleep 0
失敗します。