Trong các hệ thống Unix và Linux, chúng ta thường cần chạy các lệnh hoặc chương trình trong nền để tiếp tục thực thi sau khi người dùng thoát khỏi phiên shell. Tại thời điểm này, chúng ta thường gặp hai cách để chạy trong nền: lệnh nohup và biểu tượng "&". Mục đích của bài viết này là thảo luận về sự khác biệt giữa hai phương pháp này và phương pháp nào chúng ta nên chọn trong những tình huống nào. 1. Bối cảnh: Tại sao phải chạy lệnh trong nền? Trong môi trường dòng lệnh, đôi khi chúng ta cần thực hiện một số tác vụ tốn thời gian, chẳng hạn như phân tích dữ liệu lớn, xử lý video, v.v. Nếu chúng ta chạy các tác vụ này trực tiếp ở nền trước, nó sẽ chặn phiên shell của chúng ta và ngăn chúng ta thực hiện các tác vụ khác. Vì vậy, chúng ta cần đặt các tác vụ này chạy trong nền để chúng ta có thể làm những việc khác cùng một lúc. 2. Hiểu lệnh nohup và biểu tượng "&" 1. Biểu tượng "&": Trong Unix và Linux, biểu tượng "&" được sử dụng để đặt các lệnh đang chạy trong nền. Khi bạn nhập lệnh vào shell và làm theo biểu tượng "&", lệnh ngay lập tức quay trở lại và bắt đầu thực thi trong nền. Tuy nhiên, khi một lệnh được đặt trong nền bằng biểu tượng "&", nó cũng ngừng chạy nếu phiên bị chấm dứt (ví dụ: người dùng đăng xuất). 2. Lệnh Nohup: Nohup là tên viết tắt của "nohangup", được sử dụng để chạy lệnh và bỏ qua tất cả các tín hiệu gác máy. Điều này có nghĩa là các lệnh được khởi tạo thông qua nohup sẽ tiếp tục chạy trong nền ngay cả khi bạn thoát khỏi phiên shell. Nohup yêu cầu một tệp lệnh để lưu đầu ra của quá trình chạy, trừ khi bạn chỉ định rằng đầu ra được chuyển hướng đến một tệp. 3. So sánh hai phương pháp 1. Khi chúng ta cần thực hiện một lệnh cần tiếp tục chạy sau khi người dùng thoát khỏi phiên shell, chúng ta nên chọn nohup. Ví dụ: nếu chúng ta cần chạy một tập lệnh từ xa và xem kết quả sau nhiều giờ, chúng ta nên sử dụng nohup. 2. Chúng ta có thể sử dụng biểu tượng "&" khi chúng ta chỉ muốn lệnh chạy trong nền mà không cần tiếp tục sau khi người dùng thoát. Ví dụ: nếu chúng ta đang chạy nhiều lệnh hoặc chương trình cùng một lúc, chúng ta có thể sử dụng biểu tượng "&" để đặt một số tác vụ nhất định trong nền. 4. Biện pháp phòng ngừa 1. Bạn cần chú ý dọn dẹp các tệp tạm thời khi sử dụng nohup. Nohup sẽ tạo một file có tên Nohup.out ở vị trí mặc định để lưu output ra. Nếu bạn chạy nhiều dữ liệu trong một thời gian dài, nó có thể chiếm rất nhiều dung lượng đĩa. Do đó, nên sử dụng chuyển hướng để lưu đầu ra vào một tệp hoặc thư mục cụ thể. 2. Khi sử dụng biểu tượng "&", bạn cần chú ý đến đầu ra và xử lý lỗi của tác vụ. Vì tác vụ chạy trong nền, đầu ra và lỗi của nó có thể được gửi trực tiếp vào nền, khiến chúng tôi không thể biết tác vụ đang chạy kịp thời như thế nào. Nếu bạn cần xem đầu ra hoặc lỗi trong thời gian thực, bạn có thể sử dụng quy trình để chuyển hướng đầu ra đến tệp hoặc sử dụng công cụ như màn hình. Tóm tắt: Cả nohup và biểu tượng "&" đều là những cách phổ biến để chạy các lệnh trong nền trong Unix và Linux. Khi lựa chọn phương pháp nào để sử dụng, chúng ta cần quyết định theo nhu cầu thực tế. Nếu bạn cần tác vụ tiếp tục chạy sau khi người dùng thoát, bạn nên sử dụng nohup; Nếu bạn chỉ cần giữ cho tác vụ chạy trong nền, bạn có thể sử dụng biểu tượng "&". Đồng thời, dù sử dụng theo cách nào, chúng ta cũng cần chú ý đến đầu ra và xử lý lỗi của tác vụ để đảm bảo tác vụ có thể chạy chính xác và nhận được kết quả như mong đợi.