2015-11-11 26 views
7

Có cách nào để bắt đầu/khởi động lại dịch vụ systemd qua python không?Bắt đầu dịch vụ systemd qua python

Tôi biết rằng tôi có thể thực hiện cuộc gọi hệ thống - nhưng sau đó tôi cũng có thể viết những dòng này trong shell script ...

from subprocess import call 
call(["systemctl", "restart service"]) 

Tôi nghe nói có một số systemd với phím tắt trăn, nhưng như xa như tôi nhìn thấy nó họ chỉ bao gồm các tạp chí

+0

Vì vậy, bạn đang tìm kiếm một mô-đun systemd/gói? –

+0

Tôi có phải không? Tôi muốn nói chuyện với systemd càng trực tiếp càng tốt. Tôi không muốn thoát khỏi môi trường python và yêu cầu hệ thống làm điều đó cho tôi, nếu có một cách để khai thác trực tiếp hơn. Không phải là có một số loại API, vì vậy tôi có thể nói chuyện với systemd? –

+1

Hiểu ngay bây giờ, * chạy lệnh systemd thêm pythonic. *: P –

Trả lời

7

Bạn có thể sử dụng systemd của DBus API để gọi phương thức RestartUnit của Manager (cần đủ quyền hạn, nếu không nó sẽ không hoạt động)

import dbus 
sysbus = dbus.SystemBus() 
systemd1 = sysbus.get_object('org.freedesktop.systemd1', '/org/freedesktop/systemd1') 
manager = dbus.Interface(systemd1, 'org.freedesktop.systemd1.Manager') 
job = manager.RestartUnit('sshd.service', 'fail') 
+0

Tôi đã đăng một câu hỏi theo dõi tương tự tại đây: [Khởi động một dịch vụ systemd người dùng thông qua python và dbus] (https://stackoverflow.com/q/42088406/2851664). – sebix

Các vấn đề liên quan