nohup và &: là hai cách quan trọng để chạy lệnh trong nền trong Linux
2024-10-16 11:08:52
tin tức
tiyusaishi
Trong hệ điều hành Linux, chúng ta thường cần chạy một số lệnh hoặc chương trình nhất định ở chế độ nền, đặc biệt là khi thực hiện các tác vụ dài, chẳng hạn như tải xuống tệp, xử lý dữ liệu lớn, v.v. Đây là nơi các lệnh nohup và & trở nên đặc biệt quan trọng. Bài viết này sẽ trình bày chi tiết cách sử dụng và sự khác biệt giữa hai lệnh này.
1. Hiểu tầm quan trọng của các hoạt động nền
Trong Linux, khi chúng ta thực hiện một lệnh trong thiết bị đầu cuối, lệnh sẽ chiếm một phiên. Lệnh được chấm dứt ngay sau khi thiết bị đầu cuối đóng hoặc phiên kết thúc. Tuy nhiên, đôi khi các lệnh chúng ta cần thực thi có thể mất nhiều thời gian để hoàn thành hoặc chúng ta muốn các lệnh tiếp tục chạy ngay cả sau khi đóng thiết bị đầu cuối. Tại thời điểm này, bạn cần đặt lệnh ở chế độ nền.
2. Sử dụng lệnh nohup
Nohup là chữ viết tắt của "nohangup", một lệnh cho phép chương trình bỏ qua tín hiệu gác máy (tức là tín hiệu phát ra khi người dùng thoát khỏi thiết bị đầu cuối). Bằng cách này, ngay cả khi bạn đóng thiết bị đầu cuối hoặc ngắt kết nối, chương trình sẽ tiếp tục chạy trong nền. Cú pháp cơ bản để chạy một lệnh với nohup là:
''Ầm ầm
nohupcommand>/dev/null2>&1&
```
"command" là lệnh cần được chạy và ">/dev/null2>&1" là chuyển hướng cả đầu ra tiêu chuẩn và đầu ra lỗi đến một tệp thiết bị trống để tránh các tệp nhật ký không cần thiết. "&" là đặt lệnh ở chế độ nền để chạy.
Ví dụ: sử dụng Nohup để chạy chương trình có tên "MyProgram":
''Ầm ầm
nohup./myprogram>myprogram.out2>&1&
```
3. Sử dụng & biểu tượng
Không giống như nohup, biểu tượng & có thể chạy các lệnh trực tiếp trong nền. Khi bạn thêm dấu và dấu sau một lệnh, lệnh ngay lập tức trở về dấu nhắc lệnh và lệnh bắt đầu chạy trong nền. Chẳng hạn:
''Ầm ầm
./myprogram&
```
Lệnh nohup không bắt buộc theo cách này, nhưng điều quan trọng cần lưu ý là lệnh cũng sẽ chấm dứt khi thiết bị đầu cuối đóng. Do đó, nếu bạn cần giữ các lệnh chạy liên tục trong nền, bạn cũng cần kết hợp các phương pháp khác, chẳng hạn như sử dụng các công cụ như màn hình hoặc tmux.
Thứ tư, sự khác biệt giữa nohup và &
1.nohup có thể làm cho lệnh tiếp tục chạy sau khi người dùng thoát khỏi thiết bị đầu cuối và & chỉ có thể làm cho lệnh chạy trong nền và không thể đảm bảo rằng nó sẽ tiếp tục chạy.
2. Một lệnh chạy với nohup sẽ chuyển hướng đầu ra đến một tệp có tên nohup.out, trong khi & sẽ không. Nếu bạn cần xem nhật ký đầu ra hoặc lỗi, bạn sẽ cần sử dụng một công cụ khác như lệnh đuôi để xem tệp.
3. Trong một số trường hợp, một số chương trình có thể không hỗ trợ hoặc hỗ trợ đầy đủ lệnh nohup, tại thời điểm đó bạn có thể sử dụng & kết hợp với các công cụ khác như màn hình hoặc tmux để đạt được chạy nền liên tục.
5. Tóm tắt
nohup và& là hai cách phổ biến trong Linux để làm cho các lệnh chạy trong nền. Sự khác biệt giữa chúng là nohup đảm bảo rằng lệnh sẽ tiếp tục chạy sau khi người dùng thoát khỏi thiết bị đầu cuối, trong khi & không thể. Trong sử dụng thực tế, bạn nên chọn lệnh phù hợp dựa trên nhu cầu và kịch bản của bạn. Đồng thời, để quản lý tốt hơn các tác vụ nền, nó cũng có thể được sử dụng kết hợp với các công cụ và phương pháp khác.