I. Giới thiệu Trong các hệ thống Linux và Unix, tập lệnh shell là một công cụ mạnh mẽ để tự động hóa việc thực hiện một loạt các lệnh. Trong các tập lệnh, chúng ta thường cần thực hiện các lệnh hoặc chương trình chạy dài để giữ cho chúng chạy ngay cả sau khi phiên đầu cuối kết thúc. Đó là nơi lệnh nohup có ích. Bài viết này sẽ chỉ cho bạn cách sử dụng lệnh nohup trong tập lệnh shell để đảm bảo rằng các tác vụ nền tiếp tục chạy mà không bị ảnh hưởng bởi gián đoạn phiên đầu cuối. 2. Tổng quan về lệnh nohup Nohup là một lệnh shell chạy lệnh hoặc tập lệnh trong nền và tiếp tục thực thi ngay cả khi phiên đầu cuối bị ngắt kết nối. Mục đích của lệnh này là để ngăn chặn treo máy và đảm bảo rằng lệnh hoặc tập lệnh tiếp tục chạy. Khi chạy một chương trình bằng lệnh nohup, đầu ra của chương trình sẽ được chuyển hướng đến một tệp có tên nohup.out, trừ khi một tệp đầu ra khác được chỉ định. Phần 3: Sử dụng nohup trong shell script Các bước để sử dụng nohup trong shell script như sau: 1. Mở phiên thiết bị đầu cuối và đăng nhập vào hệ điều hành. 2. Tạo và mở một tệp tập lệnh shell mới, ví dụ: có tên myscript.sh. 3. Viết lệnh hoặc chương trình cần chạy trong một thời gian dài trong tệp tập lệnh. Ví dụ: bạn có thể sử dụng các vòng lặp để mô phỏng một quá trình chạy dài. 4. Sử dụng lệnh nohup trong tập lệnh để chạy lệnh hoặc chương trình. Ví dụ: bạn có thể sử dụng cú pháp sau: nohupcommand>output_file2>&1&. Ở đây lệnh là lệnh hoặc script để chạy, output_file là đường dẫn đến file output (tùy chọn), 2>&1 là chuyển hướng lỗi chuẩn đến file output chuẩn (tùy chọn), và cuối cùng & means để đưa lệnh vào nền để chạy. 5. Lưu và đóng tệp tập lệnh. 6. Chạy tệp tập lệnh trong thiết bị đầu cuối. Bạn có thể sử dụng lệnh chmod để thêm quyền thực thi vào tệp tập lệnh, sau đó sử dụng ./myscript.sh để chạy tập lệnh. 4. Mã mẫu Dưới đây là một ví dụ về một tập lệnh shell đơn giản sử dụng lệnh nohup để chạy một vòng lặp trong nền: ''Ầm ầm !/bin/bash Dưới đây là một ví dụ về một tập lệnh shell đơn giản sử dụng nohup để chạy một vòng lặp trong nền. Thời gian hiện tại được in trong một vòng lặp cho đến khi người dùng dừng thực thi tập lệnh theo cách thủ công. trong khi; làm echo "Thời gian hiện tại: $ (ngày)" >>myoutput.txt thêm thời gian vào tệp myoutput.txt. ngủ1 chờ 1 giây. Khoảng thời gian có thể được điều chỉnh khi cần thiết. Done& đặt vòng lặp vào nền để chạy. Lưu ý ký hiệu & ở cuối. Sau đó sử dụng Ctrl + C để chấm dứt việc thực thi vòng lặp và xem đầu ra. Sử dụng lệnh nohup để đảm bảo rằng vòng lặp chạy liên tục trong nền và không bị ảnh hưởng bởi gián đoạn phiên đầu cuối. Bạn có thể chạy tập lệnh bằng lệnh sau: nohup./myscript.sh& Điều này sẽ làm cho tập lệnh chạy trong nền và chuyển hướng đầu ra đến tệp nohup.out (trừ khi một tệp đầu ra khác được chỉ định). Để xem nội dung đầu ra, bạn có thể sử dụng lệnh cat để xem nội dung của tệp nohup.out hoặc mở tệp bằng trình soạn thảo văn bản khác. Ngoài ra, các công cụ khác như màn hình hoặc tmux có thể được sử dụng để quản lý các quy trình nền và đảm bảo rằng chúng tiếp tục chạy mà không bị gián đoạn phiên đầu cuối. Những công cụ này cung cấp các tính năng nâng cao hơn và tính linh hoạt để xử lý các nhu cầu quản lý tác vụ nền phức tạp. Tóm tắt: Bài viết này mô tả cách sử dụng lệnh nohup trong tập lệnh shell để đảm bảo rằng các tác vụ nền tiếp tục chạy mà không bị ảnh hưởng bởi gián đoạn phiên đầu cuối. Một mã mẫu đơn giản trình bày cách sử dụng lệnh nohup để chạy các quy trình nền và quản lý nội dung đầu ra. Những mẹo này rất hữu ích để tự động hóa việc thực hiện các tác vụ và chương trình dài hạn. Cần chú ý đến việc quản lý tệp và xử lý lỗi khi sử dụng các tính năng này để đảm bảo hoạt động đúng và độ tin cậy của chương trình. Hy vọng bài viết này sẽ giúp bạn đọc hiểu rõ hơn và áp dụng lệnh nohup trong shell script để quản lý các tác vụ nền.