witr: công cụ giúp trả lời câu hỏi “vì sao cái process này đang chạy?”

Khi debug Linux, mấy lệnh như ps, top, lsof, ss, docker ps cho mình biết cái gì đang chạy. Nhưng thứ mình hay bí nhất lại là: vì sao nó chạy tới giờ.

Để hiểu chuyện đó, thường phải tự ghép thông tin từ nhiều lệnh khác nhau. witr sinh ra để làm phần việc này thay bạn: nó nói thẳng chuỗi nguyên nhân, process này từ đâu ra, ai khởi động và hệ thống nào đang “nuôi” nó, gói gọn trong một output dễ đọc.

019b7cc2-e854-798a-8595-fc623c162891

witr là gì?

witr là một công cụ dòng lệnh giúp bạn hiểu nguồn gốc và lý do tồn tại của một process trên hệ thống.

Thông thường, khi bạn dùng các công cụ quen thuộc, bạn chỉ biết được:

  • Process tên gì?
  • PID bao nhiêu?
  • Đang chiếm port nào?

Nhưng witr đi xa hơn một bước. Nó cố gắng trả lời những câu hỏi mà người mới rất hay mắc kẹt:

  • Process này do ai khởi động
  • Hệ thống nào đang giữ nó chạy
  • Vì sao kill xong nó lại xuất hiện lại

witr giải quyết vấn đề gì?

Khi mới làm quen với Linux server, bạn rất dễ gặp tình huống này:

  • Bạn thấy một process đang chạy
  • Bạn không nhớ mình đã chạy nó bao giờ
  • Bạn không rõ nó thuộc service nào, hay ai đã khởi động nó

Lúc này, câu hỏi trong đầu thường là: Process này từ đâu ra vậy?

Đây chính là vấn đề cốt lõi mà witr giải quyết. witr không nhằm thay thế các công cụ xem trạng thái. Nó tồn tại để giải thích nguyên nhân tồn tại của process, thứ mà người mới rất khó tự suy ra.

witr tiếp cận vấn đề như thế nào?

Thay vì đưa ra một danh sách thông tin rời rạc, witr cố gắng kể lại câu chuyện của process đó theo một cấu trúc dễ đọc.

Khi bạn hỏi witr về một process, nó sẽ cố giải thích theo các phần:

  • Why It Exists: Chuỗi “ai sinh ra ai”, giúp bạn hiểu process này xuất phát từ đâu?
  • Source: Thực thể chính đang chịu trách nhiệm giữ process này chạy
  • Context: Process đang chạy trong môi trường nào (thư mục, repo, cách bind port…)
  • Warnings: Có dấu hiệu bất thường nào cần chú ý hay không

Điểm quan trọng là: witr không chỉ cho bạn dữ liệu, mà cho bạn biết lý do/

Cài đặt nhanh witr

Bạn chỉ cần cài một lần, rồi để đó dùng khi cần.

curl -fsSL https://raw.githubusercontent.com/pranshuparmar/witr/main/install.sh | bash

Kiểm tra:

witr --version

Các câu lệnh witr thường gặp

Phần này không đi theo tình huống phức tạp, mà đi theo cách người mới thật sự hay gõ lệnh, rồi giải thích họ sẽ hiểu được gì sau khi chạy.

Hỏi theo port

Khi gặp lỗi service không start được vì port bị chiếm, phản xạ tự nhiên là hỏi theo port:

witr --port 5000

Sau khi chạy, thứ bạn cần quan tâm không phải mọi dòng output, mà là hai chỗ:

  • Source: thằng nào đang chịu trách nhiệm chính
  • Why It Exists: chuỗi ai sinh ra ai

Chỉ cần đọc hai phần này, bạn sẽ biết:

  • process đó không chạy một mình
  • kill tay chỉ xử lý ngọn
  • muốn xử lý gốc thì phải quay về đúng hệ đang “nuôi” nó

Nếu đang gấp và chỉ cần chốt hướng, dùng bản rút gọn:

witr --port 5000 --short

Một dòng output ngắn là đủ để bạn quyết định nên debug ở tầng nào.

Hỏi theo PID

Khi bạn đã biết PID (từ bất kỳ lệnh nào), cách hỏi rõ ràng nhất là:

witr --pid 12345

Cách này giúp bạn:

  • không bị nhầm process
  • đọc được đầy đủ câu chuyện của đúng đối tượng cần điều tra

Đây là cách nên dùng khi:

  • tên process trùng nhau
  • bạn muốn chắc chắn mình không “đánh nhầm thằng”

Hỏi theo tên process

Cách này tiện, nhưng nếu máy có nhiều process trùng tên, witr sẽ yêu cầu bạn chọn PID cụ thể.

witr node

Điều này nghe có vẻ hơi phiền, nhưng thực ra lại rất tốt cho người mới:

  • tránh debug nhầm
  • tránh kill nhầm
  • tránh làm hỏng thứ không liên quan

Khi chỉ muốn soi nhanh xem có gì không?

Có những lúc process vẫn chạy bình thường, nhưng bạn muốn biết:

  • nó có chạy quyền cao không
  • có bind public không
  • có dấu hiệu bất thường không

Bạn có thể hỏi riêng phần cảnh báo:

witr --pid 12345 --warnings

Hoặc khi nghi do biến môi trường gây ra hành vi lạ:

witr --pid 12345 --env

Đây là cách dùng witr để hiểu trạng thái hệ thống, không chỉ để chữa cháy.

Kết bài

Qua những câu lệnh trên, thứ witr mang lại không chỉ là output, mà là cách suy nghĩ:

  • process luôn có nguồn gốc
  • luôn có một hệ chịu trách nhiệm
  • muốn sửa đúng thì phải hiểu đúng trước

witr giúp người mới không debug theo cảm tính, mà theo nguyên nhân.

Thông tin nổi bật

Sự kiện phát trực tiếp​

Event Thumbnail

Báo cáo quan trọng

Article Thumbnail
Article Thumbnail
Chia sẻ bài viết:
Theo dõi
Thông báo của
0 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận

Tiêu điểm chuyên gia