Я попытался запустить три связанных скрипта автоматически (пусковая установка
,установить-приложение
,checkapp.py
) с помощью системного таймера и службы systemd,
первый скрипт проверяет скрипт python (приложение gui), если он уже запущен, после этого он перезапускает приложение python gui, моя проблема в том, что когда я пытаюсь запустить службу systemd, он закрывает приложение gui
это первый скрипт(пусковая установка
):
#!/бин/баш
/usr/доля/checkapp/set-приложение
выход 0
а это второй(установить-приложение
):
#!/бин/баш
CHECK_PRO="$(ps -ef | grep '[p]ython3 /usr/share/checkapp/checkapp.py' | awk '{print $2}')"
если [ "${CHECK_PRO}" != "" ]; тогда
убить -9 $CHECK_PRO
python3 /usr/share/checkapp/checkapp.py показать &
фи
выход 0
а это последний(checkapp.py
):
#!/usr/bin/env python3
импорт ОС
сигнал импорта
импорт ги
gi.require_version('Gtk', '3.0')
из gi.repository импортировать Gtk как gtk
из gi.repository импортировать AppIndicator3 как appindicator
gi.require_version('Gtk', '3.0')
APPINDICATOR_ID = 'проверить приложение'
app_ico = '/usr/share/checkapp/logo.svg'
деф основной():
индикатор = appindicator.Indicator.new(APPINDICATOR_ID, os.path.abspath(app_ico), appindicator.IndicatorCategory.SYSTEM_SERVICES)
индикатор.set_status(appindicator.IndicatorStatus.ACTIVE)
индикатор.set_menu(build_menu())
gtk.main()
деф build_menu():
меню = gtk.Меню()
software_cen = gtk.MenuItem('Центр программного обеспечения')
software_cen.connect('активировать', software_center)
menu.append(software_cen)
меню.show_all()
меню возврата
def software_center (источник):
os.system('pkexec /usr/sbin/synaptic')
если __name__ == "__main__":
сигнал.сигнал(сигнал.SIGINT, сигнал.SIG_DFL)
главный()
и это checkapp.service
файл :
[Ед. изм]
Описание=checkapp
[Оказание услуг]
ExecStart=/usr/доля/checkapp/лаунчер
а это checkapp.timer
файл:
[Ед. изм]
Description=Проверка приложения каждые 2 часа
RefuseManualStart=нет
RefuseManualStop=нет
[Таймер]
OnBootSec=20
OnUnitActiveSec=120мин
Точность сек = 1 мс
Единица = checkapp.service
[Установить]
WantedBy=timers.target