Come uccido i processi in Ubuntu?


149

Come posso eliminare tutti i processi in esecuzione dal mio account non root?

Ho alcuni processi di smbd di spin che ho causato dal mio computer Windows e quindi mi sono collegato al server Linux e voglio uccidere quei processi di spin. Non ho l'autorizzazione per riavviare i servizi o riavviare la macchina.

Risposte:


172

Per uccidere tutti i processi che hai il permesso di uccidere, esegui semplicemente il comando

kill -15 -1o in kill -9 -1base al comportamento desiderato (utilizzare man killper i dettagli)

Per terminare un processo specifico, ad esempio Firefox, è sufficiente eseguirlo

pkill firefoxo in killall firefoxbase al comportamento desiderato: qual è la differenza tra "killall" e "pkill"?

Se vuoi vedere quali processi sono in esecuzione usa il comando

ps -ef

Se vuoi cercare tutti i processi dall'utente bob, questo potrebbe essere d'aiuto

pgrep -l -u bob

o

ps -ef | grep bob

4
Vorrei iniziare kill -15 -1e passare a solo kill -9 -1se ci sono processi testardi e so cosa sto facendo . L'eliminazione casuale dei processi che potrebbero essere nel mezzo di una transazione del database non è qualcosa che si dovrebbe fare casualmente come si suggerisce.
Simon Richter,

Inoltre, il processo di Firefox è chiamato firefox-bin.
Simon Richter,

No, si può provare a correre killall firefoxe killall firefox-bindi vedere che cosa funziona. Sono d'accordo con il tuo primo commento.
ste_kwr,

Grazie @ste_kwr, ha lavorato con le tue istruzioni, dopo aver lottato per due giorni ...
Java.beginner

Il vantaggio di non aver bisogno di PID è nei lavori cron. L'uso dei nomi funziona in modo chiaro.
SDsolar,

56

Usa sudo kill <pid>osudo killall <process-name>


3
Non penso che questo sia rilevante per questa domanda, stai usando sudo - l'OP non ha tali privilegi, come menzionato nella domanda.
Plnnk,

L'OP non ha privilegi, si prega di modificare la risposta o potrebbe essere eliminata o convertita in un commento come "non una risposta".
Ish,

Se non ha i privilegi deve solo fare kill <pid> o killall <process-name> L'ho appena usato nel mio account non root, non sarei in grado di farlo se non fosse per questa risposta .
Shailyn Ortiz,

20

Proviamo qualcosa di più:

sudo apt-get install htop 

Il topcomando è il modo tradizionale di visualizzare l'utilizzo delle risorse del sistema e vedere i processi che stanno occupando la maggior parte delle risorse di sistema. In alto viene visualizzato un elenco di processi, con quelli che utilizzano la maggior parte della CPU in alto.

htopvisualizza le stesse informazioni con un layout di facile comprensione. Inoltre, consente di selezionare i processi con i tasti freccia ed eseguire azioni, come ucciderli o modificarne la priorità, con i Ftasti.


16

Puoi usare

ps -ax | grep application name 

Se la tua ricerca di firefox digita un terminale simile ps -ax | grep firefox, mostra l'id di processo dell'applicazione corrispondente. È possibile interrompere l'applicazione tramite killcomando se process id = 1317,

kill -9 1317

13

Vorrei usare xkill. Immettere xkillin un terminale e fare clic nella finestra oppure immettere xkille l'ID processo e verrà terminato.

Scopri di più xkillsu x.org.


1
Usalo secondo in frequenza dopo che pkill nd lo adora. +1
Sergiy Kolodyazhnyy,

xkill non funziona in questo caso ...
PythoNic,

@PythoNic in che caso è quello?
Alvar,

1
Vuole uccidere un processo non-finestra che non è nemmeno correlato al server X come sembra per me ... (Comunque un buon strumento.)
PythoNic

9

Per provare a interrompere tutti i processi di proprietà di un utente username, eseguire:

pkill -U username

7

Dividerei il tuo problema in 2 parti:

1) Come trovo i processi avviati da me? Esegui questo:

ps -u `whoami`

Il whoamiè solo nel caso in cui non si conosce il nome dell'account che si sta utilizzando, altrimenti basta digitare il nome dell'account senza le virgolette posteriori.

Questo elencherà tutti i processi che possono essere eliminati dal tuo account.

2) Il pscomando elencherà il numero di processo, il TTY, l'ora e il CMD. L'ID processo è la prima colonna. Usa quel numero per terminare il processo. Fai attenzione mentre uccidi il processo. Potresti rompere qualcosa se uccidi il processo sbagliato. Per terminare un processo utilizzerai il killcomando, che invia un SEGNALE al processo. Il segnale indica cosa dovrebbe fare il processo . Ad esempio, l'invio di -1a al processo richiederà di ricaricare il file di configurazione; l'invio di a -2equivale a premere Control + C su quel processo; -9farà sì che il kernel abbandoni il processo, senza comunicarlo al processo.

