Chờ lệnh trong Linux

Wait Command Linux



đợi đã là một lệnh tích hợp sẵn của Linux chờ hoàn thành bất kỳ quá trình đang chạy nào. đợi đã lệnh được sử dụng với một id quy trình hoặc id công việc cụ thể. Khi nhiều tiến trình đang chạy trong shell thì chỉ có id tiến trình của lệnh cuối cùng sẽ được biết bởi shell hiện tại. Nếu lệnh wait được thực hiện lần này, thì nó sẽ được áp dụng cho lệnh cuối cùng. Nếu không có id quy trình hoặc id công việc nào được cung cấp với lệnh chờ thì nó sẽ đợi tất cả các quy trình con hiện tại hoàn thành và trả về trạng thái thoát.

Giá trị trạng thái thoát của lệnh chờ phụ thuộc vào lệnh được chỉ định bởi toán hạng cuối cùng được chỉ định. Khi bất kỳ quá trình nào kết thúc bất thường thì trạng thái thoát sẽ lớn hơn 128 và sẽ khác với các giá trị trạng thái thoát của các lệnh khác. đợi đã lệnh thoát với giá trị 0 khi nó gọi không có toán hạng và tất cả các ID tiến trình được biết bởi trình bao hiện tại đã kết thúc. Nếu lệnh wait phát hiện bất kỳ lỗi nào thì nó sẽ trả về bất kỳ giá trị nào từ 1 đến 126. Nếu id quy trình cuối cùng là không xác định thì lệnh wait sẽ thoát với giá trị 127. Cách bạn có thể sử dụng lệnh wait trong Linux được trình bày trong hướng dẫn này.







Ví dụ-1: Sử dụng lệnh chờ cho nhiều quá trình

Sau khi thực hiện đoạn mã sau, hai tiến trình sẽ chạy trong nền và id tiến trình của lệnh echo đầu tiên được lưu trong biến $ process_id. Khi lệnh wait được thực hiện với $ process_id thì lệnh tiếp theo sẽ đợi hoàn thành nhiệm vụ của lệnh echo đầu tiên. Lệnh chờ thứ hai được sử dụng với ‘ $! 'Và điều này cho biết id quy trình của quy trình đang chạy cuối cùng. ‘ $? 'Được sử dụng để đọc giá trị trạng thái của lệnh chờ.



#! / bin / bash
quăng đi 'test wait command1' &
xử lý ID=$!
quăng đi 'test wait command2' &
đợi đã $ process_id
quăng điCông việc1thoát ra với trạng thái$?
đợi đã $!
quăng điCông việc2thoát ra với trạng thái$?

Đầu ra:



$bấu víuwait1.sh





Ví dụ-2: Kiểm tra lệnh chờ sau khi sử dụng lệnh giết

Trong tập lệnh sau, lệnh chờ được thực hiện sau khi kết thúc quá trình. lệnh sleep đang chạy như một quá trình nền và lệnh kill được thực hiện để chấm dứt quá trình đang chạy. Sau khi lệnh chờ đó được thực thi với id tiến trình của tiến trình đã kết thúc. Đầu ra sẽ hiển thị id tiến trình của tiến trình đã kết thúc.

#! / bin / bash
quăng đi 'Lệnh chờ kiểm tra'
ngủ hai mươi &
pid=$!
giết chết $ pid
đợi đã $ pid
quăng đi $ pidđã bị chấm dứt.

Đầu ra:



$bấu víuwait2.sh

Ví dụ-3: Kiểm tra giá trị trạng thái thoát

Trong tập lệnh sau, hàm đánh dấu() được gọi bởi hai giá trị đối số. Nó được thảo luận trong phần đầu của hướng dẫn rằng nếu lệnh chờ được thực thi thành công, giá trị thoát sẽ là 0 và nếu lệnh chờ phát hiện bất kỳ lỗi nào thì nó sẽ trả về bất kỳ giá trị nào trong khoảng từ 1 đến 126. Sau khi chạy tập lệnh, nếu bạn chuyển 0 làm đối số thứ hai giá trị thì lệnh chờ kết thúc thành công và nếu bạn chuyển bất kỳ giá trị nào lớn hơn 0 thì lệnh đó sẽ kết thúc không thành công.

#! / bin / bash
hàm sốđánh dấu()
{
quăng đi 'Ngủ trong $ 1 giây'
ngủ $ 1
lối ra $ 2
}
đánh dấu$ 1 $ 2 &
NS=$!
quăng đi 'Kiểm tra trạng thái'
đợi đã $ b && quăng điVÂNG|| quăng điKHÔNG ỔN

Đầu ra:

$bấu víuwait3.sh3 0
$bấu víuwait3.sh3 5

Hy vọng, hướng dẫn này sẽ giúp học cách sử dụng lệnh wait đúng cách. Có một lệnh khác trong Linux, có tên ngủ để đợi trong một khoảng thời gian nhất định nhưng có một số khác biệt giữa các lệnh này. Nếu bạn quan tâm để biết về lệnh ngủ thì bạn có thể truy cập liên kết này.