답변:
GNU / Linux [적어도 SystemV init 스타일을 기반으로하는 것 ]에서 ctrl+ alt+ 의 동작은 다음과 같은 행을 읽을 수 del있는 구성 파일에 의존합니다 /etc/inittab
.
<id>::ctrlaltdel:/sbin/shutdown -t3 -r now
(ArchLinux 배포판의 예) 즉, 키 조합을 수신하면 시스템이 종료됩니다. 그러나 * 와 같은 다른 작업을 원할 수도 있습니다 .
<id>::ctrlaltdel:/usb/bin/sudo make me a sandwich
(이것이 훨씬 유용합니다 :)
Linux에서 Alt+ Ctrl+ Del에 대한 바로 가기를 만들 수 있지만 알고 싶은 다른 흥미로운 조합이 있습니다.
누른 상태 Alt및 SysRq합니다 (인 Print Screen및 입력 키) REISUB각 키는 안전하게 재시작되는 것 사이에 몇과를 초 (나는 보통 5로 계산). REISUO다시 시작하지 않고 종료합니다. 주석에서 알 수 있듯이 이것은 단일 명령이 아니라 각각 특정 작업을 수행하는 많은 명령의 조합입니다. 자세한 내용 은 부드럽게 리눅스를 다시 시작하는 REISUB를 살펴 보는 것이 좋습니다 .
그리고 당신은 이미 알고 있지만 수도 눌러 Alt+ Ctrl+ 키 중 하나가에서 F1에 F6텍스트 모드 사용 명령 줄에서 로그인하는 데 사용할 수있는 시간에 콘솔을 얻을 수 있습니다. 데스크탑 환경을 망칠 때 매우 유용했습니다.
reisub
실제로 무엇을하는지 설명하십시오 . 이 명령은 단일 명령이 아니라 6 개의 명령 조합으로, 각각 특정 작업을 수행합니다 ( 자세한 내용 은 magic SysRq 키에 대한 Wikipedia 기사 를 참조하십시오). 따라서을 i
너무 빨리 치면 e
이 답변을 읽은 후 프로그램이 종료되는 동안 프로그램을 종료 할 수 있습니다.
예, 그러나 수행되는 작업은 데스크톱 관리자 구성에 따라 다릅니다. KDE에는 시스템을 다시 시작하거나 중지 할 때 선택할 수있는 대화 상자가 표시됩니다.
Linux 콘솔에서 대부분의 배포판에서 기본적으로 Ctrl+ Alt+ Del는 MS-DOS에서와 같이 작동하며 시스템을 다시 시작합니다.
GUI에서 Ctrl+ Alt+ Backspace는 현재 X 서버를 종료하고 새 서버를 시작하므로 Windows의 SAK 시퀀스처럼 작동합니다 ( Ctrl+ Alt+ Del).
REISUB 가 가장 비슷 합니다. Magic SysRq 키는 Linux / UNIX에서 기존 Windows / DOS 하드 리셋을 에뮬레이트하는 유일한 방법입니다.
프로그램 관리자와 유사한 인터페이스의 경우 'k'ill에 top을 사용하고'k '를 누르십시오.
Ctrl+ Alt+ Backspace는 X 서버> 1.6에서 기본적으로 비활성화되어 있습니다 (일부 배포판은 제공되는 구성 파일에서 다시 활성화 할 수 있음). Windows Ctrl+ Alt+ Del가 일반적으로 X를 죽이고 작동하지 않는 프로그램을 수정하는 것이 기계를 다시 시작하는 것보다 낫습니다.
Linux 커널은 하드 재부팅하거나 Ctrl+ Alt+에 초기화 프로세스를 SIGINT로 보낼 수 있습니다Del
따라서 SIGINT 비헤이비어가 활성화 된 경우 init가 원하는대로 Ctrl+ Alt+를 Del수행 할 수 있습니다 .
Linux 커널 자체는 Ctrl+ Alt+ 에서 가능한 두 가지 동작을 허용합니다 Del.
사용되는 동작은 다음 중 하나를 사용하여 선택할 수 있습니다.
reboot
시스템 호출, 참조 man 2 reboot
/proc/sys/kernel/ctrl-alt-del
예를 들어, BusyBox '1.28.3 init는 다음과 /etc/inittab
같이 주어진 임의의 명령을 실행합니다 .
::ctrlaltdel:/sbin/reboot
다음은 uclibc에 대한 흥미로운 흥미로운 C 예제입니다.
#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;
}
이것을 시도하는 쉬운 설정 은 다음과 같습니다 .