2 पॉइंट द्वारा GN⁺ 2025-01-19 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • isd एक ऐसा टूल है जो systemd यूनिट्स को मैनेज करने का बेहतर तरीका देता है। यह terminal user interface (TUI) के ज़रिये यूनिट्स खोजने, प्रीव्यू को अपने-आप रिफ्रेश करने, स्मार्ट sudo हैंडलिंग और user-customized interface उपलब्ध कराता है

संक्षिप्त प्रेरणा

  • isd systemd यूनिट्स के साथ इंटरैक्ट करने की जटिल प्रक्रिया को सरल बनाता है और उपयोगकर्ता को काम की जानकारी देता है
  • बार-बार systemctl कमांड टाइप करने की झंझट कम करता है और आउटपुट को अपने-आप रिफ्रेश करता है

इंस्टॉलेशन

  • isd को AppImage, nix, uv के माध्यम से इंस्टॉल किया जा सकता है
  • AppImage एक single executable file है जो सभी Linux distributions पर चल सकती है, इसलिए इसे सीमित permissions वाले remote servers पर भी इस्तेमाल किया जा सकता है
  • nix environment में isd इंस्टॉल करने के लिए nix package का उपयोग किया जा सकता है
  • uv एक Python package manager है, जिसके ज़रिये isd को इंस्टॉल और मैनेज किया जा सकता है

isd का उपयोग

  • isd systemd यूनिट्स को खोज सकता है, उनकी स्थिति देख सकता है, और कई यूनिट्स की detailed information को प्रीव्यू में दिखाता है
  • चुनी गई यूनिट पर systemctl कमांड भेजता है और status output को अपने-आप रिफ्रेश करता है
  • isd के भीतर pager खोलकर पूरा status output देखा जा सकता है
  • Journal output के लिए अलग pager खोला जा सकता है, और custom themes व key bindings सेट किए जा सकते हैं

user/system mode

  • isd user या system mode में चलता है, और मोड के अनुसार दिखाई देने वाले यूनिट्स के प्रकार बदलते हैं

fuzzy search

  • fuzzy search bar के ज़रिये इनपुट से मेल खाने वाले सभी यूनिट्स और यूनिट files लोड किए जाते हैं, और उनकी current state के अनुसार highlight किया जाता है

multiple unit selection

  • search result widget में कई यूनिट्स चुने जा सकते हैं, और चुनी गई यूनिट्स का प्रीव्यू दिया जाता है

command palette

  • command palette खोलकर सभी उपलब्ध commands और key bindings देखे जा सकते हैं

commands

  • उदाहरण के लिए, Ctrl+O दबाकर चुनी गई यूनिट को रोका जा सकता है

pager support

  • isd चलाते समय pager खोलकर पूरा preview output देखा जा सकता है

customization

  • isd customization और configurability देता है, ताकि उपयोगकर्ता अपनी सर्वोत्तम productivity के लिए विभिन्न themes और key bindings का उपयोग कर सके

सारांश

  • यह उपयोगी है या नहीं, इसे समझने के लिए isd को खुद आज़माने की सलाह दी जाती है

अगले कदम

  • customization और security sections देखें

