A solução abaixo não é especificamente para Lubuntu, apenas a maneira de definir um aplicativo para autoinicialização a partir da GUI é um pouco diferente, pois Lubuntu
não possui os aplicativos de inicialização
Verifique se um script foi iniciado dentro de um determinado limite de tempo a partir do login
Com o script abaixo, você pode verificar se um script foi iniciado com sucesso, dentro de um determinado limite de tempo do login. Se a (s) inicialização (ões) estiver sem êxito , uma mensagem aparecerá, mencionando quais dos scripts não foram iniciados com sucesso. Você pode usá-lo para verificar vários scripts ou processos em uma única etapa.
Depois que o limite de tempo passou e enviou sua mensagem, o script termina
Como usar
- Copie o script abaixo em um arquivo vazio, salve-o como
proc_check.py
em um local permanente :). - Na cabeça do script, defina a lista de processos (nomes de script) para ficar de olho e defina o limite de tempo.
-
Certifique-se de que os processos (para verificar) não estejam em execução e teste-execute o script com o comando:
python3 /path/to/proc_check.py
Deve enviar um aviso após o limite de tempo.
-
Se tudo funcionar bem, adicione o comando abaixo aos seus aplicativos de inicialização:
python3 /path/to/proc_check.py
Nota:
Se você tem notify-send
disponível ( sudo apt-get install libnotify-bin
), você também pode descomentar a última linha antes, para obter uma confirmação se tudo correu bem:
A vantagem disso é que você irá receber uma notificação de que tudo correu bem, ou um aviso, mencionando quais processos não foram iniciados com sucesso.
Você notará então se acidentalmente moveu este script. :)
O script
#!/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