上一篇
lệnh nohup và & trong Linux: chạy nền và quản lý tác vụ liên tục
Trong hệ thống Linux, chúng ta thường cần thực hiện một số lệnh hoặc chương trình chạy dài, chẳng hạn như phân tích dữ liệu, trình thu thập thông tin, v.v. Tuy nhiên, vì các tác vụ này thường chiếm rất nhiều thời gian, chúng thậm chí có thể bị gián đoạn khi người dùng ngắt kết nối hoặc đóng thiết bị đầu cuối. Để tránh điều này, chúng ta có thể sử dụng hai lệnh mạnh mẽ trong Linux: nohup và &. Hai lệnh này cho phép chúng tôi chạy chương trình trong nền và đảm bảo rằng tác vụ tiếp tục chạy ngay cả khi chúng tôi thoát khỏi phiên. Chúng ta hãy xem cách sử dụng của hai lệnh này và tầm quan trọng của chúng.
1. Hiểu hoạt động nền là gì
Trong Linux, chúng ta có thể chạy một chương trình hoặc một lệnh trong nền. Thêm ký hiệu "&" vào cuối lệnh, chẳng hạn như "./program_name&", sau đó lệnh sẽ được thực thi trong nền mà không chặn thiết bị đầu cuối của chúng tôi. Tuy nhiên, điều quan trọng cần lưu ý là nếu người dùng đăng xuất hoặc đóng phiên đầu cuối, các quy trình nền này sẽ bị chấm dứt. Điều này đòi hỏi lệnh nohup của chúng tôi để giúp chúng tôi giữ cho chương trình chạy trong nền.
2. Hiểu cách sử dụng và chức năng của lệnh nohup
Nohup là tên viết tắt của "NoHangup" và được thiết kế để cho phép người dùng tiếp tục chạy các tiến trình sau khi thoát khỏi shell. Khi chúng ta chạy "nohupcommand&", lệnh sẽ được thêm vào thư mục nohup của thư mục hiện tại và trạng thái đang chạy sẽ được hiển thị, ngay cả khi cửa sổ phiên bị đóng hoặc hệ thống bị thoát, nó sẽ vẫn được thực thi ở chế độ nền. Đây là cách nó hoạt động:
Ví dụ: nếu chúng ta muốn liên tục chạy một chương trình có tên my_program trong nền, chúng ta chỉ cần gõ: nohup./my_program& và nhấn enter. Theo mặc định, đầu ra của chương trình được ghi vào một tệp có tên nohup.out. Nếu bạn cần sửa đổi tệp đầu ra, chỉ cần chuyển hướng đầu ra sang một tệp khác. Ví dụ: "nohup./my_program>my_program.out2>&1&". Số ở đây chỉ ra rằng đầu ra lỗi tiêu chuẩn được chuyển hướng đến luồng đầu ra tiêu chuẩn, tức là thông báo lỗi cũng được ghi vào tệp my_program.out. Bằng cách này, chúng tôi có thể đảm bảo rằng ngay cả khi chúng tôi thoát khỏi phiên hoặc khởi động lại hệ thống, chương trình của chúng tôi sẽ tiếp tục chạy trong nền.
3. Mẹo và biện pháp phòng ngừa
Mặc dù nohup và & cung cấp các tính năng mạnh mẽ, nhưng có một vài lưu ý: Đầu tiên, nếu lệnh của bạn cần sử dụng các biến môi trường shell hoặc các hành vi đặc biệt khác (chẳng hạn như sử dụng chuyển hướng), bạn cần đưa nó vào môi trường bash thay vì sử dụng môi trường sh bình thường (shell mặc định của nohup). Điều này đòi hỏi phải đóng gói tập lệnh khởi động dưới dạng tập lệnh shell, sau đó sử dụng lệnh nohup trong tập lệnh để khởi động chương trình đích. Thứ hai, nohup chỉ giúp chúng ta giữ cho chương trình chạy ở chế độ nền, nhưng nếu bản thân chương trình có lỗi khiến nó gặp sự cố hoặc không hoạt động bình thường vì các lý do khác, chúng ta cần theo dõi và quản lý các quy trình nền này bằng các phương tiện khác. Cuối cùng, các chương trình được khởi chạy với nohup sẽ tiếp tục chạy sau khi hệ thống được khởi động lại, liên quan đến câu hỏi làm thế nào để khởi động các chương trình này tự động, có thể yêu cầu sử dụng các công cụ quản lý dịch vụ của hệ thống và hệ thống khởi tạo liên quan. Do đó, chúng ta cần học cách sử dụng kết hợp các công nghệ này để nâng cao hiệu quả công việc và đảm bảo sự ổn định của hệ thống. Ví dụ: sử dụng systemd để quản lý và giám sát các quy trình. Chúng tôi có thể định cấu hình và quản lý các tác vụ nền phổ biến thông qua dịch vụ systemd để quản lý tự động hiệu quả hơn. Điều này đặc biệt quan trọng đối với các quản trị viên hệ thống và máy chủ lớn. Để tóm tắt các tính năng và mẹo mạnh mẽ của nohup và lệnh, nó có thể giúp chúng tôi quản lý các tác vụ nền và tài nguyên hệ thống hiệu quả hơn trong Linux. Đồng thời, chúng ta cần hiểu lý do và hạn chế đằng sau những công cụ này để chúng ta có thể sử dụng chúng tốt hơn để giải quyết các vấn đề thực tế. Trên đây là phần giới thiệu và sử dụng các lệnh nohup và & trong Linux, mình hy vọng nó sẽ hữu ích với các bạn.