1 टिप्पणियां

 
GN⁺ 2025-01-19
Hacker News टिप्पणियां
  • देखने में अच्छा है
    systemd service scripts में ExecStop को handle करने का तरीका सच में काफी confusing था
    ExecStart वह command है जो system boot के समय या user द्वारा service start करने पर चलती है, लेकिन ExecStop start command खत्म होने के बाद चलता है
    अगर system shutdown या user द्वारा service रोकने पर stop command चलवानी हो, तो RemainAfterExit=yes set करना पड़ता है
    ExecStop असल में “service stop करने” वाले event से ज्यादा “cleanup के समय” वाले event के करीब है

    • इसे “start के समय” और “stop के समय” की तरह सोच सकते हैं
      यह याद रखना चाहिए कि systemd daemons के हिसाब से बना है
      अगर service सिर्फ एक command चलाती है जो कभी न कभी खत्म हो जाती है, तो systemd को साफ बताना होगा कि उसे daemon से अलग तरह से treat करे
      जैसा बाकी लोगों ने कहा, शायद oneshot + RemainAfterExit वही combination है जो आप चाहते हैं
    • type=forking में ExecStop expected तरीके से काम करता है
  • सच में बहुत पसंद आया
    बीमार पड़ने तक सिर्फ pure command line इस्तेमाल करता रहा, लेकिन हाल में lazygit/lazydocker जैसे tools से opaque system/tree state में झांकना शुरू किया और productivity काफी बढ़ गई
    मैं कई user और system-level services manage करता हूं, लेकिन debugging उबाऊ है
    पहले sentence में common commands और उनकी असुविधा गिनाने वाला हिस्सा सच में relate हुआ
    NixOS होने की वजह से immutable unit files को सीधे edit करने वाला तरीका काम नहीं करेगा, लेकिन service exploration, visibility और management काफी मददगार लगते हैं

    • मैं भी NixOS user हूं, और इसी वजह से यह project बनाया
      docs में “guide” जोड़ने की योजना है, लेकिन summary यह है कि NixOS में unit debug करते समय systemctl edit --runtime देखना अच्छा रहेगा
      debugging काफी आसान हो जाती है
  • बहुत अच्छा लग रहा है
    मैं एक similar project maintain करता हूं और systemd/dbus API से deal करना काफी painful रहा है
    इसे इस्तेमाल करके देखना चाहता हूं कि कुछ सीखने को मिलता है या नहीं
    https://github.com/rgwood/systemctl-tui

    • कमाल है
      शायद खूब इस्तेमाल करूंगा
      बस deb package की कमी है
  • आखिरकार systemd-client आ गया, अच्छा लगा
    अगला step macOS, FreeBSD, Windows जैसे non-Linux के लिए TUI हो तो अच्छा होगा
    macOS पर LaunchControl.app इस्तेमाल करता हूं, लेकिन वह TUI नहीं है
    एक बात, uv 0.5.21 में नीचे की तरह करना पड़ा और uvx बिल्कुल काम नहीं कर रहा था
    $ uv tool install git+https://github.com/isd-project/isd
    इसके बजाय docs का $ uv tool install https://github.com/isd-project/isd/isd@latest काम नहीं किया
    फिर भी uv, pip(x) से काफी तेज है, इसलिए मैंने switch कर लिया

    • गलती थी और अब ठीक कर दी गई है
      बताने के लिए धन्यवाद
  • uv की वजह से ऐसे tools install करना इतना आसान हो जाना बढ़िया है
    install procedure में एक चीज छूटी है: uv Python dependencies को नजरअंदाज करके यह tool install करता है
    मेरी machine 3.10 पर है, इसलिए isd नहीं चला, और -p 3.13 option से यह solve हो गया
    docs में mention करने लायक है

    • बताने के लिए धन्यवाद
      वह flag docs में शामिल कर दिया है
  • “अगर type करते-करते कभी irritate हुए हों” — यह तो बिल्कुल मेरी बात है
    जबकि मुझे systemd पसंद है, फिर भी ऐसा है
    अभी install करके नहीं देखा, लेकिन जानना चाहता हूं कि क्या यह remote host से connect कर सकता है
    मैं अक्सर systemctl --host status foo.service इस्तेमाल करता हूं, और status, timers, logs वगैरह remote से check करता हूं

    • systemctl --host पहली बार सुन रहा हूं
      अफसोस, यह supported नहीं है
      मोटे तौर पर यह local systemctl के ऊपर एक fancy wrapper जैसा है
      फिर भी AppImage है, इसलिए remote server पर चलाना hopefully आसान हो सकता है
      खैर, issue खोलें तो मैं देखूंगा
  • remote servers या Docker images में ऐसी चीज install नहीं कर सकते
    command चलाने और जानकारी collect करने के लिए कई backends चाहिए: local, SSH, Docker
    local पर install करने के बाद SSH से remote machine पर commands चला सकना चाहिए, और docker exec से भी चला सकना चाहिए

  • “अगर Nix installed है तो यह AppImage काम नहीं करेगा” — क्या यह सचमुच सही है, इस पर शक है
    NixOS पर काम न करने की वजह समझ आती है। ऐसा लग रहा था कि यह host का systemctl चला नहीं पा रहा था
    लेकिन सिर्फ किसी दूसरे OS पर Nix installed होने भर से यह न चले, इसकी कोई वजह नहीं दिखती
    दिलचस्प बात यह है कि Nix v2.24.11 में दिया गया Nix command भी काम नहीं कर रहा था
    $ nix run https://github.com/isd-project/isd Failed to open archive (Unrecognized archive format) के साथ fail हो गया
    Git URL फॉर्म में बदलने पर शायद चल जाए, लेकिन Nix में ज़्यादा efficient built-in GitHub fetcher है, इसलिए असली command nix run github:isd-project/isd सही लगती है
    यह project अपने आप में बढ़िया है
    मैं असल में systemd की DBus API और Qt से कुछ ऐसा ही बनाना चाहता था, और थोड़ा code भी लिखा था
    DBus API में ज़रूरी functionality लगभग मिल जाने की संभावना है। हालांकि अपनी SSH tunneling implement करने की तुलना में systemd -H call करना बेशक कहीं आसान है
    systemd और आधुनिक Linux में system management, खासकर desktop management को आसान बनाने के लिए data और interfaces भरे पड़े हैं—एक ऐसा क्षेत्र जो परंपरागत रूप से अंदर से ज़्यादा दिखाई नहीं देता था—फिर भी उनका सही exposure न होना परेशान करता है
    पहले जब xdg auto-start app fail होता था, तो यह जानना मुश्किल होता था कि हुआ क्या; अब कुछ desktops में systemd xdg auto-start apps चलाता है, इसलिए failed auto-start items और log viewer दिखाने वाला GUI बनाना आसान है
    लेकिन maintain होने वाला और feature-wise काफ़ी complete tool नहीं दिखता, यह काफ़ी frustrating है

    • सही है, बात जटिल हो गई थी, इसलिए recommend करते हुए details समझाना नहीं चाहता था
      संक्षेप में, AppImage को nix से generate किया जाता है, और AppImage अपने अंदर की /nix/ directory को “mount” करता है। यह overlay नहीं है
      इसलिए TUI में /nix/ तक access करने वाली calls system की /nix directory तक नहीं जातीं, और तरह-तरह की अजीब समस्याएँ आती हैं
      उदाहरण के लिए Ubuntu पर home-manager से EDITOR install किया जा सकता है
      systemctl “accessible” है, इसलिए isd ठीक से start हो जाता है, लेकिन /nix के नीचे मौजूद EDITOR खोलने पर वह नहीं मिलता, जो user के लिए बहुत confusing है
      इसलिए अगर आप पहले से Nix इस्तेमाल कर रहे हैं, तो Nix installation method इस्तेमाल करने को कहना ज़्यादा आसान है
      गलत documentation अब ठीक कर दी है
      उस frustration से भी सहमत हूँ
      निजी तौर पर ऐसा tool बनाना सच में मज़ेदार होगा, लेकिन यह आसान काम नहीं है, और कौन उस काम को support करेगा यह भी सवाल है
      इस TUI का scope manageable था, फिर भी इसमें काफ़ी काम लगा
      इसलिए शायद “higher-level interface” में बहुत ज़्यादा invest नहीं करूँगा
      वैसे, original comment पर reaction खराब क्यों है, समझ नहीं आ रहा
    • मुझे बिल्कुल समझ नहीं आ रहा कि इस comment पर reaction खराब क्यों है
      कोई समझा सकता है?
  • शानदार दिखता है और अच्छी तरह बनाया गया है
    बस अफ़सोस है कि ऐसे tool की ज़रूरत पड़ती है
    systemd के साथ ज़्यादातर interaction मामूली होते हैं: service restart करना, log file देखकर पता लगाना कि क्या गलत हुआ, boot पर service start होती है या नहीं यह check करना
    ऐसे common tasks में systemd की usability इतनी कम क्यों है, यह समझ नहीं आता
    फिर भी यह TUI मददगार लगता है, इसलिए धन्यवाद
    बेशक systemd, initd के उलट ज़्यादा deterministic है और हर तरह की functionality साथ लाता है
    अच्छी बात है कि आजकल इन interactions में से ज़्यादातर को automate करके गायब किया जा सकता है, इसलिए पहले जैसी जलती हुई नफ़रत अब नहीं है
    अब बस धीमी आँच जैसी रह गई है

    • समझ आता है कि systemd में एक complex और subjective TUI डालकर उसे “bloated” क्यों नहीं बनाना चाहेंगे
      फिर भी अगर कोई interface upstream project के थोड़ा करीब होता, तो सच में अच्छा होता
      हालांकि systemd को beginner-friendly और accessible बनाना उनकी funding में बहुत महत्वपूर्ण नहीं लगता
  • Security कैसे handle की गई है?
    मेरा मतलब system permissions से नहीं है, जिसे Linux अच्छी तरह संभालता है; जानना यह है कि बाहरी attacker इसे hijack करके remote control नहीं कर पाएगा, इसकी क्या guarantee है

    • लेखक हूँ
      मुझे लगता है कि sudo से कुछ करने वाली application या script चलाते समय खुद से पूछने के लिए यह एक महत्वपूर्ण सवाल है
      इसलिए मैंने isd docs page में काफ़ी detailed Security section लिखा है
      https://isd-project.github.io/isd/security/
      अगर कुछ छूट गया हो तो बताइए