Show HN: İnteraktif Systemd – Systemd üniteleriyle çalışmanın geliştirilmiş yolu
(isd-project.github.io)isd,systemdünitelerini yönetmek için daha iyi bir yöntem sunan bir araçtır; terminal kullanıcı arayüzü (TUI) üzerinden üniteleri aramayı, önizlemeyi otomatik yenilemeyi, akıllısudokullanımını ve özelleştirilebilir bir arayüzü sağlar.
Kısa motivasyon
isd,systemdüniteleriyle etkileşim için gereken karmaşık süreci basitleştirerek kullanıcıya faydalı bilgiler sunar.systemctlkomutunu tekrar tekrar yazma zahmetini azaltır ve çıktı sonuçlarını otomatik olarak yeniler.
Kurulum
isd, AppImage, nix ve uv üzerinden kurulabilir.- AppImage, tüm Linux dağıtımlarında çalışabilen tek bir yürütülebilir dosyadır; bu sayede izinlerin kısıtlı olduğu uzak sunucularda da kullanılabilir.
isd'yi nix ortamında kurmak için nix paketi kullanılabilir.- uv bir Python paket yöneticisidir;
isd, uv aracılığıyla kurulup yönetilebilir.
isd kullanımı
isd,systemdünitelerini arar, durumlarını kontrol eder ve birden fazla ünite için ayrıntılı bilgileri önizleme olarak sunar.- Seçilen üniteye
systemctlkomutları gönderir ve durum çıktısını otomatik olarak yeniler. isdiçindepageraçarak tam durum çıktısı görüntülenebilir.Journalçıktısı için ayrı birpageraçılabilir; ayrıca özel tema ve tuş atamaları yapılandırılabilir.
Kullanıcı/sistem modu
isd,userveyasystemmodunda çalışır ve görüntülenen ünite türleri moda göre değişir.
Bulanık arama
- Bulanık arama çubuğu üzerinden girilen içerikle eşleşen tüm üniteler ve ünite dosyaları yüklenir, mevcut durumlarına göre vurgulanır.
Birden fazla ünite seçimi
- Arama sonucu bileşeninde birden fazla ünite seçilebilir ve seçilen ünitelerin önizlemesi sunulur.
Komut paleti
- Komut paleti açılarak kullanılabilir tüm komutlar ve tuş atamaları görülebilir.
Komutlar
- Örneğin,
Ctrl+Otuşlarına basarak seçili ünite durdurulabilir.
Pager desteği
isdçalışırkenpageraçılarak tam önizleme çıktısı görüntülenebilir.
Özelleştirme
isd, kullanıcıların en yüksek verimliliğe ulaşabilmesi için çeşitli temalar ve tuş atamalarıyla özelleştirme ve yapılandırma imkânı sunar.
Özet
isd'nin faydalı olup olmadığını anlamak için bizzat denenmesi önerilir.
Sonraki adımlar
- Özelleştirme ve güvenlik bölümlerine göz atın
1 yorum
Hacker News yorumları
Güzel görünüyor
systemd servis betiklerinde ExecStop’un ele alınma biçimi gerçekten kafa karıştırıcıydı
ExecStart, sistem açılırken ya da kullanıcı servisi başlattığında çalıştırılacak komut; amaExecStop, başlatma komutu bittikten sonra çalıştırılıyorSistem kapanırken ya da kullanıcı servisi durdurduğunda stop komutunun çalışmasını istiyorsanız
RemainAfterExit=yesayarlamanız gerekiyorExecStopaslında “servis sonlandırma” olayından çok “temizlik zamanı” olayına daha yakınsystemd’nin daemon’lara göre tasarlandığını unutmamak gerekiyor
Servisiniz yalnızca bir noktada sona eren tek bir komut çalıştırıyorsa, systemd’ye bunu bir daemon’dan farklı ele almasını açıkça belirtmeniz gerekir
Başkalarının da söylediği gibi, muhtemelen istediğiniz kombinasyon
oneshot+RemainAfterExittype=forkingaltında ExecStop beklendiği gibi çalışıyorGerçekten hoşuma gitti
Kendimi hasta edene kadar saf komut satırı kullanıyordum; son zamanlarda
lazygit/lazydockergibi araçlarla opak sistem/ağaç durumlarına bakmaya başladım ve üretkenliğim ciddi biçimde arttıKullanıcı ve sistem düzeyinde birkaç servis yönetiyorum ama hata ayıklaması sıkıcı
İlk cümlede yaygın komutların ve bunların zahmetinin sıralandığı kısım tam bana hitap etti
NixOS kullandığım için değişmez unit dosyalarını doğrudan düzenleme yöntemi işe yaramaz, ama servisleri keşfetme, görünürlük ve yönetim açısından çok yardımcı olacak gibi
Belgelere bir “rehber” eklemeyi planlıyorum; kısaca, NixOS’ta unit hata ayıklarken
systemctl edit --runtimekomutuna bakmak iyi olurHata ayıklamayı çok daha kolaylaştırıyor
Çok iyi görünüyor
Benzer bir projeyi sürdürüyorum ve systemd/dbus API ile uğraşmak epey sancılıydı
Bunu deneyip öğrenebileceğim bir şeyler var mı görmek istiyorum
https://github.com/rgwood/systemctl-tui
Bunu çok kullanacak gibiyim
Eksik olan tek şey bir deb paketi
Sonunda systemd-client çıkmış, sevindirici
Bir sonraki adımın macOS, FreeBSD, Windows gibi Linux dışı TUI’lar olmasını isterim
macOS’ta LaunchControl.app kullanıyorum ama TUI değil
Bir not:
uv 0.5.21ile aşağıdaki gibi yapmam gerekti;uvxise hiç çalışmadı$ uv tool install git+https://github.com/isd-project/isdBuna karşılık belgelerdeki
$ uv tool install https://github.com/isd-project/isd/isd@latestçalışmadıYine de
uv,pip(x)’ten çok daha hızlı olduğu için ona geçtimBildirdiğin için teşekkürler
uvsayesinde böyle araçları kurmanın bu kadar kolaylaşması harikaKurulum adımlarında eksik olan nokta,
uv’nin Python bağımlılığını yok sayıp bu aracı kurmasıBenim makinem 3.10’du, bu yüzden
isdçalışmadı;-p 3.13seçeneğiyle çözdümBelgelerde bahsetmeye değer
O bayrağı belgelere ekledim
“Yazarken sinir olduysanız” demiş ya, tam benlik
systemd’yi sevmeme rağmen böyle
Henüz kurmadım ama uzak host’a bağlanabiliyor mu merak ediyorum
systemctl --host status foo.servicekomutunu sık kullanıyorum; status, timers, logs vb. bilgileri uzaktan kontrol ediyorumsystemctl --host’u ilk kez duyuyorumNe yazık ki desteklenmiyor
Kabaca yerel
systemctl’i saran süslü bir wrapper’a daha yakınYine de AppImage olduğu için uzak sunucuda çalıştırmak hopefully kolay olabilir
Her hâlükârda bir issue açarsan bakarım
Uzak sunuculara ya da Docker imajlarına böyle bir şeyi kuramazsınız
Komut çalıştırma ve bilgi toplama için birden fazla backend gerekiyor: yerel, SSH, Docker
Yerelde kurulduktan sonra SSH ile uzak makinede komut çalıştırabilmeli,
docker execile de çalıştırabilmeli“Nix kuruluysa bu AppImage çalışmaz” ifadesinin gerçekten doğru olup olmadığını merak ediyorum.
NixOS’ta çalışmamasının nedenini anlıyorum. Ana makinenin
systemctlkomutunu çalıştıramıyor gibi görünüyordu.Ama yalnızca başka bir işletim sisteminde Nix kurulu diye çalışmaması için bir neden yok gibi.
İlginç şekilde Nix v2.24.11’de verilen Nix komutu da çalışmadı.
$ nix run https://github.com/isd-project/isd,Failed to open archive (Unrecognized archive format)hatasıyla başarısız oluyor.Git URL biçimine çevrilirse çalışabilir, ama Nix’te daha verimli yerleşik bir GitHub fetcher olduğundan doğru komut aslında
nix run github:isd-project/isdgibi görünüyor.Projenin kendisi harika.
Aslında systemd’nin DBus API’si ve Qt ile benzer bir şey yapmak istiyordum; biraz kod da yazmıştım.
DBus API’nin gereken işlevlerin neredeyse tamamını sağlama ihtimali yüksek. Elbette kendi SSH tünellemesini uygulamaktansa
systemd -Hçağırmak çok daha kolay.systemd ve modern Linux’ta sistem yönetimini, özellikle de geleneksel olarak içi pek görünmeyen masaüstü yönetimini kolaylaştıracak veri ve arayüzler fazlasıyla var; buna rağmen bunların iyi görünür olmaması sinir bozucu.
Eskiden bir xdg otomatik başlatma uygulaması başarısız olduğunda ne olduğunu anlamak zordu; ama artık bazı masaüstlerinde systemd xdg otomatik başlatma uygulamalarını çalıştırdığı için, başarısız otomatik başlatma öğelerini ve bir log görüntüleyiciyi gösteren bir GUI yapmak kolay.
Yine de bakımı yapılan ve özellikleri nispeten tamamlanmış bir araç yok gibi; bu oldukça can sıkıcı.
Özetle AppImage nix ile oluşturuluyor ve AppImage, AppImage içindeki
/nix/dizinini “mount” ediyor. Overlay değil.Bu yüzden TUI içinde
/nix/’e erişen çağrılar sistemin/nixdizinine gitmiyor ve türlü tuhaf sorunlar ortaya çıkıyor.Örneğin Ubuntu’da home-manager ile
EDITORkurabilirsiniz.systemctl“erişilebilir” olduğundanisdnormal başlıyor; ancak/nixaltındakiEDITORaçılmaya çalışıldığında bulunamıyor, bu da kullanıcı açısından çok kafa karıştırıcı.Bu yüzden zaten Nix kullanıyorsanız Nix kurulum yöntemini kullanın demek daha kolay.
Hatalı dokümantasyonu şimdi düzelttim.
O hayal kırıklığını da paylaşıyorum.
Şahsen böyle bir araç yapmak gerçekten eğlenceli olurdu, ama kolay bir iş değil; ayrıca bu işi kimin finanse edeceği de ayrı mesele.
Bu TUI’nin kapsamı yönetilebilir olmasına rağmen epey iş çıkardı.
Bu yüzden “daha üst seviye arayüzlere” çok fazla yatırım yapacağımı sanmıyorum.
Bu arada, asıl yorumun neden kötü tepki aldığını bilmiyorum.
Biri açıklayabilir mi?
Harika görünüyor ve iyi yapılmış.
Yine de böyle bir araca ihtiyaç duyulması başlı başına üzücü.
systemd ile etkileşimlerin çoğu basit şeyler: servisi yeniden başlatmak, log dosyalarına bakıp neyin yanlış gittiğini anlamak, servisin açılışta başlayıp başlamadığını kontrol etmek.
Bu kadar yaygın işlerde systemd’nin kullanılabilirliğinin bu kadar yetersiz olmasını anlayamıyorum.
Yine de bu TUI yardımcı oluyor gibi, teşekkürler.
Elbette systemd, initd’den farklı olarak daha deterministik ve her türlü özelliği içinde barındırıyor.
Neyse ki bugünlerde bu etkileşimlerin çoğunu otomatikleştirip ortadan kaldırmak mümkün; eski günlerdeki yakıcı nefret artık yok.
Şimdiyse daha çok köz gibi.
Yine de üst projeye daha yakın bir arayüz olsaydı gerçekten iyi olurdu.
Ancak systemd’yi yeni başlayanlar için dostça ve erişilebilir kılmak, finansmanlarında pek önemli değil gibi görünüyor.
Güvenlik nasıl ele alınıyor?
Linux’un iyi yönettiği sistem izinlerinden bahsetmiyorum; dış bir saldırgan tarafından ele geçirilip uzaktan kontrol edilmeyeceğine dair güvenceyi merak ediyorum.
sudoile bir şeyler yapan bir uygulama ya da script çalıştırırken insanın kendine sorması gereken önemli bir soru olduğunu düşünüyorum.Bu yüzden isd dokümantasyon sayfasına oldukça ayrıntılı bir Security bölümü yazdım.
https://isd-project.github.io/isd/security/
Eksik bir şey varsa haber verirseniz sevinirim.