Không có gì khó chịu hơn việc chạy một lệnh trong thiết bị đầu cuối của bạn và để lệnh chạy trong vài phút, đôi khi hàng giờ và không thể sử dụng lại thiết bị đầu cuối của bạn. Chắc chắn, bạn có thể sử dụng các tab, nhưng đó là một giải pháp phức tạp và không phải lúc nào cũng tối ưu vì bạn có thể muốn xem các bản cập nhật khi bạn đang làm việc. Sau đây, chúng tôi chỉ cho bạn một số cách khác nhau để chạy các lệnh bash ở chế độ nền trong Linux.
Kết thúc Lệnh bằng &
Nếu bạn muốn đẩy một lệnh vào nền, sử dụng &
cuối cùng là một cách dễ dàng để làm điều đó. Bằng cách này, bạn có thể đưa ra một lệnh trong nền và tiếp tục sử dụng thiết bị đầu cuối của mình khi nó chạy. Tuy nhiên, nó đi kèm với một cú đánh bắt. Sử dụng &
không ngắt kết nối lệnh khỏi bạn; nó chỉ đẩy nó vào nền. Điều này có nghĩa là trong khi bạn đang cố gắng sử dụng thiết bị đầu cuối, bất kỳ thứ gì mà lệnh muốn đẩy đến STDOUT
hoặc STDERR
vẫn sẽ được in, điều này có thể gây mất tập trung.
COMMAND &
Khi đóng phiên đầu cuối, lệnh kết thúc. Bạn cũng có thể hủy lệnh bằng cách phát hành jobs
lệnh, tìm số lượng lệnh đang chạy và hủy lệnh đó bằng kill
yêu cầu. Cú pháp đó như sau:
kill %1
Sử dụng &
rất tốt nếu bạn cần thúc đẩy điều gì đó đi một chút nhưng đừng mong đợi nó tiếp tục mãi mãi.
&Sau một lệnh, sau đó tắt nó
Chạy lệnh chỉ với &
đẩy nó ra phía sau và giữ cho nó chạy miễn là cửa sổ đầu cuối đang mở. Tuy nhiên, nếu bạn muốn giữ cho lệnh này chạy liên tục, ngay cả khi phiên đầu cuối của bạn kết thúc, bạn có thể sử dụng disown
lệnh.
Để sử dụng phương pháp này, hãy bắt đầu bằng cách thêm &
.
COMMAND &
Như đã đề cập ở trên, sử dụng &
đẩy lệnh này vào nền nhưng không tách lệnh này khỏi người dùng của bạn. Bạn có thể xác minh điều này bằng cách nhập jobs
vào thiết bị đầu cuối. Nó sẽ hiển thị lệnh chạy trong nền như chúng ta đã thấy trước đây.
Chỉ cần nhập disown
vào shell và nó sẽ làm đúng như vậy. (Và bạn có thể xác minh điều này một lần nữa với jobs
lệnh.)
Bây giờ bạn có thể đóng thiết bị đầu cuối của mình và tiếp tục về ngày của bạn. Nó sẽ vẫn tiếp tục chuyển mọi thứ đến STDOUT
hoặc STDERR
, nhưng sau khi thoát và mở lại thiết bị đầu cuối, bạn sẽ không thấy bất cứ thứ gì ở đó. Bạn có thể tìm lại lệnh bằng top
hoặc ps
và giết nó bằng kill
yêu cầu.
&Sau một Lệnh với / dev / null
Thêm &
sau một lệnh sẽ đẩy một lệnh vào nền, nhưng do đó, lệnh nền sẽ tiếp tục in thông báo vào thiết bị đầu cuối khi bạn đang sử dụng nó. Nếu bạn đang tìm cách ngăn chặn điều này, hãy xem xét chuyển hướng lệnh đến /dev/null
.
COMMAND &>/dev/null &
Điều này không ngăn lệnh đóng khi thiết bị đầu cuối đóng. Tuy nhiên, như đã đề cập ở trên, có thể sử dụng disown
để tắt lệnh đang chạy khỏi người dùng. Bạn cũng có thể loại bỏ nó bằng một trong các phương pháp được đề cập ở trên nếu bạn không muốn nó chạy nữa.
Nohup, với &và / dev / null
Không giống như các lệnh trước, sử dụng nohup
cho phép bạn chạy một lệnh trong nền và giữ cho nó chạy. Thế nào? nohup
bỏ qua tín hiệu HUP (tín hiệu treo máy), giúp bạn có thể chạy các lệnh trong nền ngay cả khi thiết bị đầu cuối đang tắt. Kết hợp lệnh này với chuyển hướng đến “/ dev / null” (để ngăn nohup tạo tệp nohup.out) và mọi thứ sẽ chuyển sang chế độ nền bằng một lệnh.
nohup COMMAND &>/dev/null &
Hầu hết các chương trình đầu cuối trên Linux ngày nay đều có các tính năng được tích hợp sẵn để cho phép chúng chạy ở chế độ nền mà không tốn nhiều công sức. Cùng với đó, các hệ thống init hiện đại (như systemd) có thể cho phép người dùng khởi động các chương trình như dịch vụ khi khởi động hoặc bất cứ khi nào.
Tuy nhiên, một số chương trình trên Linux thiếu khả năng chạy dưới dạng daemon hoặc tích hợp với các hệ thống init hiện đại. Đây là một sự bất tiện thực sự nhưng có thể hiểu được, vì không phải nhà phát triển nào cũng có kỹ năng hoặc thời gian để thêm các tính năng mới.
May mắn thay, các lệnh như nohup
hoặc disown
vẫn là một thực tế và có thể thu hẹp khoảng cách trong việc di chuyển các chương trình như thế này với nền. Họ không hoàn hảo hay cầu kỳ, nhưng họ hoàn thành công việc khi cần thiết.
Nếu bạn thích bài viết này về Linux, hãy nhớ xem một số nội dung Linux khác của chúng tôi, chẳng hạn như cách kết nối tài khoản Google của bạn với GNOME Shell, các bản phân phối Linux tốt nhất cho người dùng windows và các lệnh LS bạn cần biết.