上一篇
Tiêu đề: Nohup vs. Ampersand in Bash (&)
I. Giới thiệu
Trong các hệ điều hành Unix và Linux, việc thực thi các lệnh đầu cuối thường liên quan đến việc chạy ở nền trước hoặc nền. Khi chúng tôi thực hiện một lệnh trong thiết bị đầu cuối, chúng tôi hy vọng lệnh sẽ được thực thi ngay lập tức và xem kết quả. Nhưng đôi khi, chúng ta có thể cần thực hiện các lệnh hoặc tập lệnh dài mà không phải đợi ở nền trước mọi lúc. Tại thời điểm này, chúng ta có thể sử dụng hai phương thức phổ biến: lệnh nohup và Ampersand(&). Bài viết này sẽ mô tả sự khác biệt giữa hai phương pháp và trường hợp sử dụng này.
2. Ký hiệu và trong Bash (&)
Trong Bash, Ampersand(&) được sử dụng để đặt các lệnh trong nền để thực thi. Khi bạn thêm Ký hiệu và sau một lệnh, lệnh sẽ bắt đầu ngay lập tức trong nền và bạn có thể tiếp tục thực hiện các lệnh khác trong thiết bị đầu cuối. Điều này rất hữu ích trong các tình huống cần thực hiện nhiều tác vụ cùng một lúc. Chẳng hạn:
''Ầm ầm
$long_running_command&
```
Lệnh này chạy long_running_command trong nền và bạn có thể tiếp tục nhập các lệnh khác trong thiết bị đầu cuối. Điều quan trọng cần lưu ý là các tác vụ nền cũng bị chấm dứt ngay khi bạn đóng thiết bị đầu cuối hoặc phiên SSH. Do đó, nếu bạn muốn tiếp tục chạy các tác vụ sau khi đóng thiết bị đầu cuối, bạn cần sử dụng các phương pháp khác.
3. Lệnh nohup trong Bash
Lệnh nohup được sử dụng để chạy các lệnh trong nền và không bị ảnh hưởng bởi tín hiệu gác máy. Ngay cả khi bạn đóng thiết bị đầu cuối hoặc phiên SSH, các lệnh được khởi chạy bằng nohup sẽ tiếp tục chạy. Điều này rất hữu ích cho các tác vụ cần chạy trong một thời gian dài. Cú pháp cơ bản để sử dụng nohup như sau:
''Ầm ầm
$nohupcommand>/dev/null2>&1&
```
Ở đây, "command" là lệnh bạn muốn chạy trong nền. ">/dev/null2>&1" là chuyển hướng đầu ra tiêu chuẩn và đầu ra lỗi sang /dev/null để tránh hiển thị đầu ra trong thiết bị đầu cuối. "&" đặt lệnh đang chạy trong nền. Một lệnh được khởi chạy với nohup xuất ra một tệp có tên nohup.out chứa tất cả đầu ra của lệnh. Bạn có thể theo dõi tiến trình của tác vụ bằng cách xem tệp này.
4. Sự khác biệt và kịch bản áp dụng
1.Ampersand(&): Lý tưởng cho các tác vụ nền tạm thời hoặc trong các tình huống bạn vẫn cần truy cập thiết bị đầu cuối và tương tác với các tác vụ khác. Khi thiết bị đầu cuối hoặc phiên SSH được đóng, các tác vụ được khởi tạo với Ampersand sẽ bị chấm dứt.
2.nohup: Dành cho các tác vụ dài hạn hoặc trong trường hợp bạn không cần truy cập vào thiết bị đầu cuối. Các tác vụ bắt đầu với nohup tiếp tục chạy ngay cả khi thiết bị đầu cuối hoặc phiên SSH bị đóng. Nếu bạn muốn tránh nhìn thấy đầu ra trong thiết bị đầu cuối, bạn có thể sử dụng chuyển hướng để lưu đầu ra vào tệp.
V. Kết luận
Nhìn chung, Ampersand và nohup đều là công cụ để chạy các tác vụ nền trong Bash. Tuy nhiên, chúng phù hợp với các tình huống khác nhau. Ký hiệu và phù hợp cho các tác vụ nền ngắn hoặc các tình huống mà bạn tương tác với các tác vụ khác, trong khi nohup tốt cho các tác vụ chạy dài hoặc khi bạn chạy các tác vụ mà không cần truy cập vào thiết bị đầu cuối. Lựa chọn công cụ phù hợp theo nhu cầu thực tế của bạn có thể cải thiện đáng kể hiệu quả công việc.