Sur un ordinateur portable de 8 Go, VSCode + une version + 20 onglets ouverts dans Chrome ** manquent rapidement de mémoire **. C'est une expérience utilisateur très stricte telle que le décrochage pour chaque système d'exploitation.
Quand j'y pense, depuis que je suis enfant, ma mère m'a souvent réprimandé pour avoir omis des choses. Plutôt qu'un simple manque de capacité de mémoire, cela peut être dû à la nature difficile à guérir de l'enfance.
Je pense qu'il vaudrait mieux se mettre en colère contre ma mère à chaque fois que de corriger mon comportement. Alors, créez une ** application de type mère ** qui vous avertit de fermer les logiciels inutiles sur votre bureau lorsque la mémoire est insuffisante.
--Ubuntu18.04 + environnement gnome3
Pour obtenir la quantité de mémoire disponible sous Linux, vous utilisez généralement la ** commande gratuite **.
$ free
total used free shared buff/cache available
Mem: 8124668 4831144 267628 201468 3025896 2774924
Swap: 2097148 512 2096636
Parmi ceux-ci, la capacité de mémoire réelle disponible est ** la colonne disponible de la ligne Mem **. En gros, cette valeur est (apparemment) calculée par ** [espace libre + capacité qui peut être libérée immédiatement comme le cache utilisé] **.
Le contenu de cette commande gratuite est une version formatée du contenu du pseudo fichier / proc / meminfo. Puisque les fichiers sont plus faciles à gérer pour une utilisation à partir de python, ** récupérez les informations dans / proc / meminfo **.
~$ cat /proc/meminfo
MemTotal: 8124668 kB
MemFree: 328384 kB
MemAvailable: 2640012 kB
Buffers: 740992 kB
・ ・ ・(Abréviation)
Essayez d'ouvrir le fichier sur le shell interactif. Utilisez la fonction split () pour séparer avec des sauts de ligne et des blancs, et vérifiez l'ordre dans lequel Disponible vient.
>>> f = open('/proc/meminfo')
>>> f.read().split()
['MemTotal:', '8124668', 'kB', 'MemFree:', '318860', 'kB', 'MemAvailable:', '2631456', 'kB', ...]
>>> f.seek(0)
0
>>> f.read().split()[7]
'2625528'
** Une notification doit être émise lorsqu'un élément avec un indice de 7 tombe en dessous de 0,5 Go (500 000 Ko). ** ** (La base de 0,5 Go est en quelque sorte)
À propos, comme vous pouvez le voir dans l'exemple ci-dessus, le contenu est mis à jour ** à chaque fois que vous lisez ** même après l'ouverture.
Utilisez la commande notifier-envoyer. Le format est le suivant.
$ notify-send -u critical --icon=Nom de l'icône"Titre" "message"
--Spécifiez le type de notification dans -u. Je suis en colère contre le contenu, alors je pense que c'est normal d'être critique.
J'ai emprunté une icône de mère à M. Irasutoya et je l'ai utilisée (je considérais aussi une mère d'action réelle, mais c'était puissant et j'ai ressenti un ressentiment émotionnel).
Placez l'icône terminée comme ** shikaruhaha.png ** sous ** / usr / share / pixmap **. (Si vous le placez dans un endroit autre que / usr / share / pixmap, vous devez spécifier le chemin).
$ notify-send -u critical --icon=shikaruhaha "La voix de la mère" "<b>J( 'д')Takashi! Vous ne le laissez pas en désordre!</b>"
Lorsque vous exécutez ce qui précède, cela devient comme ça.
memwarn.py
#!/usr/bin/python3
import time
import subprocess
with open("/proc/meminfo") as f:
while(True):
f.seek(0)
arr = f.read().split()
available = int(arr[7])
if available < 500000:
subprocess.call(['notify-send', "-u", "critical", "--icon=shikaruhaha", "La voix de la mère", "<b>J( 'д')Takashi! Vous ne le laissez pas en désordre!</b>"])
time.sleep(2)
Démarrez après vous être connecté à l'environnement X. Placez les fichiers suivants sous / etc / xdg / autostart /. Une fois connecté, il démarrera automatiquement.
/etc/xdg/autostart/memwarn.desktop
[Desktop Entry]
Name=MemoryMother
Type=Application
Exec=/usr/libexec/memwarn.py
OnlyShowIn=GNOME;
NoDisplay=true
C'est tout
Recommended Posts