Disconnettersi da un altro utente senza prima passare a quell'utente


28

Mia moglie usa account separati e un rapido cambio utente su un MBP in esecuzione 10.6. A volte voglio disconnetterla per liberare un po 'di RAM, ma vorrei evitare di accedere come lei, disconnettersi e quindi riconnettersi come me.

Ho visto una soluzione terminale ... c'è un modo migliore? Grazie!


5
Devi definire meglio "c'è un modo migliore". Per me, non molto (per quanto riguarda il computer) è meglio di un terminale. Se vuoi un'app, inserisci il comando terminal in un automator o in un'applicazione applecript.

2
@mankoff, buon punto! Ma questo non è un forum Arch Linux, quindi supponiamo che io voglia una GUI / soluzione integrata :). Ma hai ragione, posso solo scrivere uno script di shell.
Richard Herron,

2
Ecco il link alla soluzione di script (l'ho visto prima della pubblicazione, ma è del 2005, quindi ho pensato che ormai questa semplice funzione debba essere stata incorporata nella GUI). forums.macrumors.com/showthread.php?t=118545
Richard Herron,

non esiste una soluzione gui integrata che io conosca ...
Robert S Ciaccio,

OK, grazie, tutto! Quando scrivo una buona sceneggiatura, la posterò qui.
Richard Herron,

Risposte:


22

Usando il Terminale, puoi interrompere il suo loginwindowprocesso e tutti i programmi che ha aperto saranno chiusi ... ma questo le farà perdere il lavoro non salvato che ha! In realtà, questa è la vera ragione per cui devi accedere come lei per disconnettersi: quando accedi come lei, tutti i suoi programmi hanno di nuovo accesso alla GUI, in modo che possano chiederti di confermare la chiusura, salvare le modifiche o prendere altro azione prima di disconnettersi.

Se sei sicuro che ha solo cose come un browser web, iTunes, ecc. Aperto, non Pages, Word, Photoshop o qualsiasi altra cosa con documenti, allora puoi provare dal terminale:

kill `ps awwwwux | grep her_short_username | grep loginwindow | grep -v grep | awk "{ print \$2 }"`

Su OSX 10.10.4: (leggera modifica dall'ultimo commento):

export pn=`ps awwwwux | awk '/her_short_username/ && /loginwind[o]w/ { print $2 }'`
sudo kill -9 $pn

1
Concordi con l'avvertimento che se non accedi per vedere cosa sta facendo, non sai cosa potresti costarle disconnettendola.
Michael H.

Si hai ragione. Il più delle volte naviga sul web ... Ma una volta non lo sarà! Grazie!
Richard Herron,

4
Il suo Se si forza-terminate loginwindowattraverso Activity Monitor.appsi poteva comodamente gettare uno sguardo allo stesso tempo ciò che gli altri processi che ha lasciato aperto.
Jari Keinänen,

1
Se alla fine si esegue Awk, i grepcomandi multipli possono essere facilmente evitati. ps awwwwux | awk '/her_short_username/ && /loginwind[o]w/ { print $2 } | xargs kille vedi anche iki.fi/era/unix/award.html#grep
tripleee

1
basta correggere un errore di battitura nel comando aggiornato, le letture sududovrebbero leggere sudo.
hoss,

18

È possibile utilizzare Activity Monitor per disconnettere un altro utente interrompendo il processo di accesso:

  1. Esegui Activity Monitor
  2. Nel filtro in alto a destra, digitare loginwindow
  3. Fai clic sulla riga con il nome dell'utente nella colonna Utente
  4. Fai clic su Esci da processo , quindi su Esci forzato e digita la password.

Questa è solo una versione GUI più bella della risposta di Josh .

Prima del passaggio 2, è possibile rivedere i processi in esecuzione dell'altro utente per vedere se stanno eseguendo app che potrebbero perdere dati al logout.


Ho provato questo e continuo a vedere i processi dell'altro utente in esecuzione in Activity Monitor. È vero, l'account appare disconnesso nel menu di cambio utente, ma non sembra essere esattamente la stessa cosa della disconnessione.
Gorb,

8

Questo comando è più semplice di quello suggerito e avrà il risultato desiderato di uccidere tutti i processi dell'utente (ho dovuto eseguirlo due volte)

sudo pkill -9 -u user

Se vuoi semplicemente terminare il processo di loginwindow per quell'utente puoi fare quanto segue:

sudo pkill -9 -u user loginwindow


1
Mi sembra che questa sia una risposta chiaramente migliore e più idiomatica (dal punto di vista del sysadmin unix) rispetto alle altre.
Gregg Leventhal,

2

Penso che il modo più semplice per farlo sia: sudo killall -9 -u wifes_name


Utilizzando MacOS Mojave, questa è l'unica soluzione dopo aver provato molti che non solo hanno ucciso il processo LoginWindow, ma molti altri processi di proprietà di quell'utente. L'uccisione del processo LoginWindow solo per quell'utente non ha ucciso molti altri processi avviati da quell'utente. Questa soluzione (sostituendo con il nome di mia moglie) si è sbarazzata di ogni singolo processo avviato dal suo login. Simile al riavvio della macchina e al solo accesso a te stesso.
i-CONICA,

-1

A mio avviso, la possibile perdita di dati supera di gran lunga il possibile guadagno nella RAM.

Inoltre, è passato molto tempo da quando Unix è stato in grado di scambiare memoria su disco quando un processo era inattivo.


2
Un problema è che quando un utente viene spento, i suoi processi potrebbero non essere inattivi. Potrebbero masticare CPU e memoria. I giochi sembrano particolarmente negativi in ​​questo senso.
Bennett McElwee,

2
La domanda menziona la moglie, ma in realtà c'è un caso ancora migliore: quando hai un figlio che ha superato il limite di tempo per la giornata e gioca solo e fa altre cose che non hanno bisogno di essere salvate. Ora non devi solo accedere come bambino, ma aggiungere tempo solo per disconnetterli.
Michael,

@Michael Questo è esattamente il mio caso d'uso. :)
Bennett McElwee,
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.