自動起動にスクリプトを追加しました(LXSessionのデフォルトアプリケーションを使用)。後で、スクリプトを含むフォルダーを移動しました。
その結果、自動起動コマンドは静かに失敗していました。
失敗した自動起動コマンドに関する警告メッセージを有効にするにはどうすればよいですか?
以下の解決策はLubuntu専用ではなく、GUIから自動起動するアプリケーションをsetにする方法が少し異なるだけです。なぜならLubuntu
Ubuntuのようなスタートアップアプリケーションアプリケーションはありません。
以下のスクリプトを使用すると、ログインから一定の制限時間内にスクリプトが正常に開始されたかどうかを確認できます。スタートアップがunsuccessfulだった場合、どのスクリプトが正常に起動しなかったかを示すメッセージが表示されます。これを使用して、複数のスクリプトまたはプロセスを1ステップで確認できます。
制限時間が過ぎてメッセージを送信した後、スクリプトは終了します
proc_check.py
としてpermanent:)の場所に保存します。(チェックする)プロセスが実行されていないことを確認し、次のコマンドでスクリプトをテスト実行します。
python3 /path/to/proc_check.py
制限時間が経過すると、警告が送信されます。
すべてが正常に機能する場合は、以下のコマンドをスタートアップアプリケーションに追加します。
python3 /path/to/proc_check.py
注:
notify-send
が利用可能な場合(Sudo apt-get install libnotify-bin
)、最後の行のコメントを解除して、すべてがうまくいったかどうかを確認することもできます。
その利点は、eitherがすべて正常に完了したという通知または警告を取得し、どのプロセスが正常に起動しなかったかを示すことです。
誤ってthisスクリプトを移動した場合に気付くでしょう。 :)
#!/usr/bin/env python3
import subprocess
import getpass
import time
#--- set the processes (script names) to check below
procs = ["pscript_2.py", "monkey.py"]
#--- set the time limit below (seconds)
wait = 30
#---
# define the user to fetch the current user's process list
user = getpass.getuser()
# create an (empty) list of succesful process startups
succeeded = []
def get():
return subprocess.check_output(["ps", "-u", user, "ww"]).decode("utf-8")
t = 1
while t < wait:
# add succesful processes to the "succeeded" list
for p in [proc for proc in procs if proc in get()]:
succeeded.append(p)
time.sleep(1)
t = t+1
# list the failures
fails = [p for p in procs if not succeeded.count(p) > 2]
# if there are any, send a message
if len(fails) > 0:
subprocess.Popen(["zenity", "--info", "--text", "failed to run: "+(", ").join(fails)])
# if all was successfull, send a message; n.b. comment out the line if notify-send is not available
else:
# subprocess.Popen(["notify-send", "All processes started succesfully"])
pass
スタートアッププログラムは/home/<your_username>/.config/autostart/
。
そして、crontabでこのようなものより:
awk -F'[= ]' '/^Exec/{print $2}' /home/<your_username>/.config/autostart/*.desktop | while IFS= read -r target; do [ ! -x "${target/\~/$HOME}" ] && ! type "${target/\~/$HOME}" &> /dev/null && echo "Not executable: $target" | mail -s "Missing commands" <your_username>; done
Crontabを開きます:
crontab -e
次の行を追加します。
* */2 * * * awk -F'[= ]' '/^Exec/{print $2}' /home/<your_username>/.config/autostart/*.desktop | while IFS= read -r target; do [ ! -x "$target" ] && ! type "$target" &> /dev/null && echo "Not executable: $target" | mail -s "Missing commands" <your_username>; done
これにより、.config/autostart/
問題がある場合は、2時間ごとにメールを送信します。
ありがとう @ terdon