Чи безпечно закрити оболонку, просто натиснувши "X" або використовуючи "ctrl + d"?


11

Чи безпечно закрити оболонку, просто натиснувши "X" або використовуючи "ctrl + d" під час входу в систему як корінь з su або безпечніше закрити її, ввівши "вихід"? Чи є взагалі якась різниця (з точки зору безпеки) чи вона однакова, і не важливо, яким способом ви користуєтесь?

Відповіді:


13

Ctrl-D або exitте саме.

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

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


5
Також є різниця і в баші. Якщо ви ctrl + d, будь-які процеси у фоновому режимі &залишаться запущеними. Якщо ви "X", вони припиняться.
Патрік

3
@Patrick, схоже, це залежить від емулятора терміналу, а не від оболонки. Якщо емулятор явно не вбиває фонові процеси, наскільки я знаю, баш не надсилає їх SIGHUP незалежно від того, як ви виходите. Я просто спробував це на Mac OS X 10.7.3. Термінал не вбиває фонові процеси, але Xterm (працює в X11). Я не знаю, це конкретно поведінка Xterm або X11 взагалі.
Кріс Пейдж

@jofel це неправда, дивіться мою відповідь.
Патрік

@Patrick дякую, що вказали на це. Я відредагую або видалю свою відповідь.
jofel

@jofel nah, не видаляй, zsh інформація все ще корисна. Я лише ноб на zsh, тому не можу коментувати там. Але це дає хороший момент, тому я відредагував свою відповідь, зауваживши, що різні оболонки можуть поводитися по-різному, а поведінка за замовчуванням, яку я описав, залежить від удару, в той час як ОП не вказує його оболонку.
Патрік

4

Закриття емулятора терміналу - це не те саме, що натискання CTRL + D(якщо не встановлено варіант huponexit).

  • Коли ви закриваєте термінал (натискаючи "X"), емулятор термінала надсилає SIGHUP до оболонки. Коли bash отримує SIGHUP, він також надсилає SIGHUP на всі ваші завдання.

  • Коли ви виходите з терміналу з CTRL+Dабо logoutабо exit, оболонка виходить, не надсилаючи SIGHUP на всі завдання. Це поведінка за умовчанням, але може бути змінений шляхом установки Баш shoptнастройки huponexit.

Отже, в кінцевому рахунку, якщо ваша мета - переконатися, що у фоновому режимі нічого не працює, його шаблоном натиснути «X».

.

Інформація, надана jofel у своєму коментарі, невірна (вибачте jofel). Емулятор терміналу не має поняття, які завдання виконуються під оболонкою, тому він не може їх припинити.

ПРИМІТКА .
Така поведінка повністю залежить від оболонки. Цілком можливо, що різні оболонки мають різну поведінку за замовчуванням.


Коли Ctrl+dпроцес успадковується за допомогою PPID 1 = systemd
EdiD

1

Різниці немає. Настільки, що, натискаючи ^ D, ви робите те саме, що і вводити «вихід»:

$ su -
Password:
# [press ^D]
logout

Так, CTRL+Dі exitте саме, питання стосувалося натискання кнопки "X" менеджера вікон, щоб закрити вікно, а не набравши exit:-)
Патрік,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.