Cách khởi động lệnh Linux trong nền và tách quy trình trong Terminal

Cach Khoi Dong Lenh Linux Trong Nen Va Tach Quy Trinh Trong Terminal



Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách chạy một lệnh trong nền và cách tách các quy trình khỏi thiết bị đầu cuối.

điều kiện tiên quyết:

Để thực hiện các bước trong hướng dẫn này, bạn cần có các thành phần sau:

  • Một hệ thống Linux chức năng. Học nhiều hơn về thiết lập Ubuntu VM trên VirtualBox .
  • Truy cập vào một người dùng không phải root với quyền sudo .

Chạy các quy trình từ Terminal

Bất cứ khi nào chạy một lệnh, các quy trình sẽ được sinh ra dưới thiết bị đầu cuối. Nếu thiết bị đầu cuối bị đóng, tất cả các quy trình liên quan sẽ tự động bị chấm dứt. Trong những tình huống nhất định, nó có thể bất tiện. Ví dụ:







  • Số lượng lớn dữ liệu đầu ra và thông báo lỗi/chẩn đoán
  • Vô tình đóng cửa thiết bị đầu cuối dẫn đến việc chấm dứt các quy trình có khả năng quan trọng đối với nhiệm vụ, v.v.

Để giải quyết những vấn đề này, có một số tùy chọn:



  • Chạy các quy trình trong nền
  • Tách các quy trình khỏi thiết bị đầu cuối

Các quy trình chạy trong nền sẽ không lấn át đầu ra của thiết bị đầu cuối. Hơn nữa, thiết bị đầu cuối có thể tự do chạy các lệnh bổ sung. Đối với các quy trình tách rời, chúng sẽ không kết thúc ngay cả khi thiết bị đầu cuối bị đóng.



Bắt đầu các quy trình trong nền

Trong nhiều trường hợp, một lệnh có thể mất khá nhiều thời gian để hoàn thành. Nói chung, người dùng buộc phải đợi cho đến khi lệnh kết thúc. Ví dụ: khi bạn đang sử dụng trình soạn thảo văn bản, trình bao sẽ không khả dụng cho đến khi đóng trình soạn thảo.





Để chứng minh, chúng tôi sử dụng lệnh “có”:

$ người đàn ông Đúng



Cách 1:

Có một số cách để chúng ta có thể gửi tiến trình đang chạy ở chế độ nền.

Đầu tiên, chúng tôi dừng quá trình mà không chấm dứt nó. Để làm như vậy, hãy chạy lệnh sau và nhấn “Ctrl + Z”:

$ Đúng 'Chào thế giới' > / nhà phát triển / vô giá trị

Bây giờ, hãy chạy lệnh “bg” để gửi quy trình trong nền:

$ bg

Sau khi được đẩy vào nền, quá trình sẽ tiếp tục. Lệnh sau liệt kê tất cả các công việc đang chạy trong nền:

$ việc làm

Cách 2:

Trong phương pháp trước, quy trình lần đầu tiên bắt đầu chạy ở nền trước. Chúng tôi đã tạm dừng quá trình, gửi nó vào nền, sau đó tiếp tục lại. Thay vào đó, chúng ta có thể chạy quy trình trực tiếp trong nền.

Để làm như vậy, hãy thêm dấu “&” vào cuối lệnh:

$ Đúng 'John có cái ấy rất dài' > / nhà phát triển / vô giá trị &

Tại đây, các quy trình được sinh ra sẽ tự động chạy trong nền. Để xác minh, hãy kiểm tra danh sách các công việc nền:

$ việc làm

Cách 3:

Chúng tôi cũng có thể khởi chạy các quy trình trong nền với sự trợ giúp của tmux , một bộ ghép kênh mạnh mẽ có thể quản lý nhiều phiên đầu cuối trong một cửa sổ. Nó không được cài đặt sẵn trong Linux. Tuy nhiên, nó có sẵn cho tất cả các bản phân phối Linux chính. Học nhiều hơn về cài đặt tmux trên Linux .

