Cách chạy lệnh Linux trong nền | Học trực tuyến CNTT, học lập trình từ cơ bản đến nâng cao

Cách chạy lệnh Linux trong nền

Chia sẻ kiến thức 10/03/2022

Lệnh Linux mất quá nhiều thời gian để hoàn thành? Sử dụng bất kỳ cách nào trong số sáu phương pháp này để chạy nó ở chế độ nền (background).

Lệnh Linux mất quá nhiều thời gian để hoàn thành? Sử dụng bất kỳ cách nào trong số sáu phương pháp này để chạy nó ở chế độ nền (background).

Các lệnh Linux là một cách tuyệt vời để tương tác với hệ thống bằng cách sử dụng terminal. Tuy nhiên, đôi khi chúng có thể mất một lúc để hoàn thành nhiệm vụ. Điều này buộc người dùng phải đợi một khoảng thời gian đáng kể hoặc tạo ra một shell mới hoàn toàn.

Rất may là chỉ bằng một số cách đơn giản bạn có thể chạy các lệnh Linux ở chế độ nền. Bài viết này sẽ hướng dẫn bạn cách thực hiện. 

1. Thêm ký hiệu & sau lệnh của bạn

Cách dễ nhất để chạy lệnh nền Linux là thêm ký hiệu Dấu  (&) đằng sau lệnh. Ví dụ: nếu bạn khởi động trình soạn thảo văn bản gedit từ terminal của mình, bạn không thể sử dụng shell cho đến khi đóng trình chỉnh sửa. Tuy nhiên, khi bạn thêm một & vào lệnh của mình, bạn sẽ có thể sử dụng shell ngay lập tức.

gedit &

2. Sử dụng bg để gửi các lệnh đang chạy xuống nền

Bạn cũng có thể dễ dàng gửi các lệnh mất quá nhiều thời gian để chạy xuống nền bằng cách nhấn tổ hợp phím Ctrl + Z và sau đó sử dụng lệnh bgCtrl + Z dừng quá trình đang chạy và bg đưa nó xuống nền.

Bạn có thể xem danh sách tất cả các task đang chạy trong nền bằng cách nhập các jobs  vào terminal. Sử dụng lệnh fg để quay lại tác vụ đang chạy.

3. Gửi lệnh xuống nền với nohup

Lệnh nohup trong Linux cho phép quản trị viên chạy các lệnh miễn nhiễm với các tín hiệu HUP hoặc Hang Up. Bạn có thể chạy các lệnh Linux trong nền bằng cách sử dụng nohup.

Ví dụ dưới đây chạy quét cổng Nmap trong nền.

nohup sudo nmap -sS --top-ports=15 192.168.1.1/24

Một lợi ích chính của nohup là các lệnh của bạn sẽ chạy ngay cả khi bạn thoát khỏi shell. Hơn nữa, nó tạo ra các tệp nhật ký của việc thực thi. Tìm nohup.out  trong thư mục hiện tại hoặc bên trong $HOME.

4. Chạy lệnh nền bằng cách sử dụng chuyển hướng hệ thống

Bạn cũng có thể chạy các lệnh nền trong Linux bằng cách sử dụng chuyển hướng hệ thống (System Redirects). Ví dụ: nếu bạn chạy lệnh ping dưới đây:

ping -c5 8.8.8.8 >output.log 2>&1 &

Tại đây đầu ra của lệnh ping được chuyển hướng đến tệp output.log. Bạn có thể thay thế nó bằng /dev/null nếu bạn muốn loại bỏ kết quả. 2>&1 yêu cầu bash chuyển hướng bất kỳ lỗi nào đến cùng một tệp. Cuối cùng & báo cho bash chạy lệnh này trong nền.

5. Sử dụng lệnh disown

Lệnh disown trong Linux giúp bạn dễ dàng chạy các lệnh ở chế độ nền. Đầu tiên, bạn cần gửi tác vụ trong nền bằng cách sử dụng toán tử & . Sau đó, gõ disown để tách nó ra khỏi shell của bạn.

gedit &
disown

Một ưu điểm chính của disown là, giống như nohup, hệ thống sẽ không ngừng tác vụ của bạn khi bạn đóng shell hoặc đăng xuất.

6. Chạy các lệnh Linux trong nền bằng Tmux

Tmux là một mạch ghép kênh (multiplexer) mạnh mẽ cho phép chúng ta chạy nhiều phiên terminal trong cùng một cửa sổ duy nhất. Tmux giúp chạy các lệnh nền trong Linux dễ dàng.

tmux new -d 'ping -c 10 8.8.8.8 > output.log'

Khi bạn chạy lệnh tmux ở trên , nó sẽ thực hiện lệnh ping trong một shell riêng biệt và giữ nó ở chế độ nền. Bạn có thể thực thi bất kỳ lệnh Linux nào ở chế độ nền bằng phương pháp này.

Chuyển các lệnh Linux của bạn ở chế độ nền

Thành thạo các cách để chạy các lệnh ở chế độ nền giúp admin quản lý hệ thống hiệu quả hơn. Các tính năng Bash như & và Ctrl + Z rất tiện lợi, nhưng hệ thống sẽ hủy lệnh đang chạy trong nền khi shell đóng. Mặt khác, các công cụ như nohup và disown giữ cho lệnh của bạn chạy ngay cả khi bạn đăng xuất hoặc kết thúc shell. 

Nếu bạn để các chương trình của mình ở chế độ nền trong một thời gian dài, chúng có thể trở thành các tiến trình zombie nếu chúng không được mã hóa đúng cách. Các quá trình này có thể làm chậm hệ thống đáng kể. Vì vậy, thỉnh thoảng bạn hãy dành thời gian xác định và tiêu diệt các quy trình zombie.

Vân Nguyễn

Dịch từ: https://www.makeuseof.com/run-linux-commands-in-background/

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        
Chat Button
FUNiX V2 GenAI Chatbot ×

yêu cầu gọi lại