Làm cách nào để kiểm tra xem liệu một tiến trình có bị dừng từ dòng lệnh không?


8

Tôi có pid và tôi vừa dừng một chương trình bằng cách sử dụng

kill -stop PID

Bây giờ tôi muốn tiếp tục nó bằng cách làm

kill -cont PID

Nhưng chỉ khi nó đã dừng lại. Làm thế nào để tôi kiểm tra xem nó dừng hay chạy?


bạn nói một chương trình trong tiêu đề, vì vậy bạn có nghĩa là tên hoặc bạn có nghĩa là PID như trong ví dụ?
aurelien

Bạn có muốn tiếp tục nó ở phía trước (lấy thiết bị đầu cuối) hoặc trong nền không?
Tháp Eric

Câu trả lời:


8

Bạn có thể kiểm tra xem quá trình ở trạng thái dừng, Tpsđầu ra.

Bạn có thể làm:

[ "$(ps -o state= -p PID)" = T ] && kill -CONT PID
  • [ "$(ps -o state= -p PID)" = T ]kiểm tra xem đầu ra của ps -o state= -p PIDT, nếu vậy gửi SIGCONTđến quá trình. Thay thế PID bằng ID quy trình thực tế của quy trình.

5

Một cách khác sẽ là

pid=1
status=`cat /proc/$pid/wchan`
if [ "$status" == "do_signal_stop" ] ; then
  echo "$pid sleeps: $status"
else
  echo "$pid does not sleep: $status"
fi

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.