上一篇
Lệnh nohup trong Unix là gì và mô tả ví dụ của nó
I. Giới thiệu
Trong các hệ điều hành Unix và Linux, lệnh nohup là một công cụ rất quan trọng cho phép người dùng chạy các lệnh hoặc tập lệnh trong nền mà không bị ảnh hưởng bởi việc treo máy. Điều này có nghĩa là các tiến trình bắt đầu thông qua nohup sẽ tiếp tục chạy ngay cả khi phiên đầu cuối bị đóng. Bài viết này sẽ giới thiệu cách sử dụng lệnh nohup một cách chi tiết và minh họa nó bằng các ví dụ.
2. Giới thiệu về lệnh nohup
Chức năng chính của lệnh nohup là chạy lệnh hoặc tập lệnh và chuyển hướng đầu ra đến một tệp có tên nohup.out để tránh ảnh hưởng của tất cả các tín hiệu treo máy. Bằng cách này, ngay cả sau khi tắt thiết bị đầu cuối hoặc đăng xuất khỏi hệ thống, quá trình bắt đầu bằng lệnh nohup vẫn sẽ chạy trong nền. Điều này giúp người dùng dễ dàng ngắt kết nối khỏi thiết bị đầu cuối trong khi thực hiện các tác vụ có thể mất nhiều thời gian để hoàn thành.
3. Cú pháp của lệnh nohup
Cú pháp cơ bản của lệnh nohup như sau:
''Ầm ầm
nohupcommand>/dev/null2>&1&
```
Trong đó:
Lệnh là một lệnh hoặc tập lệnh mà bạn muốn chạy trong nền.
'/dev/null' là nơi đầu ra được chuyển hướng, chỉ ra rằng stdout bị bỏ qua.
'2>&1' cho biết rằng đầu ra lỗi tiêu chuẩn được chuyển hướng đến đầu ra tiêu chuẩn. Nếu bạn bỏ qua đầu ra tiêu chuẩn, đầu ra lỗi tiêu chuẩn cũng bị bỏ qua.
'&' chỉ ra rằng lệnh được đưa vào nền để chạy.
Thứ tư, mô tả các ví dụ
1. Chạy một lệnh đơn giản: Giả sử chúng ta muốn chạy một lệnh đơn giản, chẳng hạn như lệnh 'ls', trong nền và muốn bỏ qua tất cả đầu ra. Đây là cách nó có thể được:
''Ầm ầm
nohupls>/dev/null2>&1&
```
Thao tác này sẽ bắt đầu lệnh 'ls' chạy trong nền và bỏ qua tất cả đầu ra. Lệnh sẽ tiếp tục chạy sau khi bạn đóng thiết bị đầu cuối hoặc đăng xuất. Một tệp có tên nohup.out có thể được tìm thấy trong thư mục chính của người dùng (nếu nó không tồn tại) và sẽ chứa tất cả thông tin đầu ra của lệnh. Lưu ý rằng vì lệnh đã được chuyển hướng đến '/dev/null', nội dung thực tế có thể trống. Trong các ứng dụng thực tế, đường dẫn và tên của tệp đầu ra có thể được điều chỉnh theo yêu cầu. Nếu bạn cần xem ID tiến trình (PID), bạn có thể sử dụng '$!' để lấy PID của quy trình nền trước đó. Ví dụ: nohupls>/dev/null2>&1&echo$!. Tuy nhiên, tính năng này hiếm khi được sử dụng trong các ứng dụng thực tế. Trong hầu hết các trường hợp, chúng tôi chỉ cần đảm bảo rằng quá trình nền tiếp tục chạy sau khi thiết bị đầu cuối bị đóng. Ngoài ra, các lệnh được khởi chạy bằng nohup sẽ được thêm vào tệp cùng tên trong thư mục chính của người dùng theo mặc định dưới dạng tập lệnh sao lưu cho quá trình. Tuy nhiên, hành vi này có thể được điều chỉnh để tắt việc tạo tập lệnh sao lưu với các tùy chọn khác như '-n' hoặc '--no-joblog'. Ví dụ: 'nohup-ncommand&' hoặc 'nohup--no-joblogcommand&' sẽ không tạo tệp tập lệnh sao lưu khi khởi động, nhưng cũng sẽ đảm bảo rằng lệnh sẽ vẫn được thực thi trong nền khi nền trước thoát ra cho đến khi môi trường hệ thống trong tham số thực thi tắt máy bị chấm dứt hoặc quá trình dịch vụ bị quản trị viên buộc phải tắt. Do đó, bạn cần chọn phương pháp thích hợp để chạy lệnh nohup theo tình hình thực tế. Trong các ứng dụng thực tế, chúng ta cũng sẽ thấy việc sử dụng kết hợp phức tạp hơn, chẳng hạn như sử dụng các tác vụ thời gian cron và các chức năng khác để thực hiện xử lý tác vụ nền phức tạp và tự động hơn, xây dựng và quản lý kịch bản ứng dụng, hoạt động điều khiển và các chức năng liên quan khác và sử dụng các phương pháp quản lý, v.v., tất cả cần được kết hợp với các nhu cầu cụ thể để học và nắm vững các kỹ năng sử dụng và vận hành của nó, để quản lý và kiểm soát tốt hơn hoạt động của các quy trình nền và giám sát và duy trì để đảm bảo tính ổn định và bảo mật của hệ thống. Do đó, hiểu và thành thạo lệnh nohup trong Unix là một trong những kỹ năng mà nhân viên O&M phải thành thạo. Hy vọng bài viết này sẽ giúp bạn hiểu rõ hơn và sử dụng lệnh nohup và áp dụng nó trong các tình huống thực tế.