Cron versus script de fondo
Por supuesto, lo primero que aparece en la mente es usar cron
. Si usa cron o un pequeño script de fondo es principalmente una cuestión de gustos.
La ventaja de cron es que se conecta a un proceso existente (aunque un script agrega, bueno, en realidad nada a la carga del procesador).
La ventaja de un script de fondo es que es más flexible; simplemente mátelo y ejecútelo con otros argumentos si desea cambiar el tiempo u otras configuraciones. También puede reutilizarlo con otras aplicaciones sin tener que hacer otra configuración, solo un comando es suficiente.
El siguiente script puede ejecutarse mediante el comando (p. Ej.)
python3 <script> <command_to_run_application> <cycle_time> <application_run_time> force
Donde el último argumento, si se establece, mata por la fuerza la aplicación. Si no se configura, la aplicación se cerrará correctamente para asegurarse de que no se pierdan los posibles cambios, etc.
La secuencia de comandos
#!/usr/bin/env python3
import subprocess
import time
import sys
force = False
args = sys.argv[1:]; app = args[0].replace("'", "")
proc = app.split()[0].split("/")[-1]
cycle = int(args[1])*60; run = int(args[2])*60
try:
if args[3] == "force":
force = True
except IndexError:
pass
def get_pid(proc_name):
try:
return subprocess.check_output(
["pgrep", proc_name]
).decode("utf-8").strip()
except subprocess.CalledProcessError:
pass
def kill(pid, force):
if force == False:
subprocess.Popen(["kill", "-s", "TERM", pid])
elif force == True:
subprocess.Popen(["kill", pid])
while True:
subprocess.Popen(["/bin/bash", "-c", app])
time.sleep(run)
pid = get_pid(proc)
if pid != None:
kill(pid, force)
time.sleep(cycle - run)
Usar
Ejecutar aplicaciones con argumentos
Si ejecuta una aplicación con argumentos, asegúrese de usar comillas alrededor del comando para ejecutar la aplicación , por ejemplo:
python3 /path/to/cycle_run.py 'gedit /home/jacob/Desktop/test.sh' 30 5
Ejecución de aplicaciones minimizadas o en bandeja
El inicio y la finalización de las aplicaciones periódicamente a menudo se necesitarán solo minimizadas y / o en la bandeja. Según lo solicitado por OP, algunas observaciones al respecto:
Si una aplicación ofrece iniciarse en la bandeja desde la línea de comandos, simplemente use el argumento para hacerlo. En el caso de Telgram
, el argumento a usar es:
-startintray
aunque la opción parece no funcionar en todos los sistemas (sí funciona en el mío), como se menciona aquí . Tendrás que probar en tu situación.
Si la aplicación no ofrece la opción de línea de comando para iniciar minimizado o en la bandeja, sugeriría usar el script (this) en combinación con el aquí (sugeriría la pid
versión -), lo que hará posible el inicio La aplicación minimizada.