Công cụ CLI cho phép xem nhanh các cổng đang mở và tiến trình đang dùng
(github.com/givvemee)Khi phát triển, chắc hẳn bạn đã phải gõ đi gõ lại những lệnh như lsof -i :3000.
"Cổng này đang bị gì dùng nhỉ?", "Hình như lúc nãy mình quên chưa tắt server đó..."
ports-cli là một công cụ CLI hiển thị gọn gàng tất cả các cổng đang mở kèm theo tên tiến trình và đường dẫn dự án.
Tính năng chính
- Xem nhanh trong nháy mắt: Hiển thị cổng đang mở, tên tiến trình và đường dẫn dự án dưới dạng bảng
- Nhận diện dự án Node.js: Đọc
package.jsonđể hiển thị tên dự án thực tế thay chonode - Lọc tiến trình của người dùng: Dùng tùy chọn
-uđể loại trừ tiến trình hệ thống và chỉ xem những gì bạn đã chạy - Tắt tiến trình:
ports bye 3000để kill ngay tiến trình đang dùng cổng đó
Cài đặt
brew tap givvemee/tap
brew install ports-cli
Cách dùng
ports # hiển thị tất cả cổng đang lắng nghe
ports -u # chỉ các tiến trình do tôi chạy
ports bye 3000 # tắt tiến trình dùng cổng 3000
Ví dụ đầu ra
PORT PROCESS PATH
---- ------- ----
3000 my-app ~/Documents/GitHub/my-app
5432 postgres -
8080 test-server ~/Documents/GitHub/test-server
Chỉ dành cho macOS, công cụ chạy nhẹ bằng Bash script và không cần phụ thuộc bổ sung nào.
Rất mong nhận được phản hồi của mọi người. :)
6 bình luận
Ồ, có khá nhiều tính năng tiện ích nhỉ. 👍🏻
Với macOS, bạn cũng có thể kiểm tra nhanh bằng lệnh dưới đây mà không cần cài đặt thêm.
Chỉ cần thêm vào
~/.zshrclà được.(Xin chia sẻ để tham khảo!)
alias portcheck="printf "\033[4;37m%-15s %-8s %-20s %s\033[0m\n" "COMMAND" "PID" "PORT" "DIR"; sudo lsof -iTCP -sTCP:LISTEN -n -P | awk 'NR>1 {print $2, $1, $9}' | sort -u | while read pid cmd port; do dir=$(sudo lsof -p "$pid" -a -d cwd -F n 2>/dev/null | tail -1 | cut -c2-); printf "\033[1;32m%-15s\033[0m \033[1;36m%-8s\033[0m \033[1;33m%-20s\033[0m %s\n" "$cmd" "$pid" "$port" "$dir"; done"
À, ra là bạn đã tạo alias
portcheckđể dùng như vậy. Cách này cũng hay đấy. Cảm ơn bạn!Do có vấn đề với dấu ngoặc kép nên mình chia sẻ lại.
alias portcheck='printf "\033[4;37m%-36s %-8s %-22s %s\033[0m\n" "COMMAND" "PID" "LISTEN" "CWD"; sudo lsof -nP -iTCP -sTCP:LISTEN -F pcn 2>/dev/null | awk '"'"'BEGIN{pid=cmd=name=""}/^p/{pid=substr($0,2)}/^c/{cmd=substr($0,2)}/^n/{name=substr($0,2);if(pid&&cmd&&name)print pid"\t"cmd"\t"name}'"'"' | sort -u | while IFS=$'"'"'\t'"'"' read -r pid cmd name; do dir=$(sudo lsof -n -p "$pid" -a -d cwd -F n 2>/dev/null | sed -n '"'"'s/^n//p'"'"' | tail -1); [ -z "$dir" ] && dir="-"; printf "\033[1;32m%-36.36s\033[0m \033[1;36m%-8s\033[0m \033[1;33m%-22s\033[0m %s\n" "$cmd" "$pid" "$name" "$dir"; done'
Tôi muốn biết điểm gì tốt hơn so với
sudo netstat -tnlp.Dùng thử sẽ thấy nó hiển thị theo cách được sắp xếp gọn gàng hơn.
Ngoài ra còn có tính năng lọc để chỉ xem các tiến trình mà người dùng đang trực tiếp sử dụng.
Ồ, tôi cài thử và dùng ngay rồi, đơn giản nên rất dễ sử dụng!!
Cảm ơn nhé haha