Вийдіть із іншого користувача без першого переходу на нього


28

Моя дружина використовує окремі облікові записи та швидке вмикання користувачем MBP під керуванням 10.6. Іноді я хочу вийти з неї, щоб звільнити деяку оперативну пам’ять, але я хотів би уникати входу як її, виходу з системи, а потім увійти як я.

Я бачив термінальне рішення ... чи є кращий спосіб? Спасибі!


5
Вам потрібно краще визначити "чи є кращий спосіб". Для мене не багато (комп'ютерно) краще, ніж термінал. Якщо ви хочете програму, просто загорніть команду термінала в автоматизатор або додаток для яблучного сценарію.

2
@mankoff, хороший момент! Але це не форум Arch Linux, тому припустимо, що я хочу GUI / вбудоване рішення :). Але, ти маєш рацію, я можу просто написати сценарій оболонки.
Річард Херрон

2
Ось посилання на рішення сценарію (я бачив його перед публікацією, але це з 2005 року, тому я припустив, що до цього часу ця проста функція повинна бути включена в графічний інтерфейс). forums.macrumors.com/showthread.php?t=118545
Річард Херрон

не існує вбудованого рішення
Gui, про

Добре, дякую, всі! Коли я напишу хороший сценарій, опублікую його тут.
Річард Херрон

Відповіді:


22

Використовуючи Термінал, ви можете вбити її loginwindowпроцес, і будь-які програми, які вона відкрила, будуть закриті ... але це призведе до того, що вона втратить будь-яку незбережену роботу, яку вона має! Насправді, саме з цієї причини вам потрібно увійти як її, щоб вийти: Коли ви входите як її, усі її програми знову мають доступ до графічного інтерфейсу, тому вони можуть запропонувати вам підтвердити закриття, зберегти зміни або прийняти інші дії перед виходом із системи.

Якщо ви впевнені, що у неї відкриті лише такі речі, як веб-браузер, iTunes тощо, а не сторінки, Word, Photoshop чи що-небудь ще з документами, ви можете спробувати з терміналу:

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

На OSX 10.10.4: (незначне редагування з останнього коментаря):

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

1
Погодьтеся з попередженням, що якщо ви не ввійдете в систему, щоб побачити, що вона робить, то ви не знаєте, що може коштувати їй, вийшовши з системи.
Майкл Х.

Так, ти маєш рацію. Більшість часу це веб-перегляд ... Але одного разу цього не буде! Спасибі!
Річард Геррон

4
Якщо ви примусите її припинити loginwindowчерез Activity Monitor.appвас, ви могли б одночасно переглядати, які інші процеси вона залишила відкритими.
Jari Keinänen

1
Якщо ви все одно запустите Awk, декількох grepкоманд можна легко уникнути. ps awwwwux | awk '/her_short_username/ && /loginwind[o]w/ { print $2 } | xargs killі дивіться також iki.fi/era/unix/award.html#grep
tripleee

1
просто зафіксуйте помилку друку в оновленій команді, читання suduповинні прочитати sudo.
хосс

18

Ви можете використовувати Монітор активності, щоб вийти з іншого користувача, вбивши його процес входу.

  1. Запустіть монітор активності
  2. У фільтрі вгорі праворуч введіть loginwindow
  3. Клацніть рядок із іменем користувача у стовпці Користувач
  4. Клацніть Вийти з процесу , а потім змусити вийти та введіть свій пароль.

Це просто приємніша (?) Версія графічного інтерфейсу відповіді Джоша .

Перед кроком 2 ви можете переглянути запущені процеси іншого користувача, щоб побачити, чи вони запускають додатки, які можуть втратити дані під час виходу.


Я спробував це і все ще бачу процеси іншого користувача, що працюють у "Моніторі діяльності". Правда, обліковий запис відображається вийшов із меню перемикання користувачів, але, схоже, це не те саме, що виходити з системи.
Горб

8

Ця команда простіша за запропоновану, і вона матиме результат бажання знищити всі користувацькі процеси (мені довелося запустити її двічі)

sudo pkill -9 -u user

Якщо ви просто хочете вбити процес вікна входу для цього користувача, ви можете зробити наступне:

sudo pkill -9 -u user loginwindow


1
Мені здається, це явно краща і ідіоматична відповідь (з точки зору unix sysadmin), ніж інші.
Грегг Левенталь

2

Я думаю, найпростіший спосіб зробити це: sudo killall -9 -u wifes_name


Використовуючи MacOS Mojave, це єдине рішення після спроб багатьох, які не тільки вбили процес WindowsWindow, але й багато інших процесів, що належать цьому користувачеві. Вбивство процесу LoginWindow лише для цього користувача не вбило багатьох інших процесів, розпочатих цим користувачем. Це рішення (замінивши ім'я моєї дружини) позбулося кожного процесу, розпочатого її входом. Потрібно перезавантажити машину і просто увійти в себе.
i-CONICA

-1

На мій погляд, можлива втрата даних значно переважає можливий приріст оперативної пам’яті.

Більше того, минуло давно, коли Unix зміг поміняти пам'ять на диск, коли процес не працював.


2
Одна проблема полягає в тому, що коли користувач вимикається, його процеси можуть не працювати. Вони можуть розжовувати процесор і пам'ять. Ігри здаються особливо поганими в цьому відношенні.
Bennett McElwee

2
Питання згадує дружину, але насправді є ще кращий випадок - коли у вас є дитина, яка перевищила їх обмеження на день і грає лише в ігри та робить інші речі, які не потребують економії. Тепер ви не тільки повинні увійти як дитина, але додайте час лише для того, щоб вийти з них.
Майкл

@Michael Це саме мій варіант використання. :)
Bennett McElwee
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.