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

Cach Chay Cac Lenh Linux Trong Nen



Chạy các lệnh Linux trong nền cho phép người dùng tiếp tục thực hiện các tác vụ khác trong khi lệnh vẫn đang chạy. Để chạy một lệnh trong nền, có nhiều cách; một trong những phương pháp đơn giản là bằng cách thêm một dấu và (&) ở cuối dòng lệnh.

Khi một quá trình được thiết lập để chạy trong nền, chúng ta có thể truy cập nó bằng cách sử dụng việc làm yêu cầu. Bài viết này trình bày tất cả các cách khác nhau để chạy một lệnh trong nền.







Danh sách các cách khác nhau để chạy một quy trình nền như sau:



Sau đây là chi tiết của tất cả các phương pháp để chạy một tiến trình nền:



1: Sử dụng Dấu và (&)

Trong Linux Ampersand (&) là toán tử trình bao gửi lệnh trong nền dưới dạng một quy trình riêng biệt. Bằng cách kết hợp dấu và (&) với một lệnh, nó sẽ được thực thi như một quy trình nền, cho phép trình bao tiếp tục xử lý các lệnh khác ngay lập tức.





Cú pháp cho một quá trình nền sử dụng ký hiệu Ampersand:

$ [ yêu cầu ] &


Ký hiệu dấu và luôn được thêm vào cuối lệnh với một dấu cách giữa '&' và ký tự cuối cùng của lệnh.



Ví dụ: tạo quy trình ngủ trong 40 giây.

$ ngủ 40


Như chúng ta có thể thấy, thiết bị đầu cuối đang chạy lệnh ngủ và không cho phép chúng ta thực hiện bất kỳ tác vụ nào khác.


Bây giờ bấm “Ctrl + Z” để dừng quá trình này. Tiếp theo, lần này chúng ta sẽ chạy lệnh ngủ tương tự nhưng sử dụng toán tử dấu và với nó sẽ thiết lập nó trong nền.

$ ngủ 40 &



Bây giờ quá trình này đang ở chế độ nền. Để liệt kê quá trình chạy nền, hãy sử dụng:

$ việc làm -l



Bây giờ hãy hủy quá trình nền này bằng cách sử dụng:

$ giết -9 [ ID công việc ]


Ví dụ: để tắt quy trình ngủ đang chạy hiện tại, hãy sử dụng:

$ giết -9 6149


Bây giờ quá trình ngủ bị hủy để xác nhận danh sách quá trình chạy nền bằng cách sử dụng.

$ việc làm -l



Đây là một ví dụ khác về việc sử dụng & dấu và dấu hiệu bằng lệnh gedit.

Ví dụ: nếu chúng tôi mở trình soạn thảo văn bản gedit trực tiếp bằng thiết bị đầu cuối, chúng tôi sẽ buộc phải sử dụng trình bao cho công việc khác, nếu không chúng tôi cần dừng quá trình hiện tại trước.

$ gedit


Sử dụng lệnh trên sẽ mở trình soạn thảo văn bản sẽ mở nó ở phía trước thiết bị đầu cuối.


Nhưng sau khi sử dụng “&” ở cuối lệnh gedit, shell được sử dụng miễn phí cho các quy trình khác:

$ gedit &


2: Sử dụng lệnh 'bg'

Lệnh bg là cách chạy lệnh thứ hai trong nền. Lệnh này cho phép người dùng tiếp tục làm việc trong thiết bị đầu cuối trong khi quá trình chạy ở chế độ nền, giải phóng thiết bị đầu cuối cho các tác vụ khác. Lệnh bg được sử dụng cho một tiến trình nền đang chạy trong thời gian dài, tiến trình này thậm chí còn chạy nếu người dùng đăng xuất.

Giống như dấu và, chúng ta không phải lo lắng về việc thêm nó vào lệnh mỗi khi chỉ cần gửi văn bản bg đến thiết bị đầu cuối. Nó sẽ bắt đầu chạy quy trình ở chế độ nền và giải phóng thiết bị đầu cuối để sử dụng trong tương lai.

Ví dụ: hãy sử dụng ví dụ trước và gửi lệnh ngủ bằng cách sử dụng:

$ ngủ 40



Bây giờ quá trình đang chạy và thiết bị đầu cuối không có sẵn để sử dụng. Để sử dụng lệnh bg và gửi quá trình này ở chế độ nền, trước tiên chúng ta phải dừng quá trình thực hiện hiện tại bằng cách nhấn “Ctrl + Z” và thực hiện lệnh này:

$ bg


Sau khi gửi lệnh bg, quá trình ngủ bắt đầu tiếp tục ở chế độ nền. Chúng ta có thể thấy một dấu và “&” ở cuối, cho biết rằng quy trình hiện tại đang chạy trong nền.


Để kiểm tra quá trình nền chạy lệnh jobs:

$ việc làm -l



Để kiểm tra lệnh đang chạy trong nền, hãy sử dụng:

$ fg



Để hủy quy trình hiện tại, hãy sử dụng ID công việc của nó bằng lệnh kill. Để kiểm tra ID công việc, hãy chạy:

$ việc làm -l



Sau khi biết quy trình hủy ID công việc bằng cách sử dụng:

$ giết -9 [ ID công việc ]


Ví dụ: để tắt quá trình ngủ đang chạy hiện tại, hãy sử dụng:

$ giết -9 6584


Để xác nhận xem quá trình có bị hủy hay không, hãy chạy lại lệnh jobs:

$ việc làm -l


Chúng ta có thể thấy quá trình ngủ không còn chạy trong nền nữa:

