Trong Linux, chúng ta thường cần chạy các chương trình trong nền, ngay cả sau khi chúng ta thoát khỏi thiết bị đầu cuối hoặc đóng phiên. Để chạy chương trình ở chế độ nền và tránh đầu ra của chương trình bị cắt ngắn sau khi đóng thiết bị đầu cuối, chúng ta thường sử dụng lệnh nohup để chạy chương trình. Tuy nhiên, đôi khi, chúng tôi không quan tâm đến đầu ra của chương trình và muốn chuyển hướng nó đến một nơi nào đó hoặc đơn giản là loại bỏ nó. Tại thời điểm này, chúng ta có thể chuyển hướng đầu ra sang /dev/null. Bài viết này sẽ giới thiệu cách sử dụng lệnh nohup để chuyển hướng đầu ra của chương trình sang /dev/null và khám phá các nguyên tắc và thực tiễn đằng sau nó. 1. Giới thiệu về lệnh nohup Lệnh nohup là một tiện ích trong Linux cho phép người dùng chạy chương trình ở chế độ nền và không chấm dứt chương trình khi người dùng thoát khỏi thiết bị đầu cuối. Lệnh này thường được sử dụng cho các quy trình hoặc chương trình chạy dài mà chúng ta muốn chạy mà không có giao diện. Với lệnh này, chúng tôi có thể chuyển hướng đầu ra của chương trình thành một tệp, để chúng tôi tránh chương trình mất đầu ra sau khi chúng tôi thoát khỏi thiết bị đầu cuối. Theo mặc định, lệnh nohup lưu đầu ra của chương trình vào một tệp có tên nohup.out. Tuy nhiên, đôi khi chúng ta không quan tâm đến đầu ra của chương trình và chúng ta có thể chọn chuyển hướng nó đến /dev/null. Thứ hai, nguyên tắc chuyển hướng output đến /dev/null Trên Linux, /dev/null là một tệp thiết bị đặc biệt loại bỏ tất cả dữ liệu được ghi vào nó. Điều này có nghĩa là việc chuyển hướng dữ liệu đến /dev/null tương đương với việc loại bỏ nó. Do đó, khi chúng tôi chuyển hướng đầu ra của chương trình sang / dev / null, tất cả thông tin đầu ra sẽ bị loại bỏ và sẽ không được hiển thị trên thiết bị đầu cuối hoặc được lưu vào tệp. Điều này rất hữu ích cho các tình huống mà chúng ta không cần quan tâm đến đầu ra của chương trình. Bằng cách chuyển hướng đầu ra sang / dev / null, chúng ta có thể tránh tạo các tệp nhật ký không cần thiết và lãng phí dung lượng lưu trữ. Phần 3: Cách sử dụng lệnh nohup để chuyển hướng đầu ra sang /dev/null Sử dụng lệnh nohup để chuyển hướng đầu ra sang /dev/null rất đơn giản. Giả sử chúng ta muốn chạy một chương trình có tên myprogram trong nền, chúng ta có thể sử dụng lệnh sau: nohupmyprogram>/dev/null2>&1& Giải thích về lệnh này như sau: nohup: Cho biết rằng chương trình đang chạy trong nền và bỏ qua tín hiệu treo máy (tức là người dùng thoát khỏi thiết bị đầu cuối). myprogram: Tên của chương trình bạn muốn chạy. >/dev/null: Chuyển hướng đầu ra stdout sang /dev/null (loại bỏ tất cả thông tin đầu ra). Biểu tượng ">" ở đây cho biết chuyển hướng đầu ra tiêu chuẩn, "/" là đường dẫn tệp, "dev" là tệp thiết bị và "null" cho biết loại bỏ. Vì ">" trước "/" đã trỏ đến đầu ra tiêu chuẩn, nên việc chỉ định "/" ở đây một lần nữa cũng là dư thừa. Chuyển hướng stdout trực tiếp đến "/ dev / null" sẽ thực hiện thủ thuật. Nhưng đó là một thực hành tốt để giữ dấu "/" vì làm như vậy sẽ ngăn chặn các hoạt động chuyển hướng gây nhầm lẫn cho các mô tả tệp khác. Ví dụ: khi chúng ta cần xử lý cả lỗi đầu ra tiêu chuẩn và lỗi tiêu chuẩn, "2>&1" rất hữu ích. Điều này có nghĩa là chuyển hướng lỗi tiêu chuẩn (mô tả tệp 2) sang đầu ra tiêu chuẩn (mô tả tệp 1) và sau đó chuyển hướng đầu ra tiêu chuẩn thành "/ dev / null". Bằng cách này, chúng tôi có thể đảm bảo rằng tất cả đầu ra được loại bỏ mà không được ghi lại trong bất kỳ tệp nào hoặc hiển thị trên thiết bị đầu cuối hệ thống. Dấu "&" ở đây chỉ ra rằng quá trình được chạy trong nền mà không chặn cập nhật thông tin trên giao diện đầu cuối hiện tại, để đạt được mục đích của hoạt động nền giả". Đây là cách đúng đắn chúng ta làm điều đó mỗi ngày. "NohupmyProgram>/dev/null2>&1&" là một ví dụ ứng dụng điển hình, đảm bảo rằng ứng dụng chúng ta thực thi có thể chạy âm thầm trong nền mà không ảnh hưởng đến trải nghiệm thiết bị đầu cuối. Điều này cho phép chúng tôi đóng cửa sổ đầu cuối mà không phải lo lắng về việc chương trình bị gián đoạn hoặc tạo các tệp nhật ký không cần thiết.