cerrar aplicaciones

Arnau Sanchez arnau en ehas.org
Mie Mayo 10 13:46:59 CEST 2006


Se sale un poco (bastante) de la lista hablar de la bash, pero ya que 
estamos, sólo un apunte...

Una forma un poco más elegante de matar un proceso es darle un tiempo 
para que muera ordenadamente, y luego matarlo sin contemplaciones:

for PROCESO in $PROCESOS; do
    kill $PROCESO
    sleep 2
    if ps -p $PROCESO &>/dev/null; then
        kill -9 $PROCESO
    fi
done

No es bueno mandarles SIGKILLs (-9) a procesos así sin más, lo más 
normal es que dejen temporales por todos lados.

saludos
arnau


Inigo Aldazabal Mensa wrote:

>En bash es trivial hacer un script para lo que comentaba Miguel Angel. 
>
>Si quieres cerrar por ejemplo Mplayer sería algo como:
>
>#!/bin/bash
>
>PROCESOS=$(ps aux | grep Mplayer | grep -v grep | awk '{print $2}' )
>for proceso in $PROCESOS
>do
>	kill -15 $proceso  #o quizas -9
>done
>
>Venga!
>
>El Wednesday, 10 de May de 2006 13:16, Tny escribió:
>  
>
>>Si yo tengo poca idea de linux mi hermano tiene menos, así que lo pondré
>>en el cron para que se arranke entre la 00 y las 10 cada 5 minutos, y
>>así evito lo de los threads y los sleeps.
>>
>>De momento me conformo con el de wxp, ya haré una versión para linux
>>cuando se le ocurra a mi hermano utilizarlo para poner la puñetera música.
>>
>>Gracias
>>
>>Inigo Aldazabal Mensa escribió:
>>    
>>
>>>Ahora releo lo de "mas escondido"... tendrías que hacer un demonio. Justo
>>>hace un día o dos se puso por aquí un ejemplo de cómo hacerlo en python.
>>>
>>>De todas formas a mi me parece que con el cron va que chuta. Si lo va a
>>>mirar ahí probablemente mire también los demonios, digo yo...
>>>
>>>Venga!
>>>
>>>El Wednesday, 10 de May de 2006 12:54, Inigo Aldazabal Mensa escribió:
>>>      
>>>
>>>>Hola!
>>>>
>>>>Una vez escrito tendrías que añadirlo al crontab para que se ejecutase a
>>>>la hora que tu quieres todos los días, solo algunos, etc (también cada
>>>>cierto intervalo de tiempo, etc, es muy versátil)
>>>>
>>>>Mira en google "cron tutorial" o "cron howto" para ver exactamente como
>>>>hacerlo, pero no tiene especial dificultad.
>>>>
>>>>Si usas kde (creo recordar que knoppix lo usa por defecto) se que hay
>>>>una interface gráfica "kcron", pero nunca la he usado.
>>>>
>>>>Venga!
>>>>
>>>>Iñigo
>>>>
>>>>El Wednesday, 10 de May de 2006 12:41, Miguel Angel escribió:
>>>>        
>>>>
>>>>>No tengo mucha idea, pero te mando algunas pistas:
>>>>>
>>>>>En Linux te bastaría con averiguar cuál es el PID del programa que está
>>>>>ejecutándose. Una vez que lo tengas, sólo tienes que mandarle la señal
>>>>>-15 (para darle una oportunidad) y/o -9 (para matarlo completamente).
>>>>>
>>>>>Si quieres que se ejecute al encender el PC (no lo entiendo, pero
>>>>>bueno), el lugar adecuado es /etc/rcX.d (siendo X el nivel en el que
>>>>>inicias; ante la duda, ponlo en todos).
>>>>>
>>>>>En GNU/Linux no nos gustan las cosas escondidas (propician virus), así
>>>>>que si lo inicializas así, siempre puedes hacer un "ps fax" y localizar
>>>>>tu programita; con un "kill -9 PID" te lo cargas y deja de molestar :-D
>>>>>
>>>>>
>>>>>Espero que eso te ayude, aunque no he dicho nada de python...
>>>>>
>>>>>El mié, 10-05-2006 a las 11:35 +0200, Tny escribió:
>>>>>          
>>>>>
>>>>>>Hoy mismo he hecho en vb.net, y puesto para que se arranque un
>>>>>>programa para cerrar el winamp y el media player por la noche. (Mi
>>>>>>hermano pone música y a mí me molesta...)
>>>>>>
>>>>>>Me gustaría hacer lo mismo en python para linux, (knoppix 4.02 ES
>>>>>>instalado como devian)
>>>>>>
>>>>>>¿Cómo se haría en python para capturar los procesos activos y
>>>>>>cerrarlos? ¿y el threading en python? todavía no lo tengo nada claro.
>>>>>>y para rematar ¿para que se ejecute al arrancar linux? ¿tal vez con el
>>>>>>cron? pero ¿algo más escondido?
>>>>>>
>>>>>>¿Cómo quedaría en python?
>>>>>>
>>>>>>
>>>>>>en vb.net me queda así:
>>>>>>Module Module1
>>>>>>    Sub Main()
>>>>>>        Dim h As Threading.Thread = New Threading.Thread(AddressOf
>>>>>>hilo) h.Priority = Threading.ThreadPriority.BelowNormal
>>>>>>        Dim t As Threading.Thread = Threading.Thread.CurrentThread
>>>>>>        t.Priority = Threading.ThreadPriority.BelowNormal
>>>>>>        Dim ahora = Now.ToShortTimeString
>>>>>>        While "10:00" < ahora And ahora < "23:59"
>>>>>>            t.Sleep(1800000)
>>>>>>            ahora = Now.ToShortTimeString
>>>>>>        End While
>>>>>>        h.Start()
>>>>>>    End Sub
>>>>>>    Private Sub hilo()
>>>>>>        Do
>>>>>>            Threading.Thread.CurrentThread.Sleep(60000)
>>>>>>            apagarMusica()
>>>>>>        Loop
>>>>>>    End Sub
>>>>>>    Private Sub apagarMusica()
>>>>>>        Dim Procesos As Process() = Process.GetProcesses()
>>>>>>        Dim Proceso As Process
>>>>>>        For Each Proceso In Procesos
>>>>>>            If Proceso.ProcessName = "winamp" Or Proceso.ProcessName =
>>>>>>"wmplayer" Then Proceso.Kill()
>>>>>>        Next Proceso
>>>>>>    End Sub
>>>>>>End Module
>>>>>>
>>>>>>
>>>>>>Gracias
>>>>>>_______________________________________________
>>>>>>Python-es mailing list
>>>>>>Python-es en aditel.org
>>>>>>http://listas.aditel.org/listinfo/python-es
>>>>>>
>>>>>>----------------------------------------------------------------------
>>>>>>--
>>>>>>
>>>>>>_______________________________________________
>>>>>>Python-es mailing list
>>>>>>Python-es en aditel.org
>>>>>>http://listas.aditel.org/listinfo/python-es
>>>>>>            
>>>>>>
>>_______________________________________________
>>Python-es mailing list
>>Python-es en aditel.org
>>http://listas.aditel.org/listinfo/python-es
>>    
>>
>_______________________________________________
>Python-es mailing list
>Python-es en aditel.org
>http://listas.aditel.org/listinfo/python-es
>
>
>  
>




Más información sobre la lista de distribución Python-es