38 पॉइंट द्वारा GN⁺ 2025-12-27 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Witr (why-is-this-running) एक ऐसा टूल है जो Linux सिस्टम में किसी खास process, service, या port के क्यों चलने को स्पष्ट रूप से दिखाता है
  • मौजूदा ps, top, lsof आदि जहाँ सिर्फ “क्या चल रहा है” दिखाते हैं, वहीं यह “क्यों चल रहा है” की causal relationship को एक ही स्क्रीन पर दिखाता है
  • PID-आधारित analysis के जरिए process की origin, execution path, बने रहने की वजह, और जुड़े context को ट्रैक करता है
  • systemd, docker, pm2, cron, shell जैसे कई sources के साथ जुड़कर चलने की वजह समझाता है, और read-only·non-destructive तरीके से काम करता है
  • debugging और incident response के समय समझने में लगने वाला समय कम करता है, और complex सिस्टम की execution structure को एक नज़र में समझने में मदद करता है

उद्देश्य और अवधारणा

  • Witr का मुख्य सवाल है, “यह क्यों चल रहा है? (why-is-this-running)”
    • process, service, port जैसी सभी running entities की origin और वजह को ट्रेस करता है
    • कई layers (supervisor, container, service, shell आदि) में फैली indirect execution causes को स्पष्ट रूप से दिखाता है
  • जहाँ मौजूदा tools सिर्फ state और metadata देते हैं, Witr causal relationship को साफ़ तौर पर व्यक्त करता है
  • नतीजतन “क्या, कैसे, क्यों, और किस context में चल रहा है” को इंसानों के पढ़ने लायक रूप में आउटपुट करता है

मुख्य लक्ष्य

  • किसी process के मौजूद होने की वजह समझाना, और सिर्फ run हो रहा है या नहीं उससे आगे की जानकारी देना
  • debugging और incident response का समय कम करना
  • बिना configuration के तुरंत इस्तेमाल योग्य, read-only·safe
  • पूर्णता से ज़्यादा स्पष्टता को प्राथमिकता
  • monitoring, performance analysis, और auto-recovery features शामिल नहीं हैं

काम करने का तरीका

  • हर target को process (PID) के केंद्र में रखकर समझता है
    • port, service, container, command — सबको PID से जोड़ता है
    • PID के आधार पर execution causal chain बनाता है
  • चार मुख्य सवाल
    1. क्या चल रहा है
    2. यह कैसे शुरू हुआ
    3. इसे क्या बनाए रखे हुए है
    4. यह किस context से जुड़ा है

समर्थित target

  • इनपुट के रूप में process/service name, PID, port number को सपोर्ट करता है
    • name देने पर अगर कई processes match हों, तो PID चुनने को कहता है
    • --pid, --port options से किसी खास process या port पर analysis किया जा सकता है

आउटपुट संरचना

  • Target: यूज़र द्वारा दिया गया target
  • Process: executable, PID, user, command, start time, restart count
  • Why It Exists: process की causal ancestry chain
  • Source: execution के लिए ज़िम्मेदार मुख्य सिस्टम (जैसे systemd, docker, pm2, cron, shell में से एक)
  • Context: working directory, Git repository, Docker container, bind information आदि
  • Warnings: root privileges पर run होना, public interface पर listening, लंबे समय से चलना, ज़्यादा memory usage जैसी non-blocking warnings

command line options

  • --pid, --port: किसी खास PID या port का analysis
  • --short: एक लाइन का सार
  • --tree: पूरा process tree दिखाना
  • --json: JSON format में output
  • --warnings: सिर्फ warnings दिखाना
  • --no-color: रंग बंद करना
  • --env: सिर्फ environment variables दिखाना
  • --help: help दिखाना

