Điểm:0

Làm cách nào để theo dõi các tệp đang mở và hủy PID của nó bằng tập lệnh shell?

lá cờ fr

Hệ thống của tôi báo lỗi cho tôi biết 'Quá nhiều tệp mở'. Tôi đã điều tra lỗi này và hóa ra rằng /usr/bin/uwsgi đã tạo ổ cắm (?) Hơn 1020. Nếu nó tạo ra hơn 1020, tôi đoán, lỗi trên xuất hiện.

Vì vậy, những gì tôi cố gắng làm là chạy một tập lệnh shell theo dõi số lượng tệp đang mở và nếu nó vượt quá 1000, hãy tắt PID của nó để giải quyết lỗi này ở giai đoạn này.

#uwsgimonitor.sh
#!/bin/bash

#filename=/usr/bin/uwsgi

tên tệp =/usr/bin/uwsgi
Cnt= lsof | awk '/uwsgi/ {in $1,$2}' | uniq -c | sắp xếp -r | đầu -1 | awk '{in $1}'
PROCESS_ID = lsof | awk '/uwsgi/ {in $1,$2}' | uniq -c | sắp xếp -r | đầu -1 | awk '{in $2}'

nếu [ $Cnt gt 1000 ]
sau đó
    echo "Tìm thấy số socket mở vượt quá $Cnt."
    tiêu diệt -9 $PROCESS_ID
khác
    tiếng vang "" #không có gì để làm.
fi

Trong crontab, tôi đã thêm dòng này nhưng có vẻ như nó không giết được PID mà tôi muốn nói.

* * * * * sh /home/root/scripts/uwsgimonitor.sh

Tôi đang thiếu gì?

Cảm ơn bạn trước.

lá cờ cn
Điều này sẽ không thực sự giải quyết được vấn đề của bạn - bạn cần xem cách định cấu hình UWSGI/máy chủ web của mình để giới hạn số lượng ổ cắm được mở hoặc cho phép người dùng mà nó chạy để mở nhiều tệp hơn qua ulimits.conf.
deokyong song avatar
lá cờ fr
Tôi nên đã đề cập đến nền tảng. Tôi là người thử nghiệm tự động hóa và sự cố này đã được khắc phục. Trong khi đó, tôi chỉ sử dụng tập lệnh shell này để ngăn bất kỳ thông báo lỗi nào xuất hiện. Nó chỉ là một giải pháp tạm thời để kiểm tra ứng dụng của tôi.
Điểm:0
lá cờ fr

Đối với những người muốn biết tình hình của tôi đã diễn ra như thế nào.

#!/bin/bash


đếm=$(lsof | awk '/uwsgi/ {print $1,$2}' | uniq -c | sort -r | head -1 | awk '{print $1}')
PROCESS_ID=$(lsof | awk '/uwsgi/ {print $1,$2}' | uniq -c | sort -r | head -1 | awk '{print $2}')
mong đợiLimit=1000

tiếng vang "ổ cắm mở: $count"
tiếng vang "pid:$PROCESS_ID"

nếu [[ ${count} -gt ${expectLimit} ]]
sau đó
        echo "Đã tìm thấy uwsgi vượt quá giới hạn :${expectLimit}"
        tiêu diệt -9 $PROCESS_ID
khác
        tiếng vang "" #không có gì để làm.
fi

Cái này làm việc cho tôi. Cảm ơn.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.