Esci da Google Chrome dal terminale


28

C'è un modo per far google-chromeuscire, dal terminale, oltre all'utilizzo killall google-chrome?
Vorrei poterlo chiudere da uno script senza ucciderlo.


2
Cosa c'è di sbagliato nell'uccisione?
Zoredache,

1
@Zoredache Che comporta un comportamento diverso dall'uscita e che Chrome utilizza più processi, uno dei quali (sandbox) è setuid root.
Gilles 'SO- smetti di essere malvagio' il

Risposte:


12

Forse wmctrlpotrebbe essere di qualche aiuto. È possibile utilizzare l' -copzione che chiude con grazia una finestra:

wmctrl -c chrome

La stringa chromeviene confrontata con i titoli delle finestre. Si noti che la finestra potrebbe non chiudersi se viene visualizzato un messaggio (ad es. Quando sono aperte più schede).


1
Questa opzione funziona perfettamente, ma ha richiesto l'installazione di wmctrl.
slybloty,

wmctrl non può chiudere la barra delle applicazioni "App di Chrome". pkill -o chromelo fa però.
Ken Sharp,

26

Questo comando esce con garbo dall'albero dei processi di Chrome, in tutti i gestori di finestre:

pkill --oldest chrome

o se preferisci:

/usr/bin/pkill --oldest --signal TERM -f chrome    

Dettagli:

  • significa con garbo: evitare di vedere "Google Chrome non si è spento correttamente. Per riaprire ... "la prossima volta che Chrome inizia
  • il browser Chrome (ad es. versione 39.0.2171.95) esegue il trapping e gestisce con grazia SIGTERM
  • segnala un singolo processo, la radice dell'albero dei processi di Chrome, quindi --oldest
  • SIGTERMè lo stesso del segnale 15, quindi --signal TERM, o semplicemente lasciarlo fuori dal momento che SIGTERMè il segnale predefinito
  • wmctrl funziona con Unity e alcuni altri ma non funziona con tutti i gestori di finestre
  • wmctrl -c chiude una finestra alla volta, quindi per chiudere tutte le finestre cromate avresti bisogno di qualcosa di simile while wmctrl -c 'Google Chrome'; do sleep 0.2; done

1
Presumo che sto usando una vecchia versione di pkill in quanto --oldestnon è un'opzione: usare -ofunziona.
Ken Sharp,

l' -fargomento di pkill non funziona per me. Ho alcuni altri processi in esecuzione come root che hanno la parola chrome nelle loro linee di comando, quindi mi viene negata l'autorizzazione. Senza il -f, funziona perfettamente però.
Brian Minton,

Questo mi fa ancora vedere "non chiuso
correttamente

In Ubuntu 18.04, come potrei farlo eseguire immediatamente dopo aver innescato un riavvio o uno spegnimento ?.
Jaime Hablutzel,

1

Questo funziona per me:

killall --quiet --signal 15 -- chrome

Nota che sto usando un comando piuttosto dettagliato per mantenerlo leggibile nel codice, ovviamente potresti anche emettere:

killall -q -15 chrome

1

Su Mac OS X, usa questo invece

pkill -a -i "Google Chrome"

Quello che fa è cercare un processo di Google Chrome e anche uccidere tutti i suoi processi principali.

Dal manuale di pkill

    -a          Include process ancestors in the match list.  By default, the
                current pgrep or pkill process and all of its ancestors are
                excluded (unless -v is used).
    -i          Ignore case distinctions in both the process table and the
                supplied pattern.

Secondo la risposta di @ keith-cascio , puoi invece provare a terminare il processo più vecchio. Nota che questo non ha funzionato per me.

pkill -o -i "Google Chrome"

0

provare:

kill -3 <pid_of_chrome>

Questo invierà un segnale "QUIT" a Chrome, che, a seconda del gestore della finestra, sarà quello che viene normalmente inviato quando viene chiesto di chiudere.


2
Funziona esattamente come killo killalldove Chrome lo vede come un arresto anomalo e chiede di ripristinarlo.
slybloty,

1
prova 15 invece di 3, poi
Blackle Mori

6
In realtà, di SIGQUITsolito non viene inviato alle applicazioni quando viene chiesto di chiudere (non conosco alcun WM che lo faccia). WM_DELETE_WINDOWè lo standard.
Chris Down,

2
@ blacklemon67 ha kill -15 <pid_of_chrome>fatto quello che stavo cercando. Ma google-chromeha molti pid e ci sono voluti alcuni per cercare di ottenere quello giusto.
slybloty,
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.