上一篇
Quá trình nền Shell và lệnh Nohup: Giữ cho chương trình chạy mà không bị ảnh hưởng
I. Giới thiệu
Trong Unix / Linux, khi chúng ta muốn thực thi một chương trình và chạy nó ở chế độ nền mà không bị ảnh hưởng bởi việc chấm dứt phiên đầu cuối, chúng ta thường sử dụng "quy trình nền shell" và "lệnh nohup". Bài viết này sẽ xem xét kỹ hơn hai khái niệm này và ứng dụng của chúng trong thực tế.
2. Quy trình nền vỏ
Trong Unix / LinuxShell, chúng ta có thể đặt một tiến trình đang chạy trong nền để ngay cả khi chúng ta đóng phiên đầu cuối, quá trình sẽ tiếp tục chạy. Cách thực hiện việc này đơn giản như thêm biểu tượng "&", sau khi gõ lệnh vào dòng lệnh để đưa quá trình đang chạy ở chế độ nền. Ví dụ: nếu chúng ta muốn chạy một chương trình có tên là "myprogram", chúng ta chỉ cần nhập "./myprogram&". Bằng cách này, chương trình sẽ chạy trong nền và người dùng có thể tiếp tục thực hiện các tác vụ khác hoặc đóng phiên đầu cuối.
3. Lệnh Nohup
Mặc dù việc đặt một tiến trình đang chạy trong nền có thể tránh quá trình bị chấm dứt vào cuối phiên đầu cuối, nhưng vẫn còn các vấn đề khác. Khi người dùng sử dụng phương thức đăng nhập từ xa như telnet hoặc SSH, quá trình chạy trong nền cũng sẽ bị chấm dứt sau khi kết nối bị ngắt kết nối. Để giải quyết vấn đề này, chúng ta có thể sử dụng lệnh nohup để chạy một tiến trình nền. Lệnh Nohup bỏ qua tín hiệu gác máy và khiến chương trình tiếp tục chạy cho đến khi nó bị chấm dứt rõ ràng. Cú pháp cơ bản để sử dụng lệnh nohup là: "nohupcommand&". Ví dụ: "nohup./myprogram&" sẽ chạy chương trình myprogram ở chế độ nền và bỏ qua tín hiệu gác máy. Khi chạy một chương trình với nohup, đầu ra của chương trình sẽ được chuyển hướng đến một tệp có tên nohup.out trong thư mục hiện tại theo mặc định.
Thứ tư, ứng dụng thực tế
Giả sử chúng ta đang chạy một tác vụ tính toán dài hạn trên một máy chủ từ xa và để đảm bảo rằng tác vụ không bị chấm dứt do mất mạng hoặc tắt phiên đầu cuối cục bộ, chúng ta có thể sử dụng lệnh nohup để đặt tác vụ đang chạy trong nền. Các bước thực hiện như sau:
1. Mở phiên đầu cuối trên máy chủ từ xa.
2. Nhập lệnh: "nohup./myprogram&". Giả định ở đây là myprogram là chương trình tác vụ sẽ được thực thi.
3. Lệnh nohup đặt chương trình đang chạy trong nền và bỏ qua tín hiệu gác máy. Đầu ra chương trình sẽ được chuyển hướng đến tệp nohup.out.
4. Người dùng có thể đóng phiên đầu cuối hoặc ngắt kết nối mạng và tác vụ sẽ tiếp tục chạy trên máy chủ.
5. Biện pháp phòng ngừa
Khi sử dụng lệnh nohup, bạn cần chú ý đến các điểm sau:
1. Lệnh nohup không hoạt động cho tất cả các loại chương trình. Đối với một số chương trình yêu cầu tương tác đầu cuối, sử dụng nohup có thể không hoạt động đúng.
2. Khi chạy chương trình với nohup, hãy đảm bảo bạn có đủ dung lượng đĩa để lưu trữ đầu ra của chương trình. Theo mặc định, đầu ra được lưu vào tệp nohup.out trong thư mục hiện tại.
3. Khi sử dụng lệnh nohup, tốt nhất là chỉ định một đường dẫn và tên rõ ràng cho tệp nhật ký đầu ra để dễ quản lý và tìm kiếm.
6. Tóm tắt
Bài viết này giới thiệu khái niệm và ứng dụng của các quy trình nền shell và các lệnh nohup và giúp người đọc hiểu cách giữ cho chương trình chạy trong nền mà không bị ảnh hưởng trong các hệ thống Unix / Linux. Với các ví dụ ứng dụng thực tế và giải thích các cân nhắc, người đọc có thể sử dụng tốt hơn hai công cụ này để hoàn thành các nhiệm vụ thực tế.