Bạn muốn chạy một chương trình Linux ngay cả khi đóng terminal? Lệnh nohup trong Linux chính là giải pháp, giúp chương trình tiếp tục chạy ngầm. Nó bỏ qua tín hiệu HUP (hangup), ngăn chương trình bị dừng khi bạn ngắt kết nối. Hãy sử dụng nohup để đảm bảo ứng dụng của bạn hoạt động liên tục, không bị gián đoạn.
Lệnh nohup trong linux là gì?
Lệnh nohup trong Linux là một công cụ mạnh mẽ giúp bạn chạy các chương trình hoặc script ngay cả sau khi bạn đã đăng xuất khỏi hệ thống. Khi sử dụng command nohup in linux, chương trình sẽ tiếp tục chạy ngầm, không bị gián đoạn bởi việc đóng terminal. Điều này rất hữu ích cho các tác vụ mất nhiều thời gian hoặc cần chạy liên tục mà không cần sự giám sát trực tiếp. Kết quả đầu ra của chương trình thường được ghi vào một file có tên là nohup.out trong thư mục hiện tại, hoặc bạn có thể chỉ định một file khác. Hãy nhớ rằng, để đảm bảo chương trình chạy ổn định, bạn nên kiểm tra và xử lý các lỗi có thể xảy ra trong quá trình thực thi.
Tìm hiểu Mục đích của Lệnh nohup
Trong bước này, bạn sẽ tìm hiểu về mục đích của lệnh nohup trong Linux.
Lệnh nohup được dùng để chạy một lệnh hoặc script ở chế độ nền.
Nó cho phép quá trình tiếp tục chạy ngay cả sau khi bạn đăng xuất khỏi phiên terminal.
Khi bạn chạy một tiến trình dài trong terminal, nó sẽ bị dừng nếu bạn đăng xuất.
Lệnh nohup cho phép bạn chạy một tiến trình mà sẽ tiếp tục chạy sau khi đăng xuất.
Điều này giúp ngăn chặn việc tiến trình bị dừng đột ngột khi bạn đóng terminal.
Hãy bắt đầu bằng cách chạy một lệnh đơn giản sử dụng nohup:
nohup sleep 60 &
Lệnh này sẽ chạy lệnh sleep 60 ở chế độ nền và lưu output vào file nohup.out.
File nohup.out sẽ được tạo trong thư mục hiện tại của bạn.
Ví dụ output:
[1] 12345
Ký tự & ở cuối lệnh chạy tiến trình ở chế độ nền.
Output hiển thị Process ID (PID) của tiến trình chạy nền.
Để xác minh rằng tiến trình vẫn đang chạy, bạn có thể dùng lệnh ps:
ps aux | grep sleep
Ví dụ output:
labex 12345 0.0 0.0 8184 712 pts/0 S 14:20 0:00 sleep 60
Như bạn thấy, tiến trình sleep 60 vẫn đang chạy, ngay cả khi đã đăng xuất.
Chạy một tiến trình dài hạn bằng nohup
Trong bước này, bạn sẽ học cách sử dụng lệnh nohup để chạy một tiến trình dài hạn ở chế độ nền.
Hãy bắt đầu bằng việc tạo một script đơn giản để chạy tiến trình dài hạn. Tạo file mới tên long_process.sh trong thư mục ~/project với nội dung sau:
#!/bin/bash
echo "Starting long-running process..."
sleep 120
echo "Long-running process completed."
Cấp quyền thực thi cho script:
chmod +x ~/project/long_process.sh
Bây giờ, hãy chạy script bằng lệnh nohup:
nohup ~/project/long_process.sh &
Lệnh này sẽ khởi chạy tiến trình dài hạn ở chế độ nền, và đầu ra sẽ được lưu vào file nohup.out trong thư mục hiện tại.
Ví dụ về đầu ra:
[1] 12345
Đầu ra hiển thị ID tiến trình (PID) của tiến trình chạy nền.
Để xác minh tiến trình vẫn đang chạy, bạn có thể sử dụng lệnh ps:
ps aux | grep long_process.sh
Ví dụ về đầu ra:
labex 12345 0.0 0.0 8184 712 pts/0 S 14:20 0:00 /bin/bash /home/labex/project/long_process.sh
Như bạn thấy, tiến trình dài hạn vẫn đang chạy, ngay cả khi chúng ta đã đăng xuất khỏi terminal.
Chuyển Hướng Đầu Ra của Nohup Đến Một Tập Tin
Trong bước này, bạn sẽ học cách chuyển hướng đầu ra của tiến trình dài hạn chạy bằng nohup đến tập tin tùy chỉnh thay vì nohup.out mặc định.
Hãy bắt đầu bằng cách chạy một tiến trình dài hạn và chuyển hướng đầu ra của nó đến một tập tin tùy chỉnh:
nohup ~/project/long_process.sh > ~/project/output.log 2>&1 &
Dưới đây là ý nghĩa của từng phần trong câu lệnh:
nohup ~/project/long_process.sh: Chạy scriptlong_process.shbằng cách sử dụng lệnhnohup.> ~/project/output.log: Chuyển hướng đầu ra chuẩn (stdout) của tiến trình đến tập tinoutput.logtrong thư mục~/project.2>&1: Chuyển hướng lỗi chuẩn (stderr) của tiến trình đến cùng tập tin với đầu ra chuẩn.&: Chạy tiến trình ở chế độ nền (background).
Để xác minh rằng tiến trình vẫn đang chạy và đầu ra đang được chuyển hướng đến tập tin tùy chỉnh, bạn có thể sử dụng các lệnh sau:
ps aux | grep long_process.sh
cat ~/project/output.log
Lệnh ps sẽ hiển thị rằng tiến trình dài hạn vẫn đang chạy, và lệnh cat sẽ hiển thị nội dung của tập tin output.log.
Kết luận cho linux nohup command
Vậy là bạn đã nắm vững cách sử dụng lệnh linux nohup command để chạy các chương trình nền trên Linux rồi đấy! Nó thực sự là một công cụ hữu ích giúp bạn giải phóng terminal và tiếp tục làm việc khác mà không lo chương trình bị tắt. Hãy nhớ rằng, việc sử dụng nohup kết hợp với việc chuyển hướng đầu ra sẽ giúp bạn quản lý log một cách hiệu quả hơn. Đừng quên kiểm tra file `nohup.out` hoặc file bạn đã chỉ định để theo dõi tiến trình của chương trình. Hy vọng hướng dẫn này đã giúp bạn hiểu rõ hơn về lệnh nohup và cách áp dụng nó vào công việc hàng ngày. Chúc bạn thành công và có những trải nghiệm tuyệt vời với Linux! Hãy thử nghiệm và khám phá thêm nhiều tính năng thú vị khác của hệ điều hành này nhé. Nó sẽ giúp bạn làm việc hiệu quả hơn rất nhiều đấy!