3: Sử dụng lệnh Nohup

Lệnh Nohup đứng thứ ba trong danh sách các tiến trình nền đang chạy trong Linux của chúng tôi. Lệnh này có nghĩa là “không gác máy” và được sử dụng để ngăn quá trình bị chấm dứt cho đến khi phiên cuối kết thúc. Khi một quy trình được thực thi bằng nohup, nó sẽ tiếp tục chạy ngay cả khi người dùng đăng xuất và đầu ra của quy trình được chuyển hướng đến một tệp có tên “nohup.out” .

Lệnh nohup để ping google liên tục ở chế độ nền và đầu ra được chuyển hướng đến tệp văn bản GooglePing.txt:

$ nohup ping Google com > GooglePing.txt &


Sau khi viết lệnh này, chúng ta có thể thấy thiết bị đầu cuối miễn phí và một quá trình nền để liên tục ping google đang chạy trong nền.


Để truy cập tệp nhật ký, chúng ta có thể sử dụng lệnh sau:

$ con mèo GooglePing.txt



Tệp nhật ký cũng có thể được truy cập bằng GUI từ màn hình chính.

4: Sử dụng lệnh disown

Lệnh disown loại bỏ một tiến trình khỏi shell và chạy nó ở chế độ nền. Khi một quy trình bị từ chối, nó không còn được liên kết với thiết bị đầu cuối và tiếp tục chạy ngay cả sau khi người dùng đăng xuất hoặc đóng thiết bị đầu cuối.

Trước đây, chúng tôi đã sử dụng lệnh dấu và “&” để gửi quy trình ở chế độ nền sau khi thực thi nhưng khi chúng tôi đóng trình bao, quy trình sẽ bị chấm dứt. Để thoát khỏi lệnh disown này là có.

Lệnh disown không thể hoạt động độc lập mà phải có ít nhất một tiến trình chạy ngầm.

Chạy lệnh dưới đây với một & ký hiệu và sẽ gửi lệnh của bạn đến nền.

$ ping Google com > GooglePing.txt &


Sau khi tệp được tạo, chúng ta có thể liệt kê nó bằng lệnh jobs.


Bây giờ quy trình của chúng tôi đang chạy ở chế độ nền để tách nó ra khỏi việc sử dụng thiết bị đầu cuối:

$ từ chối



Chạy lại lệnh công việc để xác nhận quy trình được tách ra khỏi thiết bị đầu cuối:

$ việc làm -l


Vì quy trình của chúng tôi hiện đang chạy nhưng nó không còn được hiển thị bên trong thiết bị đầu cuối:


Để xác nhận quy trình của chúng tôi, chúng tôi có thể sử dụng lệnh cat để truy cập tệp ping đó:

$ con mèo GooglePing.txt



Chúng tôi đã tách thành công quy trình này khỏi thiết bị đầu cuối nhưng nó vẫn đang chạy trong nền.

5: Sử dụng tiện ích tmux

Tmux là một loại tiện ích ghép kênh đầu cuối. Sử dụng tmux, chúng ta có thể tạo nhiều phiên cuối trong một trình bao. Nó cung cấp khả năng chạy các tiến trình ở chế độ nền.

Để chạy một quy trình nền trong Tmux, bạn có thể tạo một phiên mới rồi tách khỏi phiên đó bằng cách sử dụng tổ hợp phím Ctrl-b, sau đó là d.

Để cài đặt tiện ích tmux trên Ubuntu và Linux, hãy sử dụng:

$ sudo đúng cách cài đặt tmux



Để cài đặt trên Fedora chạy:

$ sudo dnf cài đặt tmux


Để cài đặt trên Arch Linux chạy:

$ sudo người làm trò hề -S tmux


Bây giờ hãy chạy lệnh tmux để mở một thiết bị đầu cuối mới:

$ tmux


Để tạo phiên tmux mới, hãy sử dụng:

$ tmux mới -S [ session_id ]


Để liệt kê tất cả phiên sử dụng tmux:

$ tmux ls


Để giết phiên tmux, hãy sử dụng lệnh như:

$ phiên giết tmux -t [ session_id ]


Ví dụ, để giết “0” sử dụng phiên tmux:

$ phiên giết tmux -t 0


Ở đây chúng tôi đã liệt kê phiên hoạt động tmux đang chạy hiện tại và tắt nó bằng lệnh trên:


    • Để tách khỏi phiên tmux, nhấn “Ctrl+B+D” .
    • Để có danh sách tất cả các lệnh, nhấn “Ctrl+B+?” .
    • Để chuyển đổi giữa các cửa sổ tmux, nhấn “Ctrl+B+O” .

Để tách thiết bị đầu cuối tmux theo chiều dọc, nhấn “Ctrl+B” và gõ % .


Để quay lại thiết bị đầu cuối chính từ tmux sử dụng:

$ lối ra

Phần kết luận

Chạy các ứng dụng nền trong Linux là một tính năng mạnh mẽ cho phép người dùng tiếp tục chạy các tác vụ lâu dài của họ ngay cả sau khi đăng xuất khỏi thiết bị đầu cuối hoặc đóng cửa sổ. Thông thường một dấu & ký hoặc bg lệnh được sử dụng để gửi một quá trình trong nền. Tuy nhiên, chúng ta cũng có thể sử dụng nohup hoặc từ chối lệnh để tách một quá trình từ thiết bị đầu cuối. Cuối cùng, chúng ta có thể sử dụng tiện ích tmux để tạo nhiều thiết bị đầu cuối và chạy các quy trình nền mà không làm phiền thiết bị đầu cuối.