nohup so với màn hình trong Linux: sự lựa chọn của một chương trình để chạy trong nền
2024-10-24 10:34:51
tin tức
tiyusaishi
Trong các hệ thống Linux, chúng ta thường cần chạy một số chương trình chạy dài trong nền, chẳng hạn như tác vụ hàng loạt, máy chủ, v.v. Để đảm bảo rằng các chương trình này tiếp tục chạy ngay cả sau khi thiết bị đầu cuối đóng, chúng tôi thường sử dụng hai công cụ, nohup và màn hình. Bài viết này sẽ giới thiệu các tính năng và kịch bản sử dụng của hai công cụ này để giúp bạn chọn phương pháp phù hợp để quản lý các chương trình nền.
1. nohup: Khiến quá trình bỏ qua tín hiệu cúp máy và chạy
Trong Linux, khi một phiên đầu cuối kết thúc, tất cả các tiến trình bắt đầu trong phiên đó sẽ bị chấm dứt. Tuy nhiên, có những trường hợp chúng tôi muốn quá trình tiếp tục chạy trong nền ngay cả khi thiết bị đầu cuối đã đóng. Đó là nơi lệnh nohup có ích.
Lệnh nohup có thể khiến quá trình bỏ qua tín hiệu treo máy (tức là tín hiệu đóng thiết bị đầu cuối), cho phép quá trình tiếp tục chạy trong nền. Nó sẽ xuất lệnh được chỉ định thành một tệp có tên nohup.out trong thư mục hiện tại, trừ khi một tệp đầu ra khác được chỉ định. Định dạng đơn giản để chạy một chương trình với nohup là: nohupcommand&. Biểu tượng "&" ở đây làm cho lệnh chạy trong nền. Ví dụ: để chạy chương trình máy chủ Python có tên server.py, bạn có thể sử dụng lệnh sau: nohuppythonserver.py&. Bằng cách này, ngay cả khi bạn đóng thiết bị đầu cuối, server.py sẽ tiếp tục chạy trong nền. Tuy nhiên, lưu ý rằng một khi phiên bị ngắt kết nối, không có cách nào để tương tác với quy trình nền trước. Ngoài ra, nếu quá trình kiểm soát phiên đầu cuối đã bị đóng bị chấm dứt, quá trình bắt đầu với nohup cũng sẽ bị ảnh hưởng và chấm dứt. Do đó, khi sử dụng Nohup, bạn cần chú ý tránh để hệ thống không được giám sát trong thời gian dài. Ngoài ra, khi chạy chương trình với nohup, bạn có thể sử dụng các tùy chọn của lệnh nohup để chỉ định các tham số như vị trí và tên của tệp đầu ra. Điều này làm cho đầu ra có tổ chức và dễ quản lý hơn. Ví dụ: nohupcommand>output.log2>&1 chuyển hướng cả đầu ra tiêu chuẩn và lỗi đến tệp output.log. 2. Màn hình: Tạo cửa sổ phiên tương tácNgoài nohup, một công cụ mạnh mẽ khác là màn hình. Màn hình là một bộ ghép kênh đầu cuối hoặc trình quản lý phiên. Nó cho phép người dùng tạo nhiều cửa sổ phiên độc lập và chạy các chương trình trong đó. Ngay cả khi phiên đầu cuối bị đóng hoặc người dùng đăng xuất khỏi tài khoản, cửa sổ phiên được tạo bởi màn hình vẫn hoạt động và tiếp tục chạy các chương trình trong đó. Điều này rất hữu ích cho các chương trình cần giữ cho tiền cảnh hoạt động. Sau khi mở cửa sổ phiên màn hình mới, người dùng có thể tiếp tục tương tác với màn hình trong cùng một giao diện shell terminal, bao gồm nhiều phiên con (quy trình). Chúng tôi có thể nhập exit trong bất kỳ cửa sổ phiên nào để kết thúc phiên mà không ảnh hưởng đến các phiên phụ khác. Nhìn chung, thông qua màn hình, người dùng có thể quản lý các chương trình nền linh hoạt hơn, và có thể tương tác, tránh gián đoạn chương trình không cần thiết và lãng phí tài nguyên, tránh sự không chắc chắn trong hoạt động và đảm bảo hơn nữa tính bảo mật của hoạt động chương trình, điều này đặc biệt quan trọng đối với nhiều tác vụ quy trình vận hành mạng hoặc dài hạn, từ đó cải thiện trải nghiệm người dùng và độ ổn định của hệ thống. (Cuối bài viết này) 3. Tóm tắt: Các kịch bản sử dụng của nohup và màn hình Qua phần giới thiệu trên, có thể thấy nohup và màn hình có những đặc điểm và kịch bản sử dụng riêng. Đối với các tác vụ nền đơn giản hoặc tác vụ tạm thời, bạn có thể sử dụng nohup để đảm bảo rằng các tác vụ vẫn đang chạy trong nền nhưng không thể tương tác sau khi thiết bị đầu cuối đóng. Đối với các tác vụ phức tạp cần chạy trong thời gian dài hoặc các tác vụ yêu cầu tương tác với người dùng, phù hợp hơn là sử dụng màn hình để quản lý cửa sổ phiên, đảm bảo chương trình hoạt động ổn định và cho phép người dùng tương tác. Trong quá trình sử dụng thực tế, bạn có thể lựa chọn các công cụ thích hợp để quản lý các chương trình nền theo nhu cầu cụ thể của mình để đảm bảo tính ổn định và hiệu quả của hệ thống.