Quá trình Bash với việc sử dụng 100% cpu. Làm thế nào để khắc phục sự cố?


1

Tôi có một tập lệnh bash ở trạng thái có thể chạy được với 100% sử dụng cpu trong không gian người dùng. Có cách nào để tôi có thể kiểm tra kỹ hơn những gì gây ra sự cố, mà không làm hỏng quá trình, chẳng hạn như theo dõi ngăn xếp không?

Câu trả lời:


2

Hãy xem quá trình của bạn với strace:

strace -p <pid_of_your_process>

0

Chạy kịch bản như sh -x yourscript. Điều này sẽ in tất cả các lệnh mà nó đang thực thi và bạn có thể thấy nó bị kẹt ở đâu.

Cuối cùng bạn có thể thêm strace để lệnh làm chậm mọi thứ để kiểm tra các cuộc gọi của nó đến các chức năng hệ thống. Điều đó tạo ra vô số đầu ra cho thiết bị lỗi chuẩn. Bạn có thể chuyển hướng đến một tệp nhật ký như strace yourprogram 2> log

Một khả năng khác, thực sự liên quan đến việc biết thêm về các chương trình được gọi, là kết nối với các quy trình đang chạy bằng cách sử dụng gdb. Bạn có thể tìm thấy quá trình chiếm 100% với top. Kết nối với chương trình đang chạy với

gdb program 1234   (where 1234 is the `pid` of `program`)

Điều này liên quan đến việc tiêu diệt quá trình, điều mà OP tuyên bố rõ ràng là anh ta không muốn làm.
snapshoe
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.