Действительно ли безопасно закрыть оболочку только путем нажатия на "X" или использования “ctrl+d”?

Вы могли использовать tr вместо sed:

awk '/user/ {print $1 }' /etc/userdomains | tr -d ":"

Хотя я не вижу, как это лучше, чем просто использование awk (и при этом я не вижу что случилось с sed).

11
26.04.2012, 13:49
3 ответа

Ctrl-D или exit то же.

Если Вы использующий эти "X", менеджер окон отправляете оконечный сигнал в оболочку. Который имеет в конце тот же результат. Если оболочка не реагирует, пользователь обычно получает предупреждение и может затем вынудить оболочку закончиться (равный kill -9 $PID).

Существует одна небольшая разница между "X" - и метод выхода, если Вы используете zsh как оболочка: Если у Вас есть выполнение фонового процесса, exit/ctrl-D производит в первый раз только предупреждающее сообщение, "у Вас есть рабочие задания", во второй раз оболочка закрывается. С кнопкой "X" оболочка сразу завершается без любых предупреждений.

13
27.01.2020, 19:58
  • 1
    Также существует различие в ударе также. Если Вы ctrl+d, то любой фон процессов с & останется работать. Если Вы "X", то они будут завершены. –  Patrick 10.03.2012, 20:58
  • 2
    @Patrick это, кажется, зависит от эмулятора терминала, а не оболочки. Если эмулятор явно не уничтожает фоновые процессы, насколько я - осведомленный удар, не отправит им SIGHUP, неважно, как Вы выходите. Я просто попробовал это на Mac OS X 10.7.3. Терминал не уничтожает фоновые процессы, но Xterm (работающий в X11) делает. Я не знаю, является ли это поведением Xterm конкретно или X11 обычно. –  Chris Page 10.03.2012, 22:20
  • 3
    @jofel это не верно, видят мой ответ. –  Patrick 26.04.2012, 16:37
  • 4
    @Patrick благодарит указать на это. Я отредактирую или удалю свой ответ. превосходный –  jofel 26.04.2012, 16:42
  • 5
    @jofel nah, не удаляйте, zsh информация все еще полезна. Я - только новичок в zsh, таким образом, я не могу прокомментировать там. Но это действительно поднимает положительную сторону, таким образом, я отредактировал свой ответ, чтобы отметить, что различные оболочки могут вести себя по-другому, и поведение по умолчанию, которое я описал, является зависимым удара, в то время как OP не указывает его оболочку. –  Patrick 26.04.2012, 16:54

Нет никакого различия. Так это при нажатии ^D Вы делаете то же самое как вводящий 'выход':

$ su -
Password:
# [press ^D]
logout
1
27.01.2020, 19:58
  • 1
    Да, CTRL+D и exit то же, вопрос был о нажатии на менеджер окон "X" для закрытия окна, не ввода exit :-) –  Patrick 26.04.2012, 16:39

Закрытие эмулятора терминала не является тем же как нажатием CTRL + D (если опция huponexit установлен).

  • При закрытии терминала (нажатие на "X"), эмулятор терминала отправляет SIGHUP в оболочку. Когда удар получает SIGHUP, он также отправляет SIGHUP во все Ваши задания.

  • Когда Вы выходите из терминала с CTRL+D или logout или exit, оболочка выходит, не отправляя SIGHUP во все задания. Это - поведение по умолчанию, но может быть изменено путем установки удара shopt установка huponexit.

Так в конечном счете, если Ваша цель состоит в том, чтобы удостовериться, что нет ничего работающего в фоновом режиме, ее safter для нажатия на "X".

.

Информация, обеспеченная jofel в его комментарии, является неправильной (извините jofel). Эмулятор терминала не имеет никакой подсказки, что задания выполняют под оболочкой, таким образом он, наклон завершает их.

Примечание:
Это поведение абсолютно зависит от оболочки. Совершенно возможно, что различные оболочки имеют различные поведения по умолчанию.

4
27.01.2020, 19:58

Теги

Похожие вопросы