Я хотел бы запустить что-то вроде «sleep 3600; logout», но команда logout bash только закрывает текущий терминал. Как закрыть полный сеанс Mac OS X?
macos
mac
command-line
Гжегож Адам Ханкевич
источник
источник
alias maclogout="..."
Не существует «хорошего» способа выхода текущего пользователя из терминала в OS X. «Грязный» способ сделать это - убить
loginwindow
процесс этого пользователя . Это грубо уничтожит все процессы (программы), работающие под вашим именем пользователя.Это двухэтапный процесс.
В терминале запустите это:
Затем запустите
Где
<pid>
находится первое число (второй столбец) из выходных данных вышеуказанной команды.Используйте sudo kill -9, чтобы принудительно завершить процесс, который мне пришлось сделать, чтобы заставить это работать.
Так, например, когда вывод первой команды:
Затем я запускал
sudo kill 41
, вводил свой пароль, и затем я выходил из системы.Это может быть объединено в псевдоним bash:
источник
sudo killall loginwindow
? По крайней мере, на 10.7loginwindow
процесс, кажется, сразу же открывается снова.Я знаю, что это старый вопрос, но он помог мне, команда, которая мне нужна на OS X 10.8:
Оператор
awk
отличается иkill -9
обеспечивает отображение приглашения на вход.источник
Я думаю, что нашел ответ на то, как изящно выйти из Mac OS X без 2-минутного ожидания.
Я понял, что, удерживая Shift, Option и Command и нажимая «q», вы выйдете изящно и не спросите «хотите ли вы выйти из системы».
Итак, я написал AppleScript через Automator для:
источник
Если вы вошли в оболочку как тот же пользователь, который вошел в графический интерфейс Mac, вы можете выполнить команду sudo-less:
launchctl reboot logout
которая довольно эффективно выходит из системы; у него есть предостережение о том, что приложения, которые закрываются, не запрашивают взаимодействие во время выхода, однако это не означает, что это то же самое, что убить их напрямую, какkill
(SIG TERM) илиkill -9
(SIG KILL).источник
Я бы сказал, что самый приятный способ опубликовать OS X 10.9
launchctl gui/$(id -u <username>) bootout
Документация post OS X 10.9 для launchctl обнаруживается при запуске
launchctl help
, но, по сути, приведенная выше команда прервет временную сессию пользователя. Альтернативаlaunchctl user/$(id -u <username>) bootout
разрушает постоянный сеанс, который запускает демоны пользователя, пока пользователь не вошел в систему.Это можно проверить, запустив
launchctl gui/$(id -u) bootout
, сразу же выйдет из системы и заставит систему отобразить окно входа в систему (с некоторой задержкой).источник
sudo launchctl bootout gui/XXX
гдеXXX
числовой идентификатор пользователя (UID). Обратите внимание, что i)bootout
подкоманда находится на первом месте, а ii)$(id)
возвращает намного больше, чем UID.Хорошей утилитой для добавления в ваш терминал является команда выхода из системы , которая будет использоваться следующим образом:
Вот как:
Отредактируйте ваш .bash_profile
nano ~/.bash_profile
Добавьте эту строку:
logout() {sudo launchctl bootout user/$(id -u "$1")}
Сохраните файл нажатием
ctrl+x
Перезагрузите терминал
Вы готовы к работе;)
источник