Lệnh nohup trong Unix với một background runner
2024-10-25 10:13:17
tin tức
tiyusaishi
I. Giới thiệu
Trong các hệ thống Unix, chúng ta thường cần chạy một số chương trình hoặc tập lệnh nhất định trong nền, bất kể chúng ta đóng thiết bị đầu cuối hay phiên. Ví dụ: các tác vụ chạy dài, công việc nền hoặc các tập lệnh chạy dài. Trong các hệ thống Unix, lệnh nohup là một công cụ rất hữu ích để chạy trong nền và bỏ qua tín hiệu gác máy. Bài viết này sẽ trình bày chi tiết cách chạy một chương trình trong nền bằng lệnh nohup trong Unix.
2. Lệnh nohup là gì?
nohup là một lệnh Unix chạy lệnh hoặc tập lệnh trong nền mà không bị gác máy, ngay cả khi thiết bị đầu cuối hoặc phiên bị đóng, mà không làm gián đoạn quá trình chạy. Các chương trình được khởi chạy bằng lệnh nohup chạy trong nền và chuyển hướng đầu ra của chương trình sang tệp có tên nohup.out, trừ khi một tệp đầu ra khác được chỉ định. Điều này đặc biệt hữu ích cho người dùng đăng nhập từ xa để thực hiện các tác vụ dài.
Phần 3: Làm thế nào để sử dụng lệnh nohup?
Cú pháp cơ bản để sử dụng lệnh nohup như sau:
nohupcommand>file2>&1&
Trong đó:
lệnh: Lệnh hoặc tập lệnh cần được chạy.
Tập tin: một tham số tùy chọn để chỉ định tên của tệp đầu ra, là nohup.out theo mặc định. Nếu không có tên tệp nào được chỉ định, đầu ra sẽ được gắn vào tệp nohup.out trong thư mục hiện tại. Nếu tệp không tồn tại, hệ thống sẽ tạo nó. Nếu tệp đã tồn tại, đầu ra sẽ được nối vào tệp. Nếu một đường dẫn tuyệt đối được sử dụng để chỉ định tên tệp, đầu ra sẽ được ghi vào tệp được chỉ định thay vì tệp nohup.out trong thư mục hiện tại.
2>&1: Chuyển hướng đầu ra lỗi tiêu chuẩn sang tệp đầu ra tiêu chuẩn (tức là tệp). Nếu tham số này không được sử dụng, đầu ra lỗi tiêu chuẩn sẽ vẫn được hiển thị trên thiết bị đầu cuối. Điều này có nghĩa là đầu ra lỗi có thể được xem ngay cả sau khi thiết bị đầu cuối được đóng.
&: Làm cho lệnh chạy trong nền. Nếu bạn không sử dụng tham số này, lệnh sẽ chạy ở nền trước và chiếm thiết bị đầu cuối. Các chương trình được khởi chạy bằng lệnh nohup sẽ chạy trong nền và sẽ không dừng ngay cả khi thiết bị đầu cuối hoặc phiên bị đóng. Điều này có nghĩa là bạn có thể đăng xuất khỏi thiết bị đầu cuối hoặc phiên một cách an toàn trong khi chương trình tiếp tục chạy trong nền. Điều này rất hữu ích cho các nhiệm vụ dài hạn hoặc công việc nền. Khi một chương trình được bắt đầu với nohup, nó tiếp tục chạy cho đến khi nó được dừng rõ ràng (sử dụng các lệnh như kill). Bạn cũng có thể sử dụng lệnh nohup với tập lệnh shell để đặt toàn bộ tập lệnh đang chạy trong nền. Điều này cho phép bạn thực hiện nhiều tác vụ cùng một lúc mà không cần phải đợi mỗi nhiệm vụ hoàn thành mọi lúc. Điều này rất tốt cho đa nhiệm và tự động hóa các tác vụ. Tuy nhiên, lưu ý rằng ngay cả với lệnh nohup, các chương trình chạy dài có thể tiêu tốn rất nhiều tài nguyên hệ thống (như CPU và bộ nhớ). Do đó, khi sử dụng nohup, cần cẩn thận để tránh tiêu tốn tài nguyên hệ thống không cần thiết để bảo vệ sự ổn định của hệ thống. Nhìn chung, lệnh nohup là một công cụ rất hữu ích trong các hệ thống Unix cho phép chúng ta chạy các chương trình ở chế độ nền và bỏ qua tín hiệu gác máy, rất hữu ích cho các tác vụ chạy dài và các công việc nền. Bằng cách sử dụng lệnh nohup và các tham số liên quan như chuyển hướng đầu ra và ký hiệu chạy nền, chúng tôi có thể quản lý thuận tiện các quy trình nền và theo dõi đầu ra và lỗi đầu ra của chương trình. Điều này rất hữu ích cho đa nhiệm và tự động hóa các tác vụ. Đồng thời, cũng cần chú ý đến việc sử dụng hợp lý các nguồn lực để bảo vệ sự ổn định của hệ thống.