installation और removal

  • single static Linux binary के रूप में distribute किया जाता है
  • script install (recommended)
  • manual install
    • amd64, arm64 के लिए binaries सीधे डाउनलोड करें और checksum verify करें
    • execute permission देने के बाद PATH में ले जाएँ
  • verification और removal
    • witr --version, man witr से जाँचें
    • sudo rm -f /usr/local/bin/witr से हटाया जा सकता है
  • Nix Flake support: nix run github:pranshuparmar/witr -- --port 5000 से चलाया जा सकता है

platform और permissions

  • सिर्फ Linux के लिए
  • जानकारी इकट्ठा करने के लिए /proc access का उपयोग
    • कुछ process जानकारी देखने के लिए sudo privileges की ज़रूरत पड़ सकती है

1 टिप्पणियां

 
GN⁺ 2025-12-27
Hacker News टिप्पणियाँ
  • सुझाव दिया गया कि README में GIF loop बहुत जल्दी फिर से शुरू हो जाता है, इसलिए पूरा output पढ़ना मुश्किल है
    अच्छा होगा अगर वह कुछ सेकंड और रुका रहे

    • सच कहूँ तो मुझे लगता है screenshot GIF से बेहतर है
      सिर्फ आख़िरी frame देखकर भी सारी ज़रूरी जानकारी मिल जाती है
    • feedback के लिए धन्यवाद! शुरुआत में यह ठीक लगा था, लेकिन user के नज़रिए से देखने पर काफ़ी असुविधाजनक लगा
      इसे पहले ही static image से बदल दिया गया है, और सुझाए गए सभी विचारों के लिए धन्यवाद
    • मुझे भी लगता है कि GIF की ख़ास ज़रूरत नहीं है
      यह दिखाता है कि command तेज़ है, लेकिन आख़िरी frame में सब कुछ पहले से मौजूद है और bandwidth efficiency भी कम है
    • असल में सबसे आसान समाधान है animation को पूरी तरह हटा देना
      output screen को 100% पर रुका हुआ रखा जा सकता है। terminal में typing कैसी दिखती है, यह सब पहले से जानते हैं
    • ऐसे GIF अपने-आप बनाने के लिए charmbracelet/vhs जैसी utility बहुत उपयोगी है
  • यह टूल मौजूदा monitoring/observability tools को replace करने के लिए नहीं है
    इसका मकसद SSH से जुड़ने पर जल्दी समझना है कि “यह क्यों चल रहा है?”
    feedback के आधार पर इसकी दिशा बदलने की इच्छा है

    • मुझे यह वाकई बहुत चतुर आइडिया लगता है
      जब कोई process बहुत resource इस्तेमाल करने लगे, तब उसका मकसद समझना हमेशा मुश्किल रहा है
      पहले मुझे लगा था कि यह process का function भी समझा देगा, लेकिन ऐसा नहीं था
      फिर भी यह शानदार टूल है। बाद में इसे Man page + process DB जोड़कर विस्तार योग्य बनाया जा सकता है
  • उपयोगी लगता है, लेकिन अभी का output ज़्यादातर सिर्फ ppid दिखाता है, इसलिए “किसने चलाया” तो पता चलता है, लेकिन “क्यों चला” समझना मुश्किल है
    कई output formats का समर्थन अच्छा है। automation environment को ध्यान में रखते हुए JSON या grep-friendly format को default बनाना और बेहतर हो सकता है

    • feedback के लिए धन्यवाद! “कौन” और “क्यों” को और स्पष्ट रूप से अलग दिखाने की दिशा में विचार कर रहा हूँ
      default output इंसानों के लिए पढ़ने योग्य बनाया गया है, लेकिन automation के लिए JSON flag पहले से उपलब्ध है
      grep करना और आसान हो, ऐसे format पर भी सोचूँगा
  • दिलचस्प टूल है, लेकिन curl से binary install करना ठीक नहीं लगता
    बाद में “यह कैसे install हुआ?” या “security patch अपडेट है?” जैसी दिक्कतें आ सकती हैं
    deb package या snap हो तो अच्छा रहेगा

    • समझता हूँ कि curl install सबके लिए उपयुक्त नहीं है
      यह पहला release था, इसलिए चीज़ों को सरल रखा गया, लेकिन अगर इसे लोकप्रियता मिलती है तो official package distribution की योजना है
    • लगता है जल्द ही एक नई utility command आएगी — wdtci: “what does this curl install?”
    • जानकारी के लिए, systemctl status $pid command से भी बहुत-सी जानकारी मिल सकती है
  • witr भरोसे पर आधारित है” यह वाक्य और “AI/LLM की मदद से विकसित किया गया” यह विवरण विरोधाभासी लगता है

    • “कभी-कभी कोई इंसान जो जानता था कि क्या हो रहा है, उसने निगरानी की” यह वाक्य मज़ाक जैसा लगता है, लेकिन अगर इसे गंभीरता से पढ़ें तो असहजता होती है
      अगर LLM के output की समीक्षा हो और code review ठीक से किया जाए, तो इस पर भरोसा किया जा सकता है
      फिर भी LLM के इस्तेमाल को पारदर्शी ढंग से बताया गया, यह अच्छी बात है
    • सही है, वह पंक्ति हास्य के लिए लिखी गई थी और LLM सिर्फ सहायक भूमिका में था
      असली फ़ैसले इंसान ने लिए
    • मेरे लिए अगर code ठीक से काम करता है, तो वही काफ़ी है
      अगर development नतीजों पर केंद्रित था, तो मुझे यह ठीक लगता है
    • लेकिन malware द्वारा process relations को fake करना अब भी आसान है
    • सच कहूँ तो मुझे लगता है LLM कई बार इंसान से बेहतर तरह से context समझ सकता है
  • यह सचमुच शानदार और उपयोगी टूल है
    लेकिन ऊपर बताए गए कारणों से production environment में इसे तुरंत इस्तेमाल करना मुश्किल है
    Debian या RPM package मिल जाए तो अच्छा होगा

    • धन्यवाद! पहला release होने की वजह से चीज़ों को सरल रखा गया, लेकिन अगर इसे लोकप्रियता मिलती है तो औपचारिक package तैयार किए जाएँगे
  • source से सीधे build करने के लिए यह command इस्तेमाल की जा सकती है

    CGO_ENABLED=0 go build -ldflags "-X main.version=dev -X main.commit=$(git rev-parse --short HEAD) -X 'main.buildDate=$(date +%Y-%m-%d)'" -o witr ./cmd/witr
    

    व्यक्तिगत रूप से, अगर install.sh है तो मैं local source-first install की उम्मीद करता हूँ
    यही वजह है कि ऐसे सरल टूल terminal में लंबे समय तक बने रहते हैं

    • धन्यवाद! @sestep की वजह से Nix support पहले ही जोड़ दिया गया है, इसलिए binary को लेकर चिंता नहीं है
    • या फिर बस Nix PR का इस्तेमाल भी किया जा सकता है
  • “Git repository name and branch” का मतलब क्या है, यह जानना चाहता हूँ
    क्या यह पता लगाता है कि चल रहा process Git repository के अंदर चला था?

    • हाँ, यह process की working directory से ऊपर की ओर जाते हुए .git directory ढूँढता है
      संबंधित code link
  • आइडिया शानदार है। पहले मैंने “whodis” alias बनाया था जो port खोलने वाले PID को ढूँढने के काम आता था, लेकिन यह उससे कहीं ज़्यादा शक्तिशाली है

    • धन्यवाद! लक्ष्य है PID जानकारी के Swiss Army knife जैसा टूल बनाना
  • यह सचमुच अद्भुत टूल है। साझा करने के लिए धन्यवाद
    क्या मैं इसका AUR package बना सकता हूँ?

    • बिल्कुल! AUR में डालना शानदार होगा। बहुत-बहुत धन्यवाद
    • मैं इसका लेखक नहीं हूँ, लेकिन AUR version आ जाए तो बहुत अच्छा होगा
      Arch की ख़ासियत यही है कि ऐसे दिलचस्प टूल बहुत जल्दी AUR पर आ जाते हैं