Чи має еквівалент CTRL+ ALT+ у Linux DEL?
Чи має еквівалент CTRL+ ALT+ у Linux DEL?
Відповіді:
X можна вбити за допомогою Ctrl+ Alt+ BackSpace, і якщо ви натиснете Ctrl+ Alt+ F1(або F2 до 6), вас перенесуть на віртуальну консоль, де ви можете вводити команди, щоб убити поганий додаток. Щоб повернутися до GUI, натисніть Ctrl+ Alt+ F7.
У GNU / Linux [принаймні ті, що базуються на стилі init SystemV ], поведінка ctrl+ alt+ delпокладається на файл конфігурації, /etc/inittab
де ви повинні мати можливість читати рядок типу:
<id>::ctrlaltdel:/sbin/shutdown -t3 -r now
(наприклад, з дистрибутива ArchLinux), що означає, що система буде відключена, коли отримає комбінацію клавіш. Але ви можете зробити щось інше, наприклад * :
<id>::ctrlaltdel:/usb/bin/sudo make me a sandwich
(що набагато корисніше :)
Добре, ви можете створити ярлик для Alt+ Ctrl+ Delв Linux, але є ще кілька цікавих комбінацій, які ви, можливо, хочете знати.
Якщо натиснути Altі SysRq(що є Print Screenключем) та набрати REISUBкілька клавіш (зазвичай я рахую 5) між кожною клавішею, ви безпечно перезапуститеся. REISUOбуде робити зупинку, а не перезапуск. Як зазначається в коментарі, це не одна команда, а комбінація багатьох команд, кожна з яких виконує конкретну річ. Тому я рекомендую поглянути на REISUB - ніжний перезапуск Linux для отримання більш детальної інформації.
І ви, можливо, вже знаєте це, але натисніть Alt+ Ctrl+ будь-яку клавішу від, F1щоб F6отримати консоль у будь-який час, за допомогою якої ви можете увійти в текстовий режим і використовувати командний рядок. Це було дуже корисно, коли я зіпсував своє робоче середовище.
reisub
насправді робить. Це не одна команда, а комбінація з 6 команд, кожна з яких виконує щось конкретне ( детальну інформацію див. У статті Вікіпедії про магічний ключ SysRq ). Тож якщо ви потрапите i
занадто швидко після цього e
, ви можете вбивати програми, поки вони все ще закриваються - як я, прочитавши цю відповідь.
Так, однак дія, яку вона вживає, залежить від конфігурації менеджера робочого столу. У KDE він показує діалогове вікно, для якого можна вибрати перезапуск або зупинку системи.
У консолі Linux за замовчуванням у більшості дистрибутивів Ctrl+ Alt+ Delповодиться як у MS-DOS - він перезапускає систему.
У графічному інтерфейсі Ctrl+ Alt+ Backspaceзнищить поточний X-сервер та запустить новий, таким чином, поводиться як SAK-послідовність у Windows ( Ctrl+ Alt+ Del).
REISUB був би найближчим еквівалентом. Чарівні клавіші SysRq - єдиний спосіб емуляції традиційних жорстких скидів Windows / DOS в Linux / UNIX.
Для інтерфейсу, подібного до менеджера програм, використовуйте верхню та натисніть "k" для "k'ill.
Ctrl+ Alt+ Backspaceвимкнено за замовчуванням у X Servers> 1.6 (хоча деякі дистрибутиви знову вмикають його у конфігураційних файлах, що надсилаються). Хоча це не робить те, що робить Windows Ctrl+ Alt+, Delяк правило, вбиває X та виправляє недоброзичливі програми, перевагу перед перезапуском машини.
У gnome є функція під назвою "Комбінації клавіш", яка дозволяє налаштувати комбінації клавіш.
Менеджер процесів для Gnome називається gnome-system-monitor, тому якщо ви переходите до: - System; - преференції; - Комбінації клавіш і додайте gnome-system-monitor як CTRL+ ALT+, DELвін повинен працювати для вас :)
Так, вони є тими ж ключами, що і в Ubuntu, але вони можуть відрізнятися залежно від вашого розповсюдження.
Ядро Linux може або важко перезавантажитись, або відправити SIGINT процес init на Ctrl+ Alt+Del
Тому, якщо поведінка SIGINT увімкнена, ви можете змусити Ctrl+ Alt+ Delробити все, що ваш init хоче.
Саме ядро Linux дозволяє дві можливі поведінки з Ctrl+ Alt+ Del:
Яка поведінка використовується, можна вибрати:
reboot
системний виклик, див man 2 reboot
/proc/sys/kernel/ctrl-alt-del
Наприклад, BusyBox '1.28.3 init виконує довільну команду, задану у /etc/inittab
вигляді:
::ctrlaltdel:/sbin/reboot
А ось мінімально цікавий приклад C для uclibc:
#define _XOPEN_SOURCE 700
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/reboot.h>
#include <unistd.h>
void signal_handler(int sig) {
write(STDOUT_FILENO, "cad\n", 4);
signal(sig, signal_handler);
}
int main(void) {
int i = 0;
/* Disable the forced reboot, enable sending SIGINT to init. */
reboot(RB_DISABLE_CAD);
signal(SIGINT, signal_handler);
while (1) {
sleep(1);
printf("%d\n", i);
i++;
}
return EXIT_SUCCESS;
}