Tôi đã cố gắng tự động chạy ba tập lệnh liên quan (bệ phóng
,thiết lập ứng dụng
,checkapp.py
) sử dụng bộ đếm thời gian systemd và dịch vụ systemd,
tập lệnh đầu tiên kiểm tra tập lệnh python (ứng dụng gui) nếu nó đã chạy, sau đó khởi động lại ứng dụng gui python, vấn đề của tôi là khi tôi cố chạy dịch vụ systemd, nó đóng ứng dụng gui
đây là kịch bản đầu tiên (bệ phóng
):
#!/bin/bash
/usr/share/checkapp/set-app
thoát 0
và đây là cái thứ hai (thiết lập ứng dụng
):
#!/bin/bash
CHECK_PRO="$(ps -ef | grep '[p]ython3 /usr/share/checkapp/checkapp.py' | awk '{print $2}')"
nếu [ "${CHECK_PRO}" != "" ]; sau đó
giết -9 $CHECK_PRO
python3 /usr/share/checkapp/checkapp.py hiển thị &
fi
thoát 0
và đây là cái cuối cùng (checkapp.py
):
#!/usr/bin/env python3
nhập hệ điều hành
tín hiệu nhập khẩu
nhập gi
gi.require_version('Gtk', '3.0')
từ gi.repository nhập Gtk dưới dạng gtk
từ gi.repository nhập AppIndicator3 làm appindicator
gi.require_version('Gtk', '3.0')
APPINDICATOR_ID = 'ứng dụng kiểm tra'
app_ico = '/usr/share/checkapp/logo.svg'
chắc chắn chính():
chỉ báo = 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():
menu = gtk.Menu()
software_cen = gtk.MenuItem('Trung tâm phần mềm')
software_cen.connect('kích hoạt', software_center)
menu.append(software_cen)
menu.show_all()
thực đơn trở lại
def software_center(nguồn):
os.system('pkexec/usr/sbin/synaptic')
nếu __name__ == "__main__":
signal.signal(signal.SIGINT, signal.SIG_DFL)
chủ yếu()
và đây là checkapp.service
tập tin :
[Đơn vị]
Mô tả = ứng dụng kiểm tra
[Dịch vụ]
ExecStart=/usr/share/checkapp/launcher
và đây là checkapp.timer
tập tin:
[Đơn vị]
Mô tả=Chạy ứng dụng checkapp cứ sau 2 giờ
RefuseManualStart=no
RefuseManualStop=không
[Hẹn giờ]
OnBootSec=20
OnUnitActiveSec=120 phút
Độ chính xácSec=1ms
Đơn vị=checkapp.service
[Cài đặt]
WantedBy=timers.target