Vui lòng ngừng sử dụng 7 lệnh Linux đã lỗi thời này

Tác giả Starlink, T.M.Một 07, 2025, 09:00:07 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Hãy theo dõi chương trình!

Trong những năm qua, một số lệnh Linux đã bị loại bỏ, có thể vì chúng không còn phù hợp, có vấn đề về bảo mật hoặc không còn được duy trì. Bạn vẫn có thể sử dụng những lệnh phổ biến này, nhưng có lẽ không nên. Thay vào đó, hãy thử các giải pháp thay thế ít gặp lỗi hơn và cũng cung cấp nhiều tính năng hơn.


1. cron: sử dụng systemd hoặc launchd thay thế

Là một trong những lệnh yêu thích của tôi mà tôi đã học từ lâu, cron tuy nhiên lại là một công cụ khá khó sử dụng. Cú pháp khó hiểu và môi trường gỡ lỗi phức tạp khiến việc sử dụng nó trở nên khó khăn, vì vậy không có gì ngạc nhiên khi có nhiều lựa chọn thay thế hiện đại. Trên Linux, phần mềm systemd thực hiện nhiều tác vụ liên quan đến khởi động, bao gồm cả việc xử lý bộ đếm thời gian.

Nếu bạn có quyền truy cập vào bản phân phối Linux mới nhất, hãy thử sử dụng lệnh systemctl để hiển thị tất cả bộ đếm thời gian systemd:

Mã nguồn [Chọn]
systemctl list-timers   
Sau đó, bạn có thể biết thêm thông tin về bộ hẹn giờ bằng lệnh phụ trạng thái:

Mã nguồn [Chọn]
systemctl status motd-news.service   
Đầu ra bao gồm dòng "Process" liệt kê lệnh thực tế mà bộ đếm thời gian này chạy:


Trên macOS, cron cũng đã bị loại bỏ, nhưng thay vào đó là launchd thay vì systemd. Một lần nữa, launchd không chỉ đơn thuần là lên lịch tác vụ, mà còn hoạt động như một bản nâng cấp cron, với các tính năng như xử lý tốt hơn các tác vụ có thể cần chạy khi máy tính của bạn đã tắt nguồn.

2. ifconfig: ip thay thế nó

Lệnh ip cho bạn biết mọi thông tin cần thiết về kết nối mạng, bao gồm địa chỉ IP, định tuyến đến Internet công cộng và các thiết bị mạng. Đây là một công cụ cấp thấp mà bạn chỉ thực sự khai thác được toàn bộ sức mạnh nếu là quản trị viên mạng hoặc hệ thống. Đối với hầu hết người dùng, nó thay thế công cụ ifconfig cũ cho một mục đích: khám phá địa chỉ IP công cộng của bạn:

Mã nguồn [Chọn]
ip address
Tất nhiên, bạn có thể lấy thông tin tương tự từ một trang web như   Đăng nhập để xem liên kết, nơi báo cáo địa chỉ IP bạn gửi, cùng với các thông tin chẩn đoán khác. Bạn thậm chí có thể truy cập trang web này từ dòng lệnh để xem IP của mình dưới dạng văn bản thuần túy:


Nhưng nếu bạn đang gỡ lỗi sự cố mạng, các tùy chọn này có thể không khả dụng và một công cụ cục bộ sẽ luôn đáng tin cậy hơn một trang web từ xa mà một ngày nào đó cũng có thể bị loại bỏ.

3. nslookup: dig mạnh hơn

Chữ "ns" trong "nslookup" là viết tắt của máy chủ tên miền (name server), vì vậy công cụ này cung cấp giao diện để truy vấn DNS. dig cũng tương tự, với nhiều tính năng hơn và định dạng tốt hơn. Mặc dù trạng thái của nslookup đã thay đổi vài lần, từ lỗi thời rồi lại trở về trạng thái cũ, dig vẫn là một sự thay thế hữu ích.

Trên thực tế, dig là một sự thay thế trực tiếp cho nslookup: truyền cho nó một tên miền và bạn sẽ nhận được địa chỉ IP (hoặc các địa chỉ) mà tên miền đó ánh xạ tới:


Nếu bạn cần một công cụ thực sự đơn giản, nslookup sẽ đáp ứng được nhu cầu. Nhưng nếu bạn muốn thông tin gỡ lỗi chi tiết hoặc truy vấn bản ghi nâng cao hơn, dig nên là lựa chọn đầu tiên.

4. neofetch: có nhiều phiên bản kế nhiệm

Một số lệnh phổ biến đến mức khi bị loại bỏ, chúng sẽ tạo ra hàng loạt lệnh thay thế. Chương trình Neofetch chính là tác giả của tất cả những logo ASCII đầy màu sắc mà bạn thấy trên màn hình terminal Linux:


Đáng buồn thay, công cụ này đã ngừng hoạt động vào năm 2024, nhưng may mắn thay, vẫn còn nhiều lựa chọn thay thế. Dường như mỗi ngôn ngữ lập trình đều có phiên bản riêng của tiện ích này, từ các tập lệnh Bash đến C và Rust.

Fastfetch là ứng cử viên hàng đầu, với logo đầy màu sắc cùng thông số kỹ thuật và số liệu thống kê chi tiết về hệ thống. Bạn có thể tùy chỉnh mọi thứ về đầu ra của nó, từ bố cục đến thông tin chính xác mà nó báo cáo, và cách nó trình bày:


