Computer >> Máy Tính >  >> Hệ thống >> Linux

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

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

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.

Cách chạy lệnh Bash trong nền trong Linux
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:

Cách chạy lệnh Bash trong nền trong Linux
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.)

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

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.

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

&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 .

Cách chạy lệnh Bash trong nền trong Linux
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 &
Cách chạy lệnh Bash trong nền trong Linux

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.