Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Linux

Nohup là gì và cách sử dụng?

Linux có rất nhiều lệnh. Một số dùng hàng ngày, البعض dành cho trường hợp đặc biệt. nohup là một trong số đó. Bạn không dùng nó mỗi ngày, nhưng sẽ biết ơn nó khi cần. Bài viết giải thích nohup là gì và cách dùng.

Nohup là gì?

nohup viết tắt của "No Hangups" (Không ngắt kết nối). Nó không phải lệnh chạy độc lập. nohup là lệnh bổ sung báo cho hệ thống Linux không dừng lệnh sau khi đã bắt đầu. Nghĩa là nó sẽ chạy cho đến khi xong, ngay cả khi user khởi động nó logout. Mục đích tương tự tmux hoặc screen: cho phép chạy tiến trình và không lo nó có kết thúc không nếu bạn logout hoặc mất kết nối server. Cú pháp nohup đơn giản:

nohup sh your-script.sh &

Chú ý dấu "&" cuối lệnh. Nó đẩy lệnh về background, giải phóng terminal bạn đang làm việc.

nohup hoạt động với hầu hết lệnh chạy trong terminal. Có thể dùng với script tùy chỉnh, lệnh hệ thống tiêu chuẩn và tiện ích dòng lệnh. Ví dụ: chạy script audit bảo mật trên server remote và có thể disconnect rời đi, hoặc chạy update background không muốn dừng.

Nohup.out

Vì nohup chạy độc lập với user khởi động, lệnh cần nơi xuất message/lỗi. Vì không có terminal liên kết, nohup log mọi thứ vào file output nohup.out.

Mặc định, file nằm ở thư mục bạn chạy lệnh. nohup.out khá đặc biệt vì chứa cả standard output và error output cùng chỗ. nohup redirect cả hai vào cùng file mặc định.

Bạn không bắt buộc dùng nohup.out – chỉ là mặc định. Có thể chỉ định output tùy chỉnh khi chạy nohup và đặt vị trí tùy ý.

nohup sh your-script.sh > /path/to/custom.out &

Output tùy chỉnh chứa chính xác dữ liệu như file nohup.out chuẩn. Tiện cho script audit bảo mật: đặt tên audit-script-output.txt trong thư mục mount remote, xem tư thế bảo mật server từ laptop thoải mái thay vì xem output cat cả ngày.

Nohup khác Daemon như thế nào?

Đến đây bạn có thể thắc mắc: nohup khác daemonized process như thế nào? Chúng có vẻ phục vụ mục đích tương tự nhưng thực tế không.

Daemon chạy liên tục background. Dành cho tiến trình không muốn thoát bao giờ, như server. Cần công sức lập trình nhiều hơn, không phù hợp script one-off đơn giản.

nohup dành cho single use. Hãy tưởng tượng script chạy lâu nhưng cuối cùng vẫn xong. Có task phức tạp chạy thỉnh thoảng mất vài giờ. Bạn không muốn để terminal mở hoặc user logged in, nên dùng nohup chạy background và đưa output vào file bất kỳ (mặc định nohup.out hoặc vị trí bạn chọn).

Nếu thích bài viết về nohup, lợi ích và cách dùng, hãy xem thêm nội dung Linux khác của chúng tôi, như giải thích quyền file hoặc tăng tốc máy Linux chậm.