I. Giới thiệu Trong hệ thống Linux, chúng ta thường cần chạy một số tác vụ dài hạn trong nền, chẳng hạn như thực thi tập lệnh, chạy chương trình, v.v. Để đảm bảo rằng các tác vụ này không bị gián đoạn do tắt thiết bị đầu cuối hoặc các lý do khác, chúng ta cần hiểu cách chạy các tác vụ này trong nền và bỏ qua tín hiệu gác máy. Chủ đề này mô tả các nguyên tắc cơ bản của việc chạy nền trong Linux shell và cách sử dụng lệnh nohup để thực hiện chạy nền. 2. LinuxShell chạy trong nền Trong LinuxShell, chúng ta có thể đặt một tác vụ ở chế độ nền bằng cách thêm biểu tượng "&" sau lệnh. Ưu điểm của việc này là ngay cả khi chúng ta đóng thiết bị đầu cuối hoặc đăng xuất, các tác vụ trong nền sẽ tiếp tục chạy. Tuy nhiên, khi thiết bị đầu cuối bị đóng, theo mặc định, tất cả các tiến trình đang chạy trong nền đều nhận được tín hiệu treo máy khiến quá trình chấm dứt. Để giải quyết vấn đề này, chúng ta cần sử dụng các lệnh đặc biệt để bỏ qua tín hiệu gác máy. 3. Giới thiệu về lệnh nohup Lệnh nohup là chữ viết tắt của "nohangup" và được sử dụng để chạy lệnh hoặc tập lệnh trong nền và bỏ qua tất cả các tín hiệu gác máy. Điều này có nghĩa là ngay cả khi chúng ta đóng thiết bị đầu cuối hoặc ngắt kết nối SSH, tác vụ bắt đầu bằng nohup vẫn sẽ tiếp tục chạy. Cú pháp của lệnh nohup như sau: nohupcommand>/dev/null2>&1& trong đó "lệnh" là một lệnh hoặc tập lệnh để chạy trong nền. Biểu tượng ">" chuyển hướng đầu ra stdout thành /dev/null, tức là bỏ qua đầu ra. "2>&1" là chuyển hướng đầu ra lỗi tiêu chuẩn sang đầu ra tiêu chuẩn. Biểu tượng "&" chỉ ra rằng lệnh được chạy trong nền. Điều này đảm bảo rằng tác vụ không bị gián đoạn bằng cách gác máy và tất cả thông tin đầu ra bị bỏ qua. 4. Cách sử dụng lệnh nohup Sử dụng lệnh nohup rất đơn giản. Giả sử chúng ta muốn chạy một tập lệnh có tên là "myscript.sh" trong nền, chúng ta có thể làm theo các bước sau: 1. Mở Terminal. 2. Nhập lệnh sau và nhấn enter: nohup./myscript.sh>/dev/null2>&1&. Thao tác này sẽ chạy myscript.sh tập lệnh trong nền và bỏ qua tất cả thông tin đầu ra. 3. Để kiểm tra xem tác vụ đã được bắt đầu thành công hay chưa, bạn có thể sử dụng lệnh jobs để xem tất cả các tác vụ nền trên thiết bị đầu cuối hiện tại. Cũng có thể sử dụng lệnh ps để xem tất cả các quy trình. Ví dụ: nhập psaux|grepmyscript.sh để xem thông tin xử lý của tập lệnh myscript.sh. 5. Biện pháp phòng ngừa 1. Tác vụ bắt đầu bằng lệnh nohup sẽ tạo một tệp có tên "nohup.out" trong thư mục hiện tại để lưu thông tin đầu ra. Nếu bạn không cần thông tin đầu ra này, bạn có thể chuyển hướng nó đến /dev/null hoặc xử lý nó theo một cách khác. 2. Các tác vụ bắt đầu bằng lệnh nohup không bị giới hạn bởi phiên đầu cuối và tác vụ sẽ tiếp tục chạy ngay cả khi thiết bị đầu cuối bị đóng hoặc ngắt kết nối. Do đó, cần đặc biệt chú ý đến hoạt động của nhiệm vụ để tránh lãng phí tài nguyên và quá tải cho hệ thống. 3. Để đảm bảo hoạt động bình thường của tác vụ, tốt nhất là thêm các chức năng xử lý lỗi và ghi nhật ký vào tập lệnh hoặc lệnh, để các vấn đề có thể được tìm thấy và giải quyết kịp thời. 6. Tóm tắt Chủ đề này mô tả các nguyên tắc cơ bản của việc chạy nền trong Linux shell và cách sử dụng lệnh nohup để thực hiện chạy nền. Bằng cách hiểu nguyên tắc chạy nền và sử dụng lệnh nohup một cách chính xác, chúng ta có thể dễ dàng chạy các tác vụ dài trên Linux và đảm bảo rằng các tác vụ không bị gián đoạn do tắt thiết bị đầu cuối hoặc các lý do khác. Điều này rất hữu ích cho việc quản trị hệ thống và công việc phát triển hàng ngày.