systemd servis statusini zbus orqali olish #3

Open
opened 2026-04-29 13:55:31 +00:00 by bahrom04 · 1 comment
Owner

Terminal buyruqlarini kod ichiga yozgandan koʻra zbus crate orqali faqat systemd servisiga ulanib ishlatgan toʻgʻriroq.

D-bus api: org.freedesktop.systemd1

z-bus kodiga misol: github.com/balena-io-modules/network-manager@4da2e6a57d/src/service.rs (L16)

Nega xozirgi yechim yaxshi emas?

Xozirgi terminal buyruq orqali har qanday buyruq ishlatish mumkin. Bu oldindan dastur qanday huquqlarga ega boʻlishini oldindan aytib boʻlmaydi. Misol uchun flatpak orqali sandbox boʻlgan holatda dastur manifest fayl ichida systemd uchun alohida ruxsat soʻrab yoziladi build boʻlayotganda.

Image

NixOS uchun ran boʻladigan applar dastur ichida nix buyruqlarini ishlatsachi?

Command::new("nix").args(profile) va hokazo buyruq ishlatish oʻz holicha qolaveradi, chunki bundan yaxshi yechim yoʻq va nixʼlangan dasturlar hech nimani sandbox qilmaydi.

Oʻzgartirish kerak boʻlgan joylar

  1. --user e-imzo.service statusini olish logikasi: https://github.com/xinux-org/e-imzo-manager/blob/main/src/utils.rs#L24-L41
  2. shu servisni start va stop qilish buyruqlari: github.com/xinux-org/e-imzo-manager@f983d4c3b9/src/ui/window.rs (L258-L283)
  3. pkexec buyrugʻini flatpak-spawn orqali ishga tushirish. Odatda flatpak.patch fayli yaratiladi: https://docs.flatpak.org/en/latest/flatpak-command-reference.html#flatpak-spawn

Foydali jihatlari

  1. Dasturni flatpak uchun port qilish
  2. Systemd servislariga d-bus orqali oqilona ulanish
Terminal buyruqlarini kod ichiga yozgandan koʻra zbus crate orqali faqat systemd servisiga ulanib ishlatgan toʻgʻriroq. D-bus api: [`org.freedesktop.systemd1`](https://www.freedesktop.org/wiki/Software/systemd/dbus/) z-bus kodiga misol: https://github.com/balena-io-modules/network-manager/blob/4da2e6a57de16b6ae911f74321f929d78af8b1ba/src/service.rs#L16 ## Nega xozirgi yechim yaxshi emas? Xozirgi terminal buyruq orqali har qanday buyruq ishlatish mumkin. Bu oldindan dastur qanday huquqlarga ega boʻlishini oldindan aytib boʻlmaydi. Misol uchun flatpak orqali sandbox boʻlgan holatda dastur manifest fayl ichida systemd uchun alohida ruxsat soʻrab yoziladi build boʻlayotganda. <img width="683" height="807" alt="Image" src="https://github.com/user-attachments/assets/a727b7cc-2e58-42ea-9c0f-42aaa068bccb" /> ## NixOS uchun ran boʻladigan applar dastur ichida nix buyruqlarini ishlatsachi? Command::new("nix").args(profile) va hokazo buyruq ishlatish oʻz holicha qolaveradi, chunki bundan yaxshi yechim yoʻq va nixʼlangan dasturlar hech nimani sandbox qilmaydi. ## Oʻzgartirish kerak boʻlgan joylar 1. `--user e-imzo.service` statusini olish logikasi: https://github.com/xinux-org/e-imzo-manager/blob/main/src/utils.rs#L24-L41 2. shu servisni start va stop qilish buyruqlari: https://github.com/xinux-org/e-imzo-manager/blob/f983d4c3b995e853fc378a937acca7b4715464c0/src/ui/window.rs#L258-L283 3. pkexec buyrugʻini flatpak-spawn orqali ishga tushirish. Odatda flatpak.patch fayli yaratiladi: https://docs.flatpak.org/en/latest/flatpak-command-reference.html#flatpak-spawn ## Foydali jihatlari 1. Dasturni flatpak uchun port qilish 2. Systemd servislariga d-bus orqali oqilona ulanish
Owner
@bahrom04 Manabu yechim ham bor. `systemd` yoki bo'lmasam `libsystemd` paketlaridan foydalanish mumkin. https://docs.rs/libsystemd/latest/libsystemd/ https://stackoverflow.com/questions/74628597/how-do-i-make-my-rust-program-communicate-to-systemds-watchdog
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
xinux/e-imzo-manager#3
No description provided.