Come killare processi sui sistemi Unix
Posted on : 24-06-2009 | By : k8 | In : Apple, Unix
Tag:kill, killall, killare processo, ps aux, terminare un processo su linux-unix
0

Ecco una semplice e scarna guida su come killare processi su unix(Linux,MacOSX,BSD), che può essere utile per chi si è avvicinato da poco nel mondo e nei comandi UNIX.
Innanzitutto per conoscere la lista di tutti i processi attivi sul proprio sistema dobbiamo conoscere il comando: ‘ps aux‘.
Eseguito stamperà una tabella con tutti i processi in esecuzione, ecco un esempio di output di ps aux:
_macbook:~ duccio$ ps aux
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
duccio 154 4.2 1,0 415188 10052 ?? S 10:00am 0:00.28 /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal -psn_0_94231
_windowserver 55 3.4 2,5 418312 26536 ?? Ss 9:59am 0:06.10 /System/Library/Frameworks/ApplicationServices.framework/Frameworks/CoreGraphics.framework/Resources/WindowServer -daemon
_qtss 102 0.4 0,2 2711524 2332 ?? S 9:59am 0:00.20 /usr/sbin/QuickTimeStreamingServer
duccio 157 0.3 0,1 75964 940 s000 S 10:00am 0:00.01 -bash
root 46 0.2 0,8 84540 8128 ?? Ss 9:59am 0:00.47 /System/Library/CoreServices/coreservicesd
root 100 0.1 0,2 107500 2532 ?? S 9:59am 0:00.11 /Library/Application Support/Olivetti/Status Monitor/Olivetti Monitor
duccio 142 0.0 0,2 339392 2296 ?? S 10:00am 0:00.06 /Applications/iTunes.app/Contents/Resources/iTunesHelper.app/Contents/MacOS/iTunesHelper -psn_0_65552
duccio 133 0.0 1,0 411328 10352 ?? S 9:59am 0:00.85 /System/Library/CoreServices/Finder.app/Contents/MacOS/Finder -psn_0_49164
duccio 132 0.0 0,8 408668 8776 ?? S 9:59am 0:00.78 /System/Library/CoreServices/SystemUIServer.app/Contents/MacOS/SystemUIServer -psn_0_45067
duccio 131 0.0 0,1 76404 588 ?? S 9:59am 0:00.00 /usr/sbin/pboard
root 130 0.0 0,2 77964 2528 ?? Ss 9:59am 0:00.14 /usr/sbin/coreaudiod
duccio 129 0.0 0,4 172220 4464 ?? S 9:59am 0:01.50 /System/Library/Frameworks/ApplicationServices.framework/Frameworks/ATS.framework/Support/ATSServer
duccio 128 0.0 1,2 409220 12512 ?? S 9:59am 0:00.79 /System/Library/CoreServices/Dock.app/Contents/MacOS/Dock -psn_0_32776
duccio 127 0.0 0,3 376208 3160 ?? S 9:59am 0:00.05 /Library/Application Support/Olivetti/Status Monitor/Olivetti Launcher.app/Contents/MacOS/Olivetti Launcher
duccio 126 0.0 0,3 342088 2788 ?? S 9:59am 0:00.25 /usr/sbin/UserEventAgent -l Aqua
duccio 125 0.0 0,4 357168 4104 ?? S 9:59am 0:00.16 /System/Library/CoreServices/Spotlight.app/Contents/MacOS/Spotlight
duccio 121 0.0 0,3 373828 3000 ?? S 9:59am 0:00.06 /System/Library/CoreServices/AirPort Base Station Agent.app/Contents/MacOS/AirPort Base Station Agent -launchd -allowquit
_spotlight 118 0.0 0,2 90516 2320 ?? SNs 9:59am 0:00.15 /System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Versions/A/Support/mdworker MDSImporterWorker com.apple.Sp
root 116 0.0 0,1 76664 1356 ?? Ss 9:59am 0:00.02 /usr/sbin/cupsd -l
Se volessimo killare ad esempio Firefox poichè bloccato o semplicemente come prova (meglio provare con altri eseguibili), dovremmo dare un:
ps aux | grep ‘firefox’ per individuare il processo.
macbook:~ duccio$ ps aux | grep 'firefox'
duccio 623 0.0 0,0 75964 68 s000 R+ 9:51am 0:00.00 grep firefox
duccio 179 2.2 5,1 466916 53160 ?? S 10:02am 0:02.71 /Applications/Firefox.app/Contents/MacOS/firefox-bin -psn_0_114716
Come vedete utilizzando grep ’stringa’, verranno mostrati solamente i processi che matchano con ’stringa’ .
Ecco adesso abbiamo individuato il PID di Firefox (179)[PID], il nome del binario/script (‘firefox-bin) [COMMAND], quanta % di CPU sta utilizzando (2,2%)[%CPU],quanta % di memoria RAM (5,1%) [%MEM],l’ora di avvio del processo (10:02am ) [STARTED] ed il tempo di esecuzione del processo, ossia da quanto è attivo il processo (0:02.71)[TIME].
Per killare un processo abbiamo due soluzioni:
Killare tramite pid con:
kill -9 PID, in questo caso kill -9 179:
macbook:~ duccio$ kill -9 179
macbook:~ duccio$
oppure killare tramite nome del processo con:
killall NOMEPROCESSO, in questo caso killall firefox-bin:
macbook:~ duccio$ killal firefox-bin
macbook:~ duccio$
Una cosa importante da sapere è chi è che ha lanciato il processo, nel caso sopra l’utente ‘duccio’, se l’utente fosse stato ‘root’ e noi avessimo provato a killare il processo in uno dei due modi sopra elencati, avremmo riscontrato
un errore del genere:
macbook:~ duccio$ kill -9 130
-bash: kill: (130) - Operation not permitted
Ossia operazione non permessa, poichè non avendo lanciato il processo da utente ‘root’, non abbiamo neanche i permessi per killarlo da utente ‘duccio’.
Tempo fa sul forum, avevo scritto un piccolo script per killare aMule automaticamente in caso di consumo di cpu >= 90 ed avevo lanciato un idea per scrivere uno script o sorgente C.
Un binario demonizzato che monitorasse tutti i processi del sistema ed in caso di consumo di cpu >=N (90, per esempio), avesse killato il processo e salvato un file di log con la lista e l’ora di tutti i processi killati.
Ovviamente il programma si potrebbe migliorare impostando un limite di cpu per ogni eseguibile, per esempio Firefox 100, aMule 90 e così via, poichè non tutti i programmi che consumano TOT cpu risultano bloccati o da killare.
Io ho lanciato l’idea, se a qualcuno piace, potrebbe realizzare lo script e farci sapere qualcosa.
Questo è tutto, ovviamente si accettano consigli su come migliorare questo piccolo howto non essendo molto esperto in materia.












