View Full Version : [Bash unix] killare un processo sapendo il suo nome
Ciao a tutti,
ho un problema: devo killare un processo che si chiama "server.exe" e posso usare solo le funzioni ps, grep, awk, e kill.
Sono riuscito dopo varie peripezie a scrivere
ps | grep server | awk '{printf $1}'
che mi stampa a video il PID del processo "server".
Ma ora?? :mbe:
Come faccio a "passare" alla kill questo parametro trovato con la funzione scritta sopra?
Avete altre idee?
Grazie anticipatamente :D
Ma non è più facile un Ctrl + Esc e selezioni il processo da killare?
Ma è un EXE... l'hai avviato con wine?
Silvio.
il_Mancino
21-03-2007, 19:07
forse non ho ben capito ma non è sufficiente dare un
kill -9 pid_processo
o in alternativa
pkill nome_processo
?
ciao :)
scorpion89
21-03-2007, 19:26
pkill non l'avevo sentita :P
comunque killall -9 <nome>
Ciao
EDIT
mi hanno preceduto :P
però mettici il -9, tradotto significa il segnale SIGKILL che lo killa senza farsi tanti problemi certe volte senza il -9
il processo non viene killato
io uso pkill nomeprocesso
io uso pkill nomeprocesso
esatto, tecnicamente dovrei fare così, ma uso cygwin e dato ke è un programma stupido, non ha il pkill...e sinceramente nn ho proprio voglia di sclerare e mettermi a impazzire per aggiungergli la libreria (non saprei dove guardare comunque)
E' per quello che mi serve una funzione che prima mi trova il pid del programma, e poi lo killa usando il pid trovato...
Il tutto andrà poi dentro un file .sh
#!/bin/sh
PROG_PID=`ps | grep test | awk {'printf $1'}`
kill -9 $PROG_PID
#!/bin/sh
PROG_PID=`ps | grep test | awk {'printf $1'}`
kill -9 $PROG_PID
Sei un dio, ti ringrazio!! :D
Ma spiegami una cosa...la variabile PROG_PID come mai prende il valore effettivo della printf?
perchè anche io avevo provato a fare
A=ps|grep test|awk {'printf $1'}
ma la variabile A non conteneva nulla...quindi sono gli `` che fanno funzionare tutto?
Avevo anche provato a fare
ps | grep test | awk {'A=$1; kill $A'}
in quel caso la variabile A era effettivamente il PID, ma non la killava...
non ho mai provato con awk la seconda sintassi che hai scritto e awk purtroppo lo conosco poco.
si sono le `` che fanno la differenza, così la variabile contiene effettivamente il valore o la stringa di ritorno dei comandi tra le virgolette.
Sei un dio, ti ringrazio!! :D
Ma spiegami una cosa...la variabile PROG_PID come mai prende il valore effettivo della printf?
perchè anche io avevo provato a fare
A=ps|grep test|awk {'printf $1'}
ma la variabile A non conteneva nulla...quindi sono gli `` che fanno funzionare tutto?
Avevo anche provato a fare
ps | grep test | awk {'A=$1; kill $A'}
in quel caso la variabile A era effettivamente il PID, ma non la killava...
se vuoi farlo su una linea basta che fai:
kill -9 $( ps | grep test | awk '{print $1}' )
se vuoi metterlo in una variabile fai:
A=$( ps | grep test | awk '{print $1}' )
occhio a non mettere spazi fra la variabile el'uguale altrimenti considera A un comando!
Ciao
se vuoi farlo su una linea basta che fai:
kill -9 $( ps | grep test | awk '{print $1}' )
se vuoi metterlo in una variabile fai:
A=$( ps | grep test | awk '{print $1}' )
occhio a non mettere spazi fra la variabile el'uguale altrimenti considera A un comando!
Ciao
Ah ok perfetto, grazie ragazzi...
Era arrivato il momento di charirsi le idee sulla bash :rolleyes:
Poi non appena riuscirò a risolvere i problemi di installazione di Kubuntu, userò una bash vera e propria, non Cygwin :D
Probabilmente non farà al caso tuo, ma per completezza aggiungo che si può risalire al PID di un processo anche tramite il comando pidof
Quindi un ulteriore metodo potrebbe essere
kill -9 $(pidof processo)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.