lxsession を終了した後にスクリプトを実行する (xorg)

lxsession を終了した後にスクリプトを実行する (xorg)

LXDE セッションを終了した後、bash スクリプト内でプログラムを自動的に実行しようとしています。スクリプトは次のもので構成されています。

#!/bin/sh
pkill lxsession;
sh /home/pi/RetroPie/EmulationStation/emulationstation

私もこれを試しました:

#!/bin/sh
nohup & pkill lxsession & 
writevt /dev/tty1 'emulationstation'

私の目的は、LXDE セッションからログアウトし、bash スクリプトを使用して Raspberry Pi 上で EmulationStation を実行することです。lxsessionpkill lxsession;のログアウト確認ダイアログをバイパスするために使用しています。

現状では、このスクリプトは動作中の LXDE デスクトップからコマンド ラインにアクセスするだけです。お読みいただきありがとうございました。

答え1

それは不可能だと思います。このスクリプトは、LXDE セッション内で実行されているターミナル エミュレータから実行します。LXDE セッションを終了すると、ターミナルも終了し、スクリプトも終了します。

回避策としては、別の tty 経由でログインし、そこでスクリプトを実行することが考えられます。具体的に何をしようとしているのですか? ルート cronjob は機能しますか?

答え2

writevtここでは使用できませんが、tty 入力をエミュレートするだけだと思います。

ttyでコマンドを開始してみることもできます前にXセッションを終了し、Xセッションが終了するまで待機します。

#!/bin/sh
writevt /dev/tty1 'sleep 20s; emulationstation'` & 
pkill lxsession

答え3

ターミナルからスクリプトを実行するとき、またはランチャーを作成するときに、「screen」を使用してみてください。

screen ./emu-script.sh

screenはLXDEが終了しても、あるいは他の何らかのシャットダウンがあっても、ターミナルセッションを維持します。こうすることでスクリプトは正常に終了できます。

関連情報