當我的應用程序使用的內存太多或系統內存不足時,我想從linux系統收到通知。我已經完成了一些搜索,有些解決方案需要修補內核並觀察文件,例如/ dev/mem -通知。 是否有標準系統信號發送給應用程序?我正在使用GTK2.0,有GTK方式來解決這個問題嗎?如何在Linux上使用OOM殺手或內存不足時收到通知?
0
A
回答
0
也許這將是有益的:https://www.kernel.org/doc/gorman/html/understand/understand016.html
13.4查殺選擇的過程
一旦選定一個任務,列表走了一遍,每個進程 共享相同的mm_struct作爲選擇的過程(即它們是 線程)發送了一個信號。如果進程具有CAP_SYS_RAWIO 功能,則會發送SIGTERM以使進程有機會退出乾淨,否則會發送SIGKILL。
可以鉤住SIGTERM而不是SIGKILL。無論如何,如果OOM殺手正在運行,你會遇到更大的問題。
或者,您可以自行監控應用程序的內存密集度,如果過高,請退出。
1
一種方法是運行腳本,查找內存不足情況並提醒您。這篇文章有幾個像樣的腳本:https://askubuntu.com/questions/234292/warning-when-available-ram-approaches-zero
那篇文章中的代碼將需要被修改了一下任何你使用的是Linux的味道(它假定桌面Ubuntu的),但它是一個很好的起點:
#!/bin/bash
#Minimum available memory limit, MB
THRESHOLD=400
#Check time interval, sec
INTERVAL=30
while :
do
free=$(free -m|awk '/^Mem:/{print $4}')
buffers=$(free -m|awk '/^Mem:/{print $6}')
cached=$(free -m|awk '/^Mem:/{print $7}')
available=$(free -m | awk '/^-\/+/{print $4}')
message="Free $free""MB"", buffers $buffers""MB"", cached $cached""MB"", available $available""MB"""
if [ $available -lt $THRESHOLD ]
then
### MODIFY THIS NOTIFICATION METHOD FOR YOUR OS
notify-send "Memory is running out!" "$message"
fi
echo $message
sleep $INTERVAL
done
1
最近的內核不再發送SIGTERM。只有SIGKILL被髮送到進程。因此,從內核收到觸發器是沒有辦法的。
相關問題
- 1. linux OOM(內存不足)殺手郵件通知?
- 2. 在Linux上使用Java應用程序的OOM殺手
- 3. 調用OOM殺手
- 4. Busybox OOM殺手
- 5. Linux OOM殺手和Java進程
- 6. 防止內存不足(OOM)在Linux上凍結的最佳方法是什麼?
- 7. 火花流接收器內存不足(OOM)
- 8. 如何在android中檢測內存壓力,內存回收攻擊性或OOM殺死級別?
- 9. python腳本被OOM殺手扼殺
- 10. 如何避免使用python編碼的oom殺手
- 11. 如何在網站更新時通過手機收到通知?
- 12. Oom-killer(內存不足)帶有大量內存(?!) - inotify
- 13. Java中內存不足的通知
- 14. 關閉內存不足的通知?
- 15. 如何友好實時流程和OOM殺手?
- 16. 如何在達到內存或持續閾值時通知ActiveMQ
- 17. 如何在Windows和Linux中終止進程時收到通知?
- 18. Linux的OOM殺手中的默認oom_adj值
- 19. 緩存中有內存時的Linux內核模塊OOM
- 20. 可以通過找不到足夠的連續內存來導致OOM?
- 21. Crashlytics沒有收到內存不足
- 22. Android應用OOM(內存不足)的過程
- 23. Qt應用程序因爲內存不足(OOM)而死亡
- 24. 調試(過早?)OOM殺手輸出
- 25. Linux C應用程序內存不足
- 26. 當我在我的安卓手機上收到推送通知時,在智能手錶上顯示通知
- 27. 在Web應用程序上收到SMS時收到通知
- 28. 用戶上傳到S3存儲桶時會收到通知嗎?
- 29. 如何在收到通知時在iOS 7-10上顯示本地通知?
- 30. 如何在沒有AppDelegate的iOS中收到推送通知時收到通知?