Executa um script quando a memória atinge o pico?

3

Eu não tenho muita memória e, às vezes, quando jogo videogames, fico cheio e meu computador começa a congelar, qualquer coisa que eu faça mais de 1 minuto antes de terminar, incluindo movimento do mouse e clique do mouse. / p>

Então, o que eu quero é poder matar algum processo que eu use e eu sei que posso matar (como o meu navegador de Internet) antes que a memória fique cheia, então eu tenho pouco espaço sobrando. Você conhece uma maneira de fazer isso?

Em termos técnicos, o que eu quero é que quando a memória estiver quase cheia, acione um script que enviará um SIGTERM (fim de fechar) para o meu navegador da Internet para que meu PC não congele e eu possa escolher salvar Estou fazendo e reabrir meu navegador ou esquecer meu navegador.

Obrigado pela sua ajuda.

    
por Nyamiou The Galeanthrope 11.10.2010 / 06:57

4 respostas

3

Tudo bem, aqui vai:

#!/bin/bash
threshold=100          # Minimum amount of memory left when you should start killing, in MB
browser="firefox-bin"  # Change this to whatever you use, firefox is actually firefox-bin
while true; do
    available=$(free -m | head -2 | tail -1 | awk '{print }')
    if [ "$threshold" -ge "$available" ]; then
        killall -q $browser  # Will not complain if no processes were killed
    fi
    sleep 20
done

Coloque isso em /home/USERNAME/bin , execute chmod +x ~/bin/SCRIPTNAME e, em seguida, adicione-o a seus programas de inicialização automática por meio de System->Preferences->Startup Applications .

Em seguida, o script será executado quando você fizer login automaticamente. Você pode executá-lo manualmente com ~/bin/SCRIPTNAME &

    
por evgeny 12.10.2010 / 09:02
2

Matar qualquer coisa para economizar memória é uma má ideia, especialmente automática . Certifique-se de ter bastante swap e RAM disponíveis - é claro, rodar algo que usa 1 gig de memória em uma máquina de 512MB é como tentar ganhar um Grande Prêmio de F1 enquanto dirige um Corolla.

Por que eu quero dizer "não faça isso".

    
por evgeny 11.10.2010 / 08:10
1

O kernel faz isso automaticamente quando você fica sem memória.

Se você tiver o swap ativado, no entanto, isso levará um lote de moagem.

    
por badp 11.10.2010 / 08:22
1

Tente definir vm.swappiness como 100 de acordo com as instruções aqui (use 100 em vez de 0) Em uma máquina com falta de memória que pode melhorar o desempenho. link ?

    
por NightwishFan 11.10.2010 / 10:29