Các lệnh shell: nohup với sự kỳ diệu của các quy trình nền
2024-10-26 12:09:32
tin tức
tiyusaishi
Bài viết này sẽ đi sâu vào nohup, một lệnh thường được sử dụng trong Linux và Unix, và cách nó liên quan đến quản lý quy trình nền, cụ thể là cách sử dụng "shellnohup2>&1" Lệnh. Hiểu các khái niệm này có thể rất hữu ích cho các quản trị viên và nhà phát triển hệ thống vì chúng liên quan đến việc chạy các chương trình trong nền, tránh cúp máy và chuyển hướng stds và xấu.
1. NOHUP là gì?
Trước hết, hãy hiểu lệnh nohup. Trên các hệ thống Linux và Unix, khi bạn chạy một chương trình trong thiết bị đầu cuối, chương trình thường bị chấm dứt nếu thiết bị đầu cuối bị đóng. Nhưng đôi khi chúng ta cần chạy một chương trình trong nền và không muốn nó chấm dứt ngay cả khi thiết bị đầu cuối đã đóng. Trong trường hợp này, chúng ta có thể sử dụng lệnh nohup để chạy chương trình, điều này sẽ cho phép chương trình tiếp tục chạy trong nền ngay cả khi bạn thoát khỏi thiết bị đầu cuối hoặc đóng phiên.
2. Tại sao tôi cần sử dụng "shellnohup2>&1"?
Chúng ta hãy xem "shellnohup2>&1". Lệnh này thực sự chạm vào hai khái niệm quan trọng: chạy nền và chuyển hướng. Hãy bắt đầu bằng cách chia nhỏ từng khái niệm trong hai khái niệm này.
1. Chạy nền: Trong các hệ thống Unix và Linux, chúng ta có thể đặt chương trình ở chế độ nền bằng cách thêm biểu tượng "&" sau lệnh. Ví dụ: "command&" sẽ bắt đầu một quá trình nền để chạy lệnh. Tuy nhiên, điều quan trọng cần lưu ý là các quy trình nền này cũng thường bị chấm dứt khi thiết bị đầu cuối bị đóng. Đó chính xác là lý do tại sao chúng ta cần lệnh nohup.
2. Chuyển hướng: Trong Unix và Linux, ">" được sử dụng để chuyển hướng đầu ra của các lệnh đến một tệp. Và "2>&1" có nghĩa là chuyển hướng đầu ra lỗi tiêu chuẩn (bộ mô tả tệp 2) đến nơi đầu ra tiêu chuẩn (mô tả tệp 1) trỏ đến. Điều này cho phép chúng tôi chuyển hướng cả đầu ra tiêu chuẩn và đầu ra lỗi tiêu chuẩn đến một tệp duy nhất để chúng tôi có thể xem nhật ký chạy của chương trình.
Vì vậy, mục đích của lệnh "shellnohup2>&1" là gì? Nói một cách đơn giản, nó cho phép chúng ta chạy lệnh shell trong nền và chuyển hướng cả đầu ra tiêu chuẩn và đầu ra lỗi tiêu chuẩn của lệnh đó sang một tệp duy nhất, đồng thời đảm bảo rằng lệnh sẽ tiếp tục chạy trong nền ngay cả khi thiết bị đầu cuối bị đóng. Điều này rất tốt cho những chương trình cần chạy trong một thời gian dài.
3. Làm thế nào để sử dụng?
Để sử dụng lệnh này, bạn có thể làm theo các bước sau:
1. Mở Terminal.
2. Nhập "nohup (lệnh của bạn) >yourfile.log2>&1&". Ví dụ: "nohuppythonmyscript.py>myscript.log2>&1&". Thao tác này sẽ bắt đầu một quá trình nền để chạy tập lệnh python myscript.py và chuyển hướng tất cả đầu ra đến tệp myscript.log. Đồng thời, quá trình tiếp tục chạy trong nền ngay cả khi thiết bị đầu cuối bị đóng.
3. Bây giờ bạn có thể xem đầu ra của chương trình bằng cách xem tệp yourfile.log. Tệp này sẽ chứa nội dung của đầu ra tiêu chuẩn và đầu ra lỗi tiêu chuẩn.
Nhìn chung, "shellnohup2>&1" là một sự kết hợp lệnh mạnh mẽ cho phép chúng ta chạy các chương trình ở chế độ nền và nắm bắt tất cả các đầu ra, rất hữu ích cho việc quản trị và phát triển hệ thống. Hy vọng bài viết này sẽ giúp bạn hiểu rõ hơn về khái niệm này và sử dụng nó một cách hiệu quả.