- Witr (why-is-this-running) adalah alat yang dengan jelas menunjukkan mengapa proses, layanan, atau port tertentu berjalan di sistem Linux
- Berbeda dari
ps, top, lsof yang hanya menunjukkan “apa yang sedang berjalan”, alat ini menampilkan hubungan sebab-akibat dari “mengapa ini berjalan” dalam satu layar
- Melalui analisis berbasis PID, alat ini melacak asal proses, jalur eksekusi, alasan proses tetap berjalan, dan konteks tempatnya berada
- Menjelaskan penyebab eksekusi dengan terhubung ke berbagai sumber seperti systemd, docker, pm2, cron, shell, serta bekerja dalam mode read-only dan non-destruktif
- Saat debugging dan penanganan gangguan, alat ini mempercepat waktu pemahaman dan membantu melihat struktur eksekusi sistem yang kompleks secara sekilas
Tujuan dan konsep
- Pertanyaan inti Witr adalah “mengapa ini berjalan? (why-is-this-running)”
- Melacak asal dan penyebab dari semua hal yang sedang berjalan seperti proses, layanan, dan port
- Menunjukkan secara eksplisit penyebab eksekusi tidak langsung yang melintasi beberapa lapisan seperti supervisor, container, service, dan shell
- Sementara alat yang ada hanya menyediakan status dan metadata, Witr mengekspresikan hubungan sebab-akibat dengan jelas
- Hasilnya, alat ini menampilkan “apa yang berjalan, bagaimana dimulai, mengapa berjalan, dan dalam konteks apa” dalam bentuk yang mudah dibaca manusia
Tujuan utama
- Menjelaskan alasan keberadaan proses dan memberikan informasi lebih dari sekadar status berjalan atau tidak
- Memperpendek waktu debugging dan respons terhadap gangguan
- Bisa langsung dipakai tanpa konfigurasi, read-only dan aman
- Mengutamakan kejelasan dibanding kelengkapan
- Tidak mencakup fitur monitoring, analisis performa, atau pemulihan otomatis
Cara kerja
- Semua target ditafsirkan dengan berpusat pada proses (PID)
- Port, layanan, container, dan perintah semuanya dihubungkan ke PID
- Berdasarkan PID, alat ini menyusun causal chain eksekusi
- Empat pertanyaan inti
- Apa yang sedang berjalan
- Bagaimana itu dimulai
- Apa yang menjaganya tetap berjalan
- Termasuk dalam konteks apa
Target yang didukung
- Mendukung nama proses/layanan, PID, dan nomor port sebagai input
- Jika input nama cocok dengan beberapa proses, pengguna akan diminta memilih PID
- Dengan opsi
--pid, --port, analisis bisa dilakukan berdasarkan proses atau port tertentu
Struktur output
- Target: target yang ditentukan pengguna
- Process: executable, PID, pengguna, perintah, waktu mulai, jumlah restart
- Why It Exists: rantai asal-usul kausal (ancestry chain) proses
- Source: sistem utama yang menjalankan proses (misalnya salah satu dari systemd, docker, pm2, cron, shell)
- Context: direktori kerja, repositori Git, container Docker, informasi bind, dan sebagainya
- Warnings: peringatan non-blocking seperti dijalankan dengan hak root, listening pada interface publik, berjalan terlalu lama, penggunaan memori berlebihan, dan sebagainya
Opsi baris perintah
--pid, --port: menganalisis PID atau port tertentu
--short: ringkasan satu baris
--tree: tampilkan seluruh process tree
--json: output dalam format JSON
--warnings: tampilkan hanya peringatan
--no-color: nonaktifkan warna
--env: tampilkan hanya environment variable
--help: tampilkan bantuan
Instalasi dan penghapusan
- Didistribusikan sebagai binary Linux statis tunggal
- Instalasi via skrip (disarankan)
- Instalasi manual
- Unduh langsung binary untuk
amd64, arm64 dan verifikasi checksum
- Beri izin eksekusi lalu pindahkan ke PATH
- Verifikasi dan penghapusan
- Cek dengan
witr --version, man witr
- Dapat dihapus dengan
sudo rm -f /usr/local/bin/witr
- Mendukung Nix Flake: dapat dijalankan dengan
nix run github:pranshuparmar/witr -- --port 5000
Platform dan izin
- Khusus Linux
- Mengumpulkan informasi melalui akses
/proc
- Untuk memeriksa sebagian informasi proses, izin sudo diperlukan
1 komentar
Komentar Hacker News
Menyarankan bahwa loop GIF di README restart terlalu cepat sehingga sulit membaca seluruh output
Akan lebih baik jika berhenti beberapa detik lebih lama
Hanya dengan melihat frame terakhir, semua informasi yang dibutuhkan sudah tersampaikan
Sudah diganti dengan gambar statis, dan terima kasih untuk semua saran yang diberikan
Memang menunjukkan bahwa perintahnya cepat, tetapi semuanya sudah ada di frame terakhir dan efisiensi bandwidth-nya juga buruk
Cukup biarkan berhenti 100% di layar output. Semua orang sudah tahu seperti apa mengetik di terminal
Alat ini bukan untuk menggantikan alat monitoring/observabilitas yang sudah ada
Ini ditujukan untuk cepat memahami “kenapa ini berjalan?” saat terhubung lewat SSH
Ada niat untuk menyesuaikan arahnya berdasarkan masukan
Saat suatu proses mulai memakai banyak resource, selalu sulit mengetahui tujuannya
Awalnya saya kira alat ini juga menjelaskan fungsi proses itu sendiri, ternyata tidak
Meski begitu tetap alat yang keren. Ke depannya mungkin bisa diperluas dengan menggabungkan halaman man + basis data proses
Terlihat berguna, tetapi output saat ini kebanyakan hanya menunjukkan ppid, jadi kita bisa tahu “siapa yang menjalankannya” tetapi sulit tahu “mengapa itu dijalankan”
Mendukung beberapa format output itu bagus. Dengan mempertimbangkan lingkungan otomasi, akan lebih baik jika format JSON atau yang ramah grep dijadikan default
Output bawaan dirancang agar mudah dibaca manusia, tetapi otomasi juga sudah didukung lewat flag JSON
Kami juga akan memikirkan bentuk yang lebih mudah untuk di-grep
Alat ini menarik, tetapi memasang biner lewat
curlterasa kurang nyamanNanti bisa muncul masalah seperti “ini dipasang bagaimana ya?” atau “apakah patch keamanannya sudah terbaru?”
Akan bagus jika ada paket deb atau snap
curltidak cocok untuk semua orangKarena ini rilis pertama, saya memulainya sesederhana mungkin, tetapi jika mulai populer kami berencana menyediakan distribusi paket resmi
wdtci: “what does this curl install?”systemctl status $pidKalimat “witr dibangun atas dasar kepercayaan” dan penjelasan bahwa alat ini “dikembangkan dengan bantuan AI/LLM” terasa kontradiktif
Jika hasil LLM ditinjau dan code review dilakukan dengan benar, sepertinya tetap bisa dipercaya
Meski begitu, saya menghargai keterbukaan soal penggunaan LLM
Keputusan nyata tetap dibuat oleh manusia
Jika pengembangannya berfokus pada hasil, saya rasa tidak masalah
Ini alat yang sangat keren dan berguna
Tetapi di lingkungan produksi, karena alasan yang disebut di atas, sulit untuk langsung memakainya
Akan bagus jika ada paket Debian atau RPM
Untuk build langsung dari source, gunakan perintah berikut
Secara pribadi, jika ada
install.sh, saya berharap instalasi dari source lokal diprioritaskanInilah alasan alat-alat sederhana seperti ini membuat saya terus betah di terminal
Saya penasaran apa yang dimaksud dengan “Git repository name and branch”
Apakah ini fitur untuk mendeteksi apakah proses yang berjalan dijalankan di dalam repositori Git?
Tautan kode terkait
Idenya keren. Alias “whodis” yang pernah saya buat dulu dipakai untuk mencari PID yang membuka port, tetapi ini jauh lebih kuat
Ini alat yang benar-benar luar biasa. Terima kasih sudah membagikannya
Apakah boleh kalau saya membuat paket AUR?
Kelebihan Arch adalah alat-alat menarik seperti ini masuk ke AUR dengan sangat cepat