Mặc dù có nhiều lựa chọn, fastfetch có lẽ là tốt nhất, một phần vì nó được bảo trì tích cực. Các lựa chọn thay thế khác, như ufetch hoặc pfetch, đã được lưu trữ hoặc không còn được cập nhật. Một số công cụ khác có thể rõ ràng lấy cảm hứng từ thiết kế của fastfetch, nhưng chúng thực hiện các chức năng khác nhau; ví dụ, onefetch hiển thị thông tin tóm tắt về một dự án git:


5. scp: rsync có thể nhanh hơn nhiều

scp—viết tắt của "secure copy"—là một lệnh nhanh chóng và dễ dàng để sao chép tệp an toàn qua mạng, sử dụng kết nối SSH. Đây là bản nâng cấp của FTP, nhưng hiện đã bị loại bỏ và thay thế bằng rsync, tùy thuộc vào nhu cầu sử dụng của bạn.

Trong trường hợp đơn giản, bạn có thể sử dụng một trong hai công cụ theo cùng một cách để tải tệp lên máy tính từ xa:

Mã nguồn [Chọn]
rsync foo.txt user@some-computer:/path/to/remote/foo.txt

scp foo.txt user@some-computer:/path/to/remote/foo.txt
   
Trong khi scp hoạt động hoàn hảo để tải lên tệp, rsync lại tốt hơn cho các cấu trúc thư mục phức tạp hơn mà bạn có thể muốn tải lên (hoặc tải xuống) nhiều lần. Đúng như tên gọi, rsync đảm bảo rằng một tập hợp tệp từ xa và một tập hợp tệp cục bộ được đồng bộ hóa. Nếu có sự khác biệt, nó sẽ tự động chuyển một tập hợp delta thay vì toàn bộ tệp, giúp rsync hiệu quả hơn nhiều so với scp.

6. netstat: ss là bản nâng cấp cần đạt được

Công cụ netstat—viết tắt của "network status"—là một công cụ mạng khác hiện đã bị loại bỏ vì nó là một phần của gói net-tools. Phiên bản hiện đại tương đương là ss.

netstat hiển thị các socket mạng đang mở, bảng định tuyến và các số liệu thống kê mạng khác. Lệnh này hữu ích trong việc khắc phục sự cố mạng và kiểm tra hiệu suất lưu lượng mạng.

ss, thuộc bộ sưu tập iproute2, hiển thị nhiều số liệu thống kê mạng khác nhau. Nó tương tự như ip route, nhưng có sẵn dưới dạng lệnh độc lập.

7. which: type lựa chọn tốt hơn

Một khía cạnh khác của Linux có thể khó hiểu là chính xác những gì xảy ra khi bạn chạy một lệnh. Ví dụ, việc chạy một lệnh có vẻ khá đơn giản:

Mã nguồn [Chọn]
ls   
Tuy nhiên, đằng sau hậu trường, một trong số những điều sau đây có thể xảy ra, bao gồm:

    Chạy lệnh tích hợp.
    Chạy một hàm shell.
    Chạy một chương trình thực thi.
    Chạy một bí danh, khiến quá trình lặp lại.

Có một số lệnh giúp bạn khám phá chính xác những gì đang diễn ra. Chúng bao gồm các lệnh sau, với mô tả từ trang hướng dẫn hoặc trang tldr của chúng :

    trong đó: xác định vị trí tệp chương trình trong đường dẫn của người dùng.
    từ đâu: một Zsh tích hợp sẵn để chỉ ra cách một lệnh sẽ được diễn giải.
    trong đó: báo cáo tất cả các trường hợp đã biết của một lệnh.
    whereis: định vị chương trình.
    lệnh -v: hiển thị đường dẫn đến tệp thực thi hoặc định nghĩa bí danh của một lệnh cụ thể.

Lệnh whatis cũng là một lệnh liên quan đến nhiệm vụ này nhưng có một chút khác biệt. Lệnh whatis -d sẽ hiển thị cho bạn thông tin chi tiết về một lệnh (và các lệnh liên quan) bằng cách tìm kiếm từ khóa trong trang hướng dẫn.

Tất cả chúng đều thực hiện cùng một chức năng, chỉ khác nhau đôi chút về kết quả đầu ra. Tuy nhiên, chương trình thay thế được đề xuất là một chương trình hoàn toàn khác: type.

Trên macOS, lệnh which là một shell tích hợp sẵn, nhưng hệ thống Ubuntu 24 của tôi chỉ có một chương trình thực thi, tại /usr/bin/which. Chương trình này không thể cung cấp nhiều thông tin như shell tích hợp sẵn vì nó không có quyền truy cập vào dữ liệu đó. Vì vậy, chạy "which cd" trên Ubuntu không cho tôi kết quả nào cả, trong khi macOS lại cho tôi biết "cd: shell built-in command".

Trong khi đó, lệnh type là một lệnh tích hợp sẵn. Trên cả macOS và Ubuntu (và bất kỳ bản phân phối Linux nào khác), lệnh này sẽ cho bạn biết chính xác lệnh đó là gì và nằm ở đâu, nếu có:


Lưu ý rằng type cũng hỗ trợ tùy chọn hữu ích -a để hiển thị tất cả các trường hợp của lệnh, không chỉ trường hợp đầu tiên:


Nếu bạn thấy sự hiện diện của cd như một chương trình thực thi, bên cạnh một chương trình tích hợp sẵn, có vẻ kỳ lạ thì đúng là vậy! Trên macOS, chương trình chỉ đơn giản là một tập lệnh shell gọi chương trình tích hợp cd, vì vậy nó chỉ là một trình bao bọc giả. Điều này nhằm tuân thủ POSIX, và có lẽ bạn sẽ không bao giờ cần sử dụng nó.