Выйти из другого пользователя без первого переключения на этого пользователя

28

Моя жена использует отдельные учетные записи и быстрое переключение пользователей на MBP под управлением 10.6. Иногда я хочу выйти из нее, чтобы освободить немного оперативной памяти, но я бы не хотел входить в систему как она, выходить из системы, а затем снова входить как я.

Я видел терминальное решение ... есть ли лучший способ? Благодарность!

Ричард Херрон
источник
5
Вы должны лучше определить «есть ли лучший способ». Для меня не намного (с точки зрения компьютера) лучше, чем терминал. Если вы хотите приложение, просто оберните команду терминала в приложение automator или applecript.
2
@ Mankoff, хорошая мысль! Но это не форум Arch Linux, поэтому давайте предположим, что я хочу GUI / встроенное решение :). Но вы правы, я могу просто написать скрипт оболочки.
Ричард Херрон
2
Вот ссылка на решение для скрипта (я видел его перед публикацией, но это с 2005 года, поэтому я предположил, что к настоящему времени эта простая функция должна быть включена в GUI). forums.macrumors.com/showthread.php?t=118545
Ричард Херрон
я не знаю встроенного
графического интерфейса
Ок, спасибо всем! Когда я напишу хороший сценарий, я отправлю его сюда.
Ричард Херрон

Ответы:

22

Используя Терминал, вы можете убить ее loginwindowпроцесс, и все программы, которые она откроет, будут закрыты ... но это приведет к тому, что она потеряет любую несохраненную работу, которую она имеет! Фактически, это та самая причина, по которой вам нужно войти в систему как она, чтобы выйти из системы: когда вы входите в систему как она, все ее программы снова имеют доступ к графическому интерфейсу, поэтому они могут предложить вам подтвердить закрытие, сохранить изменения или принять другие действие перед выходом из системы.

Если вы уверены, что у нее открыты только такие вещи, как веб-браузер, iTunes и т. Д., А не Pages, 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вы можете одновременно просмотреть другие процессы, которые она оставила открытой.
Яри ​​Кейнянен
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

Вы можете использовать Activity Monitor для выхода из системы других пользователей, убив их процесс входа в систему:

  1. Запустить монитор активности
  2. В фильтре справа вверху введите loginwindow
  3. Щелкните строку с именем пользователя в столбце « Пользователь».
  4. Нажмите « Завершить процесс» , затем « Принудительный выход» и введите свой пароль.

Это просто более приятная (?) Версия ответа Джоша с графическим интерфейсом .

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

Беннет МакЭлви
источник
Я попробовал это и до сих пор вижу процессы других пользователей, запущенных в Activity Monitor. Правда, учетная запись выглядит отключенной в меню переключения пользователей, но, похоже, это не то же самое, что выход из системы.
Горб
8

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

sudo pkill -9 -u user

Если вы просто хотите убить процесс loginwindow для этого пользователя, вы можете сделать следующее:

sudo pkill -9 -u user loginwindow

Ulukai
источник
1
Мне кажется, что это явно лучший и более идиоматический ответ (с точки зрения системного администратора Unix), чем другие.
Грегг Левенталь
2

Я думаю, что самый простой способ сделать это: sudo killall -9 -u wifes_name

mempman
источник
Используя MacOS Mojave, это единственное решение после попытки многих, которые убили не только процесс LoginWindow, но и многие другие процессы, принадлежащие этому пользователю. Уничтожение процесса LoginWindow только для этого пользователя не привело к уничтожению многих других процессов, запущенных этим пользователем. Это решение (заменяющее имя моей жены) избавило от каждого процесса, начатого ее логином. Сродни перезагрузке машины и просто авторизации.
i-CONICA
-1

На мой взгляд, возможная потеря данных намного превышает возможный выигрыш в оперативной памяти.

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

mouviciel
источник
2
Одна проблема состоит в том, что когда пользователь выключен, его процессы могут не простаивать. Они могут жевать процессор и память. Игры кажутся особенно плохими в этом отношении.
Беннет МакЭлви,
2
Вопрос затрагивает жену, но на самом деле есть еще лучший случай - когда у вас есть ребенок, у которого превышено ограничение по времени в течение дня, и он играет только в игры и занимается другими делами, которые не нуждаются в сохранении. Теперь вам нужно не только войти как ребенок, но и добавить время, чтобы просто выйти из системы.
Майкл
@ Майкл Это точно мой вариант использования. :)
Беннет МакЭлви