Trong ví dụ sau, chúng tôi sử dụng tmux để ping mục tiêu và ghi lại kết quả:

$ tmux mới -d 'ping -c 9 127.0.0.1 > ping.log'

Tệp nhật ký xác minh xem lệnh có chạy thành công hay không:

$ con mèo ping.log

Đó chỉ là một ví dụ về những gì tmux có thể làm. Học nhiều hơn về tmux với các ví dụ .

Đưa công việc trở lại nền trước

Nếu bạn muốn đưa một công việc trở lại nền trước, chúng tôi sử dụng lệnh “fg”. Chúng tôi cũng cần số công việc từ lệnh công việc.

Đầu tiên, xác định công việc mà bạn muốn đưa lên nền trước:

$ việc làm

Bây giờ, sử dụng lệnh “fg”:

$ fg %< công việc_số >

Tách các quy trình khỏi thiết bị đầu cuối

Bất kỳ quy trình nào được liên kết với thiết bị đầu cuối đều bị chấm dứt sau khi thiết bị đầu cuối đóng, cho dù nó đang chạy ở nền trước hay nền sau. Để tránh quá trình kết thúc, chúng tôi tách quá trình đích khỏi thiết bị đầu cuối/shell.

Cách 1:

Để từ chối một quy trình, trước tiên chúng ta cần một quy trình nền:

$ Đúng 'qwerty' > / nhà phát triển / vô giá trị &

Kiểm tra danh sách các công việc nền đang chạy:

$ việc làm

Lưu ý số sê-ri của công việc nền mục tiêu. Bây giờ, sử dụng lệnh “disown” để tách nó ra khỏi thiết bị đầu cuối:

$ từ chối %< công việc_số >

Công việc mục tiêu bây giờ sẽ biến mất khỏi danh sách công việc:

$ việc làm

Tuy nhiên, bạn vẫn có thể thấy tiến trình đang chạy trong nền:

$ ps ĐẾN

Cách 2:

Một cách khác để tách một tiến trình khỏi thiết bị đầu cuối gốc là sử dụng lệnh “nohup”. Nó giữ cho một tiến trình chạy trong nền ngay cả sau khi đóng thiết bị đầu cuối.

Cách sử dụng của “nohup” như sau:

$ nohup < yêu cầu > &

Xác minh nếu công việc được tạo thành công:

$ việc làm

Cách 3:

Phương pháp này tách hoàn toàn quá trình đích. Đó là một cách hiệu quả hơn để tách các ứng dụng GUI.

Ví dụ: để khởi động Firefox và tách hoàn toàn khỏi thiết bị đầu cuối, hãy sử dụng lệnh sau:

$ firefox nhà phát triển / vô giá trị &>/ nhà phát triển / vô giá trị &

Đây:

  • Các /dev/null là một thiết bị đặc biệt trong Linux giúp loại bỏ mọi dữ liệu được ghi vào nó.
  • Trong lệnh trước, đầu vào được đọc từ và đầu ra được gửi đến /dev/null . Tìm hiểu thêm về các cách khác để sử dụng /dev/null .

Phần kết luận

Chúng tôi đã trình bày nhiều cách khác nhau để chạy một quy trình trong nền. Chúng tôi cũng giới thiệu các cách để tách một quy trình khỏi thiết bị đầu cuối gốc. Những kỹ thuật này có thể hữu ích bất cứ khi nào làm việc với thiết bị đầu cuối hoặc chạy một kịch bản .

Nếu bạn cần chạy một số lệnh nhất định trong một mẫu cụ thể, chúng tôi có thể giảm tải nó dưới dạng dịch vụ hệ thống . Đối với các máy từ xa, chúng tôi cũng có thể sử dụng các công cụ của bên thứ ba như Ansible để tự động hóa hầu hết mọi thứ .

Chúc bạn tính toán vui vẻ!