Các lệnh kiểm soát công việc trong VPS Linux

Tác giả: VPS chính hãng 01 tháng 12, 2023

Trong hệ điều hành Linux, lệnh quản lý một loạt quy trình được gọi là “job”. Các job này được gán cho shell để thực thi với ba trạng thái là “background”, “foreground” và “stopped”. Linux cung cấp công cụ dòng lệnh “job” tương tác trực tiếp với các công việc của hệ thống và cho phép người dùng liệt kê và quản lý trạng thái của mình. Hướng dẫn này sẽ mô tả các lệnh kiểm soát công việc của VPS Linux là bg, fg và CTRL+Z tương ứng với ba trạng thái như đã được kể ra ở trên.

Job trong Linux là gì?

Một job là một tiến trình mà shell quản lý. Mỗi job (công việc) được gán một ID công việc tuần tự. Bởi vì một job là một quá trình nên mỗi job đều có một PID liên quan. Có ba loại trạng thái job như sau:

1. Foreground: Khi bạn nhập lệnh trong cửa sổ terminal, lệnh sẽ chiếm cửa sổ terminal đó cho đến khi hoàn thành. Đây là một job foreground.

2. Background: Khi bạn nhập ký hiệu dấu và (&) ở cuối dòng lệnh, lệnh sẽ chạy mà không chiếm cửa sổ terminal. Dấu nhắc shell được hiển thị ngay sau khi bạn nhấn Return. Đây là một ví dụ về một job background trên VPS Linux.

3. Stopped: Nếu bạn nhấn Control + Z cho công việc ở chế độ nền trước hoặc nhập lệnh dừng cho công việc ở chế độ nền, công việc sẽ dừng. Công việc này được gọi là job background.

Lưu ý: Ngoại trừ shell Bourne, các shell khác đều hỗ trợ kiểm soát công việc.

Shell sẽ quản lý các job với các ID riêng

Shell sẽ quản lý các job với các ID riêng

Lệnh kiểm soát công việc trong Linux

Các lệnh điều khiển quá trình thực hiện công việc trong Linux cho phép bạn đặt các công việc ở Background (nền trước) hoặc Foreground (nền sau) và bắt đầu hoặc dừng công việc (Stopped). Bảng mô tả các lệnh kiểm soát công việc như sau:

  • jobs – Liệt kê tất cả công việc.
  • bg %n – Đặt công việc hiện tại hoặc được chỉ định ở chế độ nền, trong đó n là ID công việc.
  • fg %n – Đưa công việc hiện tại hoặc được chỉ định vào nền trước, trong đó n là ID công việc.
  • Control-Z – Dừng công việc ở nền trước và đặt nó ở chế độ nền dưới dạng công việc đã dừng.

Lưu ý: Các lệnh kiểm soát công việc cho phép bạn chạy và quản lý nhiều công việc trong một shell. Tuy nhiên, bạn chỉ có thể sử dụng các lệnh kiểm soát công việc trong shell nơi công việc được bắt đầu. Hãy mua VPS Linux để đảm bảo hiệu suất tối ưu cũng như mức độ bảo mật cần có cho các tiến trình hoạt động của bạn.

Có ba trạng thái kiểm soát công việc khác nhau trong Linux

Có ba trạng thái kiểm soát công việc khác nhau trong Linux

Chạy một công việc ở chế độ Background

Để chạy một tác vụ ở chế độ background, bạn cần nhập lệnh muốn chạy, theo sau là ký hiệu dấu và (&) ở cuối dòng lệnh. Ví dụ: chạy lệnh sleep ở chế độ background.

$ sleep 100 & 
[1] 1302
$

Shell trả về ID công việc, trong ngoặc, mà nó gán cho lệnh và PID liên quan. Với ID công việc, bạn có thể sử dụng các lệnh kiểm soát công việc để quản lý công việc trong khi kernel sử dụng PID để quản lý công việc.

Khi công việc nền hoàn tất và bạn nhấn Return, shell sẽ hiển thị thông báo cho biết công việc đã hoàn thành.

[1] + Done         sleep 100 &
$

Quản lý công việc tại background

Bạn có thể sử dụng lệnh jobs để liệt kê các công việc hiện đang chạy hoặc bị treo ở chế độ nền.

$ jobs
[1]+  Running                 sleep 100 &

Bạn có thể sử dụng lệnh fg để đưa công việc nền lên nền trước.

$ fg % 1
sleep 100

Lưu ý: Công việc ở nền trước sẽ chiếm Shell cho đến khi công việc được hoàn thành, tạm dừng hoặc dừng và được đặt vào nền.

Bạn có thể sử dụng phím Control+Z và lệnh bg để đưa công việc về nền. Các phím Control+Z sẽ tạm dừng công việc và đặt nó ở chế độ nền dưới dạng công việc đã dừng. Lệnh bg chạy công việc ở chế độ nền. Ví dụ:

