Show HN: Systemd Interaktif – Cara yang Lebih Baik untuk Bekerja dengan Unit Systemd
(isd-project.github.io)isdadalah alat yang menyediakan cara yang lebih baik untuk mengelola unitsystemd, dengan antarmuka pengguna terminal (TUI) untuk mencari unit, memperbarui pratinjau secara otomatis, serta menawarkan penanganansudoyang cerdas dan antarmuka yang dapat disesuaikan
Motivasi singkat
isdmenyederhanakan proses rumit yang diperlukan untuk berinteraksi dengan unitsystemddan menyediakan informasi yang berguna bagi pengguna- Mengurangi kerepotan mengetik perintah
systemctlberulang kali dan secara otomatis memperbarui hasil keluarannya
Instalasi
isddapat diinstal melalui AppImage, nix, dan uv- AppImage adalah satu berkas eksekusi tunggal yang dapat dijalankan di semua distribusi Linux, sehingga juga bisa digunakan di server jarak jauh dengan hak akses terbatas
- Untuk memasang
isddi lingkungan nix, Anda dapat menginstalnya menggunakan paket nix - uv adalah pengelola paket Python, dan melalui uv Anda dapat memasang serta mengelola
isd
Cara menggunakan isd
isddapat mencari unitsystemd, memeriksa statusnya, dan menyediakan pratinjau informasi terperinci untuk beberapa unit- Mengirim perintah
systemctlke unit yang dipilih dan secara otomatis memperbarui keluaran status - Anda dapat membuka
pagerdi dalamisduntuk melihat seluruh keluaran status - Dapat membuka
pagerterpisah untuk keluaranJournal, serta mengatur tema dan key binding yang dapat disesuaikan
Mode pengguna/sistem
isddijalankan dalam modeuseratausystem, dan jenis unit yang ditampilkan berbeda bergantung pada mode tersebut
Pencarian fuzzy
- Melalui bilah pencarian fuzzy, semua unit dan berkas unit yang cocok dengan input akan dimuat dan disorot sesuai status saat ini
Memilih beberapa unit
- Anda dapat memilih beberapa unit di widget hasil pencarian, dan pratinjau untuk unit yang dipilih akan ditampilkan
Command palette
- Buka command palette untuk melihat semua perintah yang tersedia dan key binding-nya
Perintah
- Misalnya, Anda dapat menekan
Ctrl+Ountuk menghentikan unit yang dipilih
Dukungan pager
- Saat menjalankan
isd, Anda dapat membukapageruntuk melihat seluruh keluaran pratinjau
Kustomisasi
isdmenyediakan kustomisasi dan kemampuan konfigurasi, dengan berbagai tema dan key binding agar pengguna dapat mencapai produktivitas optimal
Ringkasan
- Disarankan untuk mencobanya langsung agar dapat menilai apakah
isdakan berguna bagi Anda
Langkah berikutnya
- Periksa bagian kustomisasi dan keamanan
1 komentar
Komentar Hacker News
Terlihat bagus
Cara menangani ExecStop di skrip layanan systemd benar-benar membingungkan
ExecStartadalah perintah yang dijalankan saat sistem boot atau saat pengguna memulai layanan, sedangkanExecStopdijalankan setelah perintah start selesaiAgar perintah stop dijalankan saat sistem dimatikan atau saat pengguna menghentikan layanan, perlu mengatur
RemainAfterExit=yesExecStoppada dasarnya lebih mirip event “waktu bersih-bersih” daripada event “untuk menghentikan layanan”Perlu diingat bahwa systemd disesuaikan untuk daemon
Jika layanan hanya menjalankan satu perintah yang akan selesai suatu saat, Anda harus secara eksplisit memberi tahu systemd agar memperlakukannya berbeda dari daemon
Seperti yang dikatakan orang lain, kemungkinan besar kombinasi yang Anda inginkan adalah
oneshot+RemainAfterExittype=forking, ExecStop bekerja seperti yang diharapkanSaya benar-benar suka
Setelah lama hanya memakai command line murni sampai terasa menyakitkan, belakangan saya mulai memakai alat seperti
lazygit/lazydockeruntuk melihat status sistem/tree yang tidak transparan, dan produktivitas saya meningkat besarSaya mengelola beberapa layanan tingkat pengguna dan sistem, tetapi debugging terasa membosankan
Bagian di kalimat pertama yang mencantumkan perintah-perintah umum dan ketidaknyamanannya benar-benar terasa relevan
Karena saya memakai NixOS, cara mengedit langsung file unit yang immutable tidak akan bisa, tetapi eksplorasi, visibilitas, dan pengelolaan layanan tampaknya akan sangat membantu
Saya berencana menambahkan “panduan” ke dokumentasi; singkatnya, saat men-debug unit di NixOS, ada baiknya mencoba
systemctl edit --runtimeDebugging jadi jauh lebih mudah
Terlihat sangat bagus
Saya memelihara proyek serupa, dan berurusan dengan systemd/dbus API cukup menyakitkan
Saya ingin mencobanya dan melihat apakah ada yang bisa dipelajari
https://github.com/rgwood/systemctl-tui
Sepertinya akan sering saya pakai
Satu-satunya yang kurang hanya paket deb
Akhirnya systemd-client muncul juga, senang melihatnya
Langkah berikutnya saya harap adalah TUI untuk non-Linux seperti macOS, FreeBSD, Windows
Di macOS saya memakai LaunchControl.app, tetapi itu bukan TUI
Satu hal, di
uv 0.5.21saya harus melakukannya seperti di bawah ini, danuvxsama sekali tidak berhasil$ uv tool install git+https://github.com/isd-project/isdSebaliknya,
$ uv tool install https://github.com/isd-project/isd/isd@latestdari dokumentasi tidak berhasilMeski begitu,
uvjauh lebih cepat daripadapip(x), jadi saya pindahTerima kasih sudah memberi tahu
Keren bahwa
uvmembuat instalasi alat seperti ini jadi semudah ituYang terlewat dari prosedur instalasi adalah bahwa
uvmengabaikan dependensi Python dan memasang alat iniMesin saya memakai 3.10 sehingga
isdtidak berjalan, dan saya menyelesaikannya dengan opsi-p 3.13Layak disebutkan di dokumentasi
Flag tersebut sudah saya masukkan ke dokumentasi
“Kalau pernah kesal saat mengetik” — itu persis saya
Padahal saya menyukai systemd
Saya belum mencoba memasangnya, tetapi penasaran apakah bisa terhubung ke host jarak jauh
Saya sering memakai
systemctl --host status foo.service, dan memeriksa status, timers, logs, dan sebagainya dari jarak jauhsystemctl --hostSayangnya belum didukung
Secara garis besar ini lebih mirip wrapper mewah yang membungkus
systemctllokalNamun karena ada AppImage, mudah-mudahan menjalankannya di server jarak jauh bisa cukup mudah
Bagaimanapun, jika Anda membuka issue, saya akan melihatnya
Di server jarak jauh atau image Docker, kita tidak bisa memasang hal seperti ini
Perlu beberapa backend untuk menjalankan perintah dan mengumpulkan informasi: lokal, SSH, Docker
Setelah dipasang secara lokal, harus bisa menjalankan perintah di mesin jarak jauh lewat SSH, dan juga lewat
docker execSaya ragu apakah pernyataan “AppImage ini tidak berfungsi jika Nix terpasang” benar-benar tepat
Saya paham mengapa tidak bisa di NixOS. Sepertinya tidak bisa menjalankan
systemctlmilik hostNamun, jika hanya Nix yang terpasang di OS lain, rasanya tidak ada alasan sampai tidak bisa berjalan
Menariknya, di Nix v2.24.11, perintah Nix yang disediakan juga tidak berfungsi
$ nix run https://github.com/isd-project/isdgagal denganFailed to open archive (Unrecognized archive format)Mungkin bisa berjalan jika diubah ke bentuk Git URL, tetapi karena Nix punya fetcher GitHub bawaan yang lebih efisien, perintah yang benar tampaknya
nix run github:isd-project/isdProyek ini sendiri keren
Dulu saya ingin membuat sesuatu yang mirip dengan DBus API milik systemd dan Qt, dan sempat menulis sedikit kode
DBus API kemungkinan besar menyediakan hampir semua fitur yang dibutuhkan. Tentu saja, memanggil
systemd -Hjauh lebih mudah daripada mengimplementasikan tunneling SSH sendiriAgak membuat frustrasi bahwa systemd dan Linux modern punya begitu banyak data dan antarmuka yang bisa memudahkan administrasi sistem, khususnya pengelolaan desktop yang secara tradisional sulit dilihat bagian dalamnya, tetapi semuanya kurang terekspos
Dulu sulit mengetahui apa yang terjadi ketika aplikasi autostart xdg gagal, tetapi sekarang di sebagian desktop systemd menjalankan aplikasi autostart xdg, sehingga mudah membuat GUI yang menampilkan item autostart yang gagal dan penampil log
Namun rasanya belum ada alat yang terpelihara dan fiturnya relatif lengkap, jadi ini cukup membuat frustrasi
Singkatnya, AppImage dibuat dengan nix, dan AppImage “me-mount” direktori
/nix/yang ada di dalam AppImage. Ini bukan overlayJadi, panggilan dari TUI yang mengakses
/nix/tidak menuju direktori/nixmilik sistem, dan muncul berbagai masalah anehMisalnya, di Ubuntu Anda bisa memasang
EDITORlewat home-managerKarena
systemctl“dapat diakses”,isdakan mulai dengan normal, tetapi ketika membukaEDITORdi bawah/nix, itu tidak ditemukan, sehingga sangat membingungkan bagi penggunaJadi, jika Anda sudah memakai Nix, lebih mudah untuk mengatakan agar memakai metode instalasi Nix
Dokumentasi yang salah sekarang sudah saya perbaiki
Saya juga memahami frustrasi itu
Secara pribadi, membuat alat seperti itu akan sangat menyenangkan, tetapi itu bukan pekerjaan mudah, dan pertanyaannya juga siapa yang akan mendukung pekerjaan tersebut
TUI ini pun, meski cakupannya masih bisa dikelola, membutuhkan cukup banyak pekerjaan
Jadi saya rasa saya tidak akan terlalu banyak berinvestasi pada “antarmuka tingkat lebih tinggi”
Selain itu, saya tidak tahu mengapa komentar asli mendapat respons buruk
Ada yang bisa menjelaskan?
Terlihat bagus dan dibuat dengan baik
Namun agak disayangkan bahwa alat seperti ini sendiri memang diperlukan
Sebagian besar interaksi dengan systemd itu sepele: me-restart layanan, melihat berkas log untuk mencari tahu apa yang salah, memastikan layanan dimulai saat boot
Saya tidak mengerti mengapa usability systemd begitu kurang untuk tugas-tugas umum seperti ini
Meski begitu, TUI ini tampaknya membantu, jadi terima kasih
Tentu saja systemd, berbeda dari initd, lebih deterministik dan mencakup segala macam fitur
Untungnya sekarang sebagian besar interaksi seperti ini bisa diotomatisasi hingga menghilang, jadi kebencian membara seperti dulu sudah tidak ada lagi
Sekarang hanya seperti bara kecil
Namun akan sangat menyenangkan jika ada antarmuka yang lebih dekat ke proyek upstream
Hanya saja, menjadikan systemd ramah pemula dan mudah diakses tampaknya bukan hal yang terlalu penting dalam pendanaan mereka
Bagaimana keamanan ditangani?
Bukan soal izin sistem yang sudah ditangani Linux dengan baik, melainkan saya ingin tahu jaminan bahwa ini tidak akan diambil alih penyerang eksternal untuk kendali jarak jauh
Menurut saya ini pertanyaan penting yang harus Anda tanyakan pada diri sendiri saat menjalankan aplikasi atau skrip yang melakukan sesuatu dengan
sudoKarena itu, saya sudah menulis bagian Security yang cukup rinci di halaman dokumentasi isd
https://isd-project.github.io/isd/security/
Beri tahu saya jika ada yang terlewat