Supponendo che ps -u abbia whoamirestituito qualcosa del genere

  PID TTY          TIME CMD
 4333 pts/1    00:00:00 fish
 4335 ?        00:00:00 fishd
 4816 ?        00:00:00 intellij
 4868 ?        00:50:42 java
 4939 ?        00:00:19 fsnotifier64
 7667 ?        02:49:08 firefox
 7698 ?        00:00:00 unity-webapps-s

E volevi terminare il firefoxprocesso con il suo id di processo, quindi avresti fatto:

kill -1 7667

Quindi eseguire nuovamente lo stesso pscomando e verificare se il processo era ancora in esecuzione. Se è ancora in esecuzione, quindi eseguire un

kill -2 7667

lavorando fino a -9.

Per terminare tutti i processi avviati dal tuo account, inserisci kill <level> -1. Come prima: lavora fino a -9.

Se conosci il nome del processo puoi semplicemente andare killall <processname>, dove è quello che stai cercando di uccidere. Ad esempio: killall fish(il pesce, in questo senso, è il Friendly Interactive SHell).

La documentazione per killallè disponibile qui: http://manpages.ubuntu.com/manpages/hardy/man1/killall.1.html


3

Con questa applicazione è possibile visualizzare gli elenchi dei programmi

installa htop

sudo apt-get install htop

per vedere il processo e terminare il processo È possibile installarlo ed eliminare semplicemente

inserisci qui la descrizione dell'immagine


2

... Tutti i processi in Linux rispondono ai segnali. I segnali sono un modo a livello di sistema operativo di dire ai programmi di terminare o modificare il loro comportamento.

Come inviare segnali di processo tramite PID

Il modo più comune di trasmettere segnali a un programma è con il comando kill.

Come prevedibile, la funzionalità predefinita di questa utility è quella di tentare di interrompere un processo:

kill PID_of_target_process

Questo invia il segnale TERM al processo. Il segnale TERM indica al processo di terminare. Ciò consente al programma di eseguire operazioni di pulizia e di uscire senza problemi.

Se il programma si comporta male e non si chiude quando viene dato il segnale TERM, possiamo intensificare il segnale passando il segnale KILL:

kill -KILL PID_of_target_process

Questo è un segnale speciale che non viene inviato al programma.

Invece, viene dato al kernel del sistema operativo, che arresta il processo. Questo è usato per bypassare i programmi che ignorano i segnali inviati a loro ...


2

Ho scritto una piccola sceneggiatura che ho scritto per uccidere (nel mio caso) Skype:

kill -s 9 `ps aux | grep skype | head -n 1 | cut -f4 -d" "`

Ma ho scoperto che per quanto funzionasse allora, non ha funzionato il giorno successivo perché il pid aveva una lunghezza diversa e lì per la quantità di spazi era diverso

Poi mi sono imbattuto in questo sito e ho provato

pgrep -l -u justin

che genera in modo conveniente processi nel formato

[pid] [name]

Quindi ho adattato il mio codice nello script a questo:

kill -s 9 `pgrep -l -u justin | grep skype | cut -f1 -d" "`

Ciò che fa è pipe tutti i processi in justinesecuzione (che possono essere cambiati in qualsiasi nome utente) a grepcui cercare skype(questo può essere modificato nel processo) e quindi pipe quella linea in cutcui poi legge solo il PID e infine lo utilizza PID nel killcomando per ucciderlo.


Avresti potuto rilasciare -l, e correre pgrep -u justin skype, e uccidere: pkill -u justin skype(o pkill -KILL -u justin skypeinviare SIGKILL).
Muru,

Questo è sicuramente il modo Unix. Ben fatto entrambi. Userò questo.
SDsolar,

1

Ecco un semplice script Python che ho scritto, killProcess.py, che accetterà qualsiasi cosa come input e lo ucciderà.

Ho scritto questo script perché ho molti processi Python o Node che voglio uccidere individualmente e programmaticamente. Non riesco a usare "killall python" perché interromperà i processi che devo continuare.

Denominare il file "killProcess.py", quindi aggiungere il nome dello script che si desidera interrompere. Ad esempio: python killProcess.py runnablePoller.py ucciderà il file runnablePoller.py

import os;
import sys;
for arg in sys.argv:
    if(arg!="killProcess.py"):
        process=arg;
        print(process);
processes =os.popen("ps -ef | grep "+process).read();
processes=processes.split("\n");
processes=processes[0].split(" ");
#print(processes);
for p in processes:
    try:
        pid=int(p);
        print(pid); 
        break;
    except:
        continue;

os.system("kill "+str(pid));

0

Ho usato la seguente procedura per terminare un processo in Ubuntu ::

Passaggio 1: ottieni il pid del processo utilizzando grep oppure puoi usare -C anche ::

ps aux | -C 'filename'

o

ps -ef | -C 'filename'

o

ps aux | grep 'filename'

o

ps -ef | grep 'filename' 

Passaggio 2: annotare il numero di pid.

Passaggio 3: utilizzare il comando "kill" insieme al numero pid come:

kill pidnumber

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.