Sử dụng CTRL+Z

Ctrl+Z là chìa khóa để dừng quá trình foreground và giữ nó ở trạng thái “stopped”. Nó có thể được sử dụng tại bất kỳ thời điểm nào trong quá trình thực thi quy trình hay lệnh. Nó không phải là một lệnh và là một phím tắt trong shell.

$ sleep 100
^Z
[1]+  Stopped                 sleep 100
$ jobs
[1]+  Stopped                 sleep 100

Có một quy trình foreground, tức là cài đặt công cụ dòng lệnh “curl”. Nhấn “Ctrl+Z” để dừng nó:

$ sudo apt install curl

Lệnh “apt” ở trên đã bị dừng.

Chạy lệnh “jobs” để xác minh quá trình đã dừng:

$ jobs

Kết quả đầu ra cho thấy quá trình foreground  là “sudo apt install Curl” đã bị dừng.

Sử dụng bg

Bg” là dạng viết tắt của lệnh kiểm soát công việc “background” để chuyển các tiến trình ở nền trước thành nền. Quá trình dừng lại trong thời gian này và sau đó tiếp tục ở chế độ nền. Cú pháp tổng quát của lệnh “bg” được viết ở đây:

$ bg [job]

Cú pháp của lệnh “bg” chỉ hỗ trợ một tham số, “job”. Tham số này có thể được biểu thị theo bốn cách:

  • %n: Chỉ định mã số công việc hoặc ID.
  • %% hoặc %+: Gửi quy trình hiện tại ở chế độ nền.
  • %-: Đặt quá trình trước đó vào nền.
  • %string: Xác định tiến trình bắt đầu từ chuỗi được xác định.

Hãy xem một ví dụ về cách sử dụng lệnh “bg” để đặt tiến trình nền trước vào nền.

Ví dụ chạy lệnh “sleep” được thực thi trong “40” giây. Sau đó, nhấn phím “Ctrl+Z” để dừng công việc này:

$ sleep 40

Kết quả đầu ra cho thấy lệnh “sleep” hiện đã bị dừng có ID công việc [1].

Thực hiện lệnh “jobs” để liệt kê các công việc nền:

$ jobs

Để giữ lệnh “sleep” ở chế độ nền, hãy sử dụng lệnh “bg” với đối số “%1(job ID)” theo cách này:

$ bg %1                                   #Place Forground process in background
$ jobs                                    # List all jobs

Việc thực thi lệnh kiểm soát công việc, xác nhận lệnh sleep background ở trạng thái “Running”. Biểu tượng “&” biểu thị rằng “sleep” là một quá trình nền.

Lưu ý: Khi bạn đặt một công việc đã dừng ở nền trước hoặc nền sau, công việc đó sẽ khởi động lại.

Sử dụng fg

Lệnh “fg” ngược lại với lệnh “bg”. Nó là từ viết tắt của lệnh kiểm soát công việc “foreground” được sử dụng để tiếp tục công việc nền ở tiền cảnh. Lệnh “fg” tuân theo cú pháp cơ bản sau:

$ fg [job]

Trong cú pháp trên, người dùng có thể truyền tham số %n, %% hoặc %+,%-%string thay cho “[job]” giống như lệnh “bg”. Nếu không có tham số nào được truyền bằng lệnh “fg”, nó sẽ in quá trình nền gần đây nhất.

Ví dụ liệt kê các công việc đang chạy trong nền bằng lệnh “jobs”:

$ jobs

Đầu ra chứa tất cả danh sách công việc mà chỉ có công việc nền đầu tiên, tức là lệnh “sleep 500”, ở trạng thái “Running”.

Thực thi lệnh “fg” có ID của công việc gắn với lệnh “sleep” “%1” để giữ nó ở nền trước:

$ fg %1

Lệnh “fg” đã di chuyển thành công lệnh “sleep” lên background trước. Sẽ mất thời gian để hoàn thành việc thực thi và không có lệnh nào khác có thể được thực thi cho đến khi hoàn thành. Tham khảo bài viết Cách để tính thời gian cho một lệnh cụ thể trong VPS Linux để có thể biết được thời gian hoàn thành những câu lệnh trên.

Hướng dẫn này đã cung cấp cái nhìn chi tiết về các lệnh kiểm soát công việc trong VPS Linux bao gồm lệnh “bg,” “fg” và “Ctrl+Z” trong VPS Linux. Tất cả các tiện ích lệnh kiểm soát công việc đã được ví dụ ở trên đều xử lý công việc trực tiếp thông qua thiết bị đầu cuối. Hãy để lại những câu hỏi cần giải đáp của bạn ở dưới phần bình luận để chúng tôi có thể hỗ trợ một cách nhanh nhất. Cảm ơn đã theo dõi bài viết!