Có rất nhiều lệnh có sẵn trên các hệ thống Linux. Có một số thứ mà bạn sẽ sử dụng nhiều lần trong ngày và có những người khác thường được dành riêng cho các trường hợp sử dụng đặc biệt. Nohup là một trong những lệnh như vậy. Bạn sẽ không sử dụng nó mỗi ngày, nhưng bạn sẽ biết ơn nó xung quanh khi bạn cần nó.

Nohup là gì?

Nohup là viết tắt của “No Hangups.” Nó không phải là một lệnh mà bạn tự chạy. Nohup là một lệnh bổ sung cho hệ thống Linux không dừng lệnh khác khi nó đã bắt đầu. Điều đó có nghĩa là nó sẽ tiếp tục chạy cho đến khi nó được thực hiện, ngay cả khi người dùng bắt đầu nó đăng xuất. Cú pháp cho nohup rất đơn giản và trông giống như sau:

 nohup sh your-script.sh & 

Chú ý “&” ở cuối lệnh. Điều đó di chuyển lệnh đến nền, giải phóng thiết bị đầu cuối mà bạn đang làm việc.

Nohup hoạt động với bất kỳ lệnh nào mà bạn chạy trong terminal. Nó có thể được chạy với các kịch bản tùy chỉnh cũng như các lệnh hệ thống tiêu chuẩn và các tiện ích dòng lệnh.

Nohup.out

Bởi vì nohup có thể tiếp tục chạy độc lập với người dùng đã khởi động nó, lệnh cần một nơi nào đó để xuất ra bất kỳ thông báo hoặc lỗi nào. Vì không có một thiết bị đầu cuối để kết hợp với nó, nohup sẽ ghi lại mọi thứ vào một tệp đầu ra, nohup.out.

Theo mặc định, tập tin đó nằm trong thư mục nào bạn khởi động lệnh. Nohup.out hơi độc đáo vì nó chứa cả đầu ra tiêu chuẩn lẫn đầu ra lỗi cùng nhau. Nohup chuyển hướng cả hai sang cùng một tệp theo mặc định.

Bạn không nhất thiết cần phải sử dụng nohup.out, mặc dù. Nó chỉ là mặc định. Bạn có thể chỉ định đầu ra tùy chỉnh khi bạn chạy nohup và đặt nó vào vị trí tùy chỉnh.

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

Đầu ra tùy chỉnh chứa chính xác cùng một dữ liệu như tệp nohup.out chuẩn sẽ.

Sự khác biệt với Daemon

Đến thời điểm này, có lẽ bạn đang tự hỏi điều gì đặt ra nohup ngoài một quá trình được thực hiện. Xét cho cùng, cả hai dường như đều phục vụ cho mục đích tương tự nhưng thực sự thì không. Daemon chạy liên tục trong nền. Chúng được bảo lưu tốt nhất cho các quy trình mà bạn không muốn thoát, như máy chủ. Họ yêu cầu nhiều công việc hơn để lập trình, vì vậy chúng không tốt nhất cho các tập lệnh một lần đơn giản.

Nohup là cho một sử dụng duy nhất. Hãy nghĩ về một tập lệnh sẽ mất nhiều thời gian để chạy nhưng cuối cùng vẫn sẽ kết thúc. Có thể có một nhiệm vụ dài và phức tạp mà bạn chạy mỗi giờ và sau đó mất hàng giờ để hoàn thành. Bạn không muốn để một thiết bị đầu cuối mở hoặc người dùng đăng nhập, vì vậy bạn sử dụng nohup để giữ cho nó chạy trong nền. Như là một tiền thưởng thêm, nó sẽ tự động đăng nhập tất cả mọi thứ cho bạn.

Bạn có thể thấy rằng nohup không phải là một công cụ hàng ngày, nhưng nó có thể rất hữu ích cho công việc đúng. Nó nằm đâu đó giữa một kịch bản ngắn bình thường và một daemon liên tục chạy. Nó giúp bạn tận dụng nhiều hơn một phương pháp tiếp cận trực tiếp với các tập lệnh dài hơn mà bạn có thể thường xuyên lãng phí thời gian giữ trẻ.