Cách dùng lệnh wait trong Linux

Trong bài này mình sẽ giới thiệu lệnh wait trong Linux, đây là lệnh được sử dụng rất nhiều khi viết các chương trình bash script hoặc shell script.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Wait là lệnh dùng để đợi một thời gian cho tới khi công việc nào đó hoàn thành và trả kết quả trạng thái thoát về từ lệnh đã đợi đó. Vì lệnh wait ảnh hưởng đến môi trường thực thi của shell nên nó được thích hợp sẵn trên hầu hết các phiên bản shell.

1. Cú pháp lệnh wait trong Linux

Cú pháp chung của lệnh wait như sau:

wait [options] ID

Trong đó ID là mã tiến trình hoặc mã của một công việc (job ID) nào đó. Nếu bạn không chỉ định rõ ID thì nó sẽ chờ cho đến khi tất cả các công việc và tiến trình hoàn thành. Lúc này lệnh wait sẽ trả về trạng thái của lệnh cuối cùng hoàn hành.

Bài viết này được đăng tại [free tuts .net]

Ví dụ: Để đợi một tiền trình chạy nền có PID 7654 thì bạn sẽ sử dụng cú pháp sau.

wait 7654

Khi nhiều quy trình được đưa ra thì lệnh wait sẽ đợi cho tất cả các quy trình hoàn tất.

ID công việc (job ID) được xác định bằng cách sử dụng đặc tả công việc (“jobspec”), đây là một cách để đề cập đến các quy trình tạo nên công việc. Một jobspec bắt đầu bằng ký hiệu phần trăm theo sau là số công việc (% n).

rsync -a /home /tmp/home &

Lệnh này trả về kết quả như sau:

[2] 54377

Trong đó số 2 là ID công việc, còn 54377 là ID của tiến trình.

Để chờ một công việc thì sử dụng cú pháp sau:

wait %2

2. Một vài ví dụ với lệnh wait trong Linux

Sau đây ta sẽ làm một vài ví dụ nhé.

Sử dụng lệnh wait để chờ nhiều tiến trình

Hãy xét ví dụ sau:

#!/bin/bash
echo "testing wait command1" &
process_id=$!
echo "testing wait command2" &
wait $process_id
echo Job 1 exited with status $?
wait $!
echo Job 2 exited with status $?

Kết quả:

w 1 png

Sau khi chạy tập lệnh này thì có hai tiến trình sẽ chạy trong nền background đó là hai lệnh echo. ID tiến trình lệnh echo đầu tiên sẽ lưu trong biến process_id.

  • Trước tiên, hai lệnh echo sẽ in ra màn hình hai dòng thông báo.
  • Tiếp theo, lệnh wait $process_id sẽ đợi cho tiến trình đầu tiên được hoàn thành rồi mới in ra dòng "Job 1 exited with status 0".
  • Tiếp theo lệnh wait $! sẽ chờ đợi tiến trình thứ hai được hoàn thành rồi mới in ra dòng "Job 2 exited with status 0".

Lưu ý: $! chính là ID của tiến trình cuối cùng, vì vậy đoạn code cuối cùng mình không cần phải gán nó vào một biến lưu trữ riêng.

Sử dụng lệnh wait sau khi sử dụng lệnh kill

Xét chương trình bash script dưới đây:

#!/bin/bash
echo "Testing wait command"
sleep 20 &
pid=$!
kill $pid
wait $pid
echo $pid was terminated.

Như bạn thấy, lệnh wait sẽ chờ tiến trình có id là $pid, trong khi nó đã bị lệnh kill hủy ở phía trên. Vì vậy kết quả sẽ như sau:

w1 1 png

Vì lệnh kill đã hủy tiến trình $pid nên lệnh wait lúc này đang thực thi với một pid đã kết thúc, vì vậy đầu ra sẽ hiển thị PID của tiến trình đó.

Trên là một vài cách sử dụng lệnh wait trong Linux nói chung và trong Bash script nói riêng. Đây là lệnh dùng để xử lý tiến trình rất tốt, mọi người học cho cẩn thận nhé.

Cùng chuyên mục:

Hướng dẫn cấu hình Mail Server trên CentOs 6.5

Hướng dẫn cấu hình Mail Server trên CentOs 6.5

Cách dùng lệnh Users trong Linux để xem user đang online

Cách dùng lệnh Users trong Linux để xem user đang online

Nếu bạn đang là quản trị viên thì việc quản lý thông tin / xem…

Cách sử dụng lệnh Wall trong Linux

Cách sử dụng lệnh Wall trong Linux

Wall là một công cụ dòng lệnh giúp hiển thị thông báo đến tất cả…

Cách dùng lệnh Whereis trong Linux

Cách dùng lệnh Whereis trong Linux

Whereis là một tiện ích dòng lệnh command line, nó cho phép bạn tìm ..

Cách sử dụng lệnh Which trong Linux

Cách sử dụng lệnh Which trong Linux

Linux dùng lệnh which để xác định vị trí file thực thi của lệnh mà…

Cách sử dụng lệnh whoami trong Linux

Cách sử dụng lệnh whoami trong Linux

Giống như tên gọi của nó, lệnh whoami in tên người dùng đang chạy ...

Cách dùng lệnh zcat trong Linux

Cách dùng lệnh zcat trong Linux

Mặc dù tính năng nén file rất hữu ích vì nó giúp ta tiết kiệm…

Hiểu rõ hơn về chmod 777 trong Linux

Hiểu rõ hơn về chmod 777 trong Linux

Bạn đang xây dựng một website và sử dụng tính năng upload ...

Cách sử dụng lệnh tail trong Linux

Cách sử dụng lệnh tail trong Linux

Mặc định thì lệnh tail sẽ hiển thị 10 dòng cuối cùng của file, thông…

Cách sử dụng lệnh Head trong Linux

Cách sử dụng lệnh Head trong Linux

Trong quá trình quản trị dữ liệu trên Linux đôi khi bạn muốn xem nhanh…

Cách sử dụng lệnh Whatis trong Linux

Cách sử dụng lệnh Whatis trong Linux

Trong bài này chúng ta sẽ tìm hiểu lệnh whatis trong ...

Cách sử dụng lệnh kill trong Linux

Cách sử dụng lệnh kill trong Linux

Linux là một hệ điều hành rất nhanh nhưng không phải lúc nào nó không…

Cách dùng lệnh who trong Linux

Cách dùng lệnh who trong Linux

Who là một công cụ dòng lệnh command-line, được ...

Cách dùng lệnh basename trong Linux

Cách dùng lệnh basename trong Linux

basename là một tiện ích dòng lệnh (command line) dùng để lấy ...

Cách sử dụng lệnh gzip trên Linux

Cách sử dụng lệnh gzip trên Linux

Gzip là một trong những thuật toán nén file phổ biến nhất, nó cho phép…

Cách dùng lệnh ping trong Linux

Cách dùng lệnh ping trong Linux

Lệnh ping là một trong những công cụ được sử dụng nhiều nhất để khắc…

Cách dùng lệnh sleep trong Linux

Cách dùng lệnh sleep trong Linux

sleep là một tiện ích command line cho phép lập trình viên ..

Các ví dụ học Bash Script trong Linux cơ bản nhất

Các ví dụ học Bash Script trong Linux cơ bản nhất

Bash Script đuọc xem là mã code lập trình trên Linux ...

Vòng lặp until trong Shell Script

Vòng lặp until trong Shell Script

Vòng lặp while trong Shell Script

Vòng lặp while trong Shell Script

Trong Linux script, vòng lặp while được sử dụng trong ...

Top