Cách chạy tập lệnh trong nền và bỏ qua cúp máy: hướng dẫn sử dụng nohup
2024-10-23 13:20:11
tin tức
tiyusaishi
Trong Unix và Linux, chúng ta thường cần thực thi các tập lệnh hoặc chương trình chạy dài mà chúng ta cần tiếp tục chạy ngay cả sau khi chúng ta thoát khỏi thiết bị đầu cuối hoặc đóng phiên. Điều này đòi hỏi chúng ta phải sử dụng một công cụ có thể chạy trong nền và bỏ qua tín hiệu treo máy, và đó là nohup. Bài viết này sẽ trình bày chi tiết cách sử dụng lệnh nohup để chạy script.
1. Hiểu nohup
Trước hết, chúng ta cần hiểu treo máy là gì. Trên các hệ thống Unix và Linux, khi người dùng thoát khỏi phiên đầu cuối, hệ thống sẽ gửi tín hiệu treo đến quy trình nền trước theo mặc định, thông báo cho họ chấm dứt chạy. Mục đích của lệnh nohup là ngăn hệ thống gửi tín hiệu treo máy này đến quy trình được chỉ định, để nó tiếp tục chạy trong nền.
2. Cách chạy tập lệnh với nohup
Cách chạy một kịch bản với nohup rất đơn giản. Tất cả những gì bạn cần làm là nhập lệnh theo định dạng sau trên dòng lệnh:
nohupcommand>/dev/null2>&1&
Lệnh ở đây là tập lệnh hoặc chương trình bạn muốn chạy. "/dev/null" chuyển hướng đầu ra đến một thiết bị trống, có nghĩa là tất cả thông tin đầu ra sẽ bị loại bỏ. "2>&1" có nghĩa là lỗi tiêu chuẩn (mô tả tệp 2) được chuyển hướng đến đầu ra tiêu chuẩn (mô tả tệp là 1), do đó tất cả các thông báo đầu ra và lỗi đều bị loại bỏ. "&" đặt lệnh ở chế độ nền.
Ví dụ: nếu bạn muốn chạy một script có tên myscript.sh, bạn có thể sử dụng lệnh nohup như sau:
nohup./myscript.sh>/dev/null2>&1&
Bằng cách này, ngay cả khi bạn thoát khỏi thiết bị đầu cuối hoặc đóng phiên, myscript.sh sẽ tiếp tục chạy trong nền.
3. Xem và quản lý quy trình Nohup
Sau khi chạy lệnh nohup, hệ thống sẽ tạo một tệp có tên nohup.out trong thư mục hiện tại, tệp này sẽ lưu trữ tất cả thông tin đầu ra (nếu bạn không sử dụng ">/dev/null2>&1" chuyển hướng). Bạn có thể kiểm tra tệp này để xem tập lệnh đang chạy như thế nào. Ngoài ra, bạn cũng có thể sử dụng lệnh ps và lệnh grep để tìm và quản lý các tiến trình đang chạy bởi nohup. Chẳng hạn:
psaux|grepmyscript.sh
Lệnh này liệt kê tất cả thông tin quá trình có chứa "myscript.sh", bao gồm ID tiến trình (PID). Bạn có thể sử dụng PID này để quản lý quá trình của bạn, chẳng hạn như dừng nó (sử dụng lệnh kill).
4. Biện pháp phòng ngừa
Có một vài điều cần lưu ý khi chạy tập lệnh với nohup:
1. Đảm bảo rằng tập lệnh có quyền thực thi. Bạn có thể sử dụng lệnh chmod để thêm quyền thực thi vào tập lệnh. Ví example:chmod+xmyscript.sh.
2. Đảm bảo đường dẫn của tập lệnh là chính xác và đầy đủ. Nếu bạn đang sử dụng đường dẫn tương đối, hãy đảm bảo thư mục làm việc hiện tại là chính xác. Đường dẫn tuyệt đối có thể được sử dụng để tránh vấn đề này. Ví dụ: /home/user/myscript.sh.
3. Nếu tập lệnh của bạn cần nhận các tham số đầu vào, bạn có thể viết các tham số trực tiếp trong lệnh. Ví dụ: nohup./myscript.sharg1arg2>/dev/null2>&1&.
Đó là hướng dẫn chi tiết về cách chạy tập lệnh trong nền bằng lệnh nohup. Hy vọng nó sẽ giúp!