Am încercat să rulez automat trei scripturi asociate (lansator
,set-app
,checkapp.py
) folosind timer systemd și serviciul systemd,
primul script verifică scriptul python (aplicația gui) dacă rulează deja, după aceea repornește aplicația python gui, problema mea este când încerc să rulez serviciul systemd, închide aplicația gui
acesta este primul scenariu (lansator
):
#!/bin/bash
/usr/share/checkapp/set-app
iesirea 0
si acesta este al doilea (set-app
):
#!/bin/bash
CHECK_PRO="$(ps -ef | grep '[p]ython3 /usr/share/checkapp/checkapp.py' | awk '{print $2}')"
if [ "${CHECK_PRO}" != "" ]; atunci
ucide -9 $CHECK_PRO
python3 /usr/share/checkapp/checkapp.py arată &
fi
iesirea 0
si acesta este ultimul (checkapp.py
):
#!/usr/bin/env python3
import os
semnal de import
import gi
gi.require_version('Gtk', '3.0')
din gi.repository import Gtk ca gtk
din gi.repository import AppIndicator3 ca appindicator
gi.require_version('Gtk', '3.0')
APPINDICATOR_ID = „verificare aplicație”
app_ico = '/usr/share/checkapp/logo.svg'
def main():
indicator = appindicator.Indicator.new(APPINDICATOR_ID, os.path.abspath(app_ico), appindicator.IndicatorCategory.SYSTEM_SERVICES)
indicator.set_status(appindicator.IndicatorStatus.ACTIVE)
indicator.set_menu(build_menu())
gtk.main()
def build_menu():
meniu = gtk.Menu()
software_cen = gtk.MenuItem('Centrul de software')
software_cen.connect('activare', software_center)
menu.append(software_cen)
menu.show_all()
meniul de întoarcere
def software_center(sursa):
os.system('pkexec /usr/sbin/synaptic')
if __name__ == "__main__":
signal.signal(signal.SIGINT, signal.SIG_DFL)
principal()
iar acesta este checkapp.service
fisier:
[Unitate]
Descriere=checkapp
[Serviciu]
ExecStart=/usr/share/checkapp/launcher
și asta este checkapp.timer
fişier:
[Unitate]
Descriere=Rulează aplicația de verificare la fiecare 2 ore
RefuseManualStart=nu
RefuseManualStop=nu
[Temporizator]
OnBootSec=20
OnUnitActiveSec=120min
AccuracySec=1ms
Unit=checkapp.service
[Instalare]
WantedBy=timers.target