Linux에서 Ctrl+Alt+Del의 의미와 실행 명령은 무엇입니까?

Linux에서 Ctrl+Alt+Del의 의미와 실행 명령은 무엇입니까?

내 Ubuntu 12.04 gnome GUI 데스크탑에서 Ctrl++는 재부팅하는 대신 로그오프됩니다.AltDelete

그런데 누군가가 나한테 말했어

텍스트 기반 가상 콘솔로 전환하고 Ctrl+Alt+Delete를 누르면 컴퓨터가 다시 시작됩니다. 완전히 종료되었다가 다시 시작됩니다. 이는 Alt+SysRq+REISUB보다 훨씬 좋습니다.

Ctrl그렇다면 위의 ++ Alt의 두 가지 다른 의미가 Delete올바른지 알고 싶습니다 .

Ctrl두 경우 모두 ++ Alt는 어떤 명령 에 바인딩됩니까?Delete

답변1

Ctrl+ Alt+ Delete실제로 BIOS 재설정을 호출하는 IBM PC 호환 하드웨어 아키텍처의 "마법" 키 입력입니다.

이런 종류의 일은 Linux와 같은 시스템에서는 위험하기 때문에 이러한 키 입력을 연결하고 다른 작업을 수행하기로 결정했습니다. 이것은 에 의해 제어됩니다 init. 이를 보면 그것이 무엇을 하는지 알 수 있습니다 /etc/inittab.

내 Debian Squeeze 시스템에서:

ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

나중에 Windows NT도 이에 따라 ++를 보안 키 입력 모드* Ctrl로 변환했습니다 .AltDelete

X의 경우 키 입력을 비슷하게 연결하지만 이는 단지 kill디스플레이 서버일 뿐입니다(디스플레이 관리자를 사용하면 자동으로 다시 생성됩니다).

일부 시스템(어쩌면 모두, 한동안 시도하지 않았을 수도 있음)에서는 OS가 로드되기 전에 Ctrl+를 눌러 AltBIOS 재설정을 실행할 수 있습니다.Delete


* 실제로 뭐라고 부르는지는 잘 모르겠습니다.

답변2

Linux 커널을 하드 재부팅하거나 Ctrl + Alt + Del을 통해 SIGINT를 init 프로세스로 보낼 수 있습니다.

Linux 커널 자체에서는 Ctrl-Alt-Del이 두 가지 가능한 작업을 수행할 수 있도록 허용합니다.

  • 지금 다시 시작
  • init 프로세스에 SIGINT 보내기

다음 방법 중 하나로 사용할 동작을 선택할 수 있습니다.

  • reboot시스템 호출, 참조man 2 reboot
  • /proc/sys/kernel/ctrl-alt-del

따라서 SIGINT 동작이 활성화된 경우 Ctrl + Alt + Del의 결과는 전적으로 SIGINT 핸들러 init에 따라 달라집니다.

예를 들어 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;
}

이것은이것을 시도하기 위한 간단한 설정.

답변3

최신 Linux 배포판은 systemdSysV 대신 init를 사용합니다. ctrl-alt-delete 조합의 동작은 ctrl-alt-del.target에 의해 처리됩니다. ctrl-alt-del.target은 기본적으로 Reboot.target에 연결되어 있지만 다른 대상으로 설정할 수 있습니다.

사용 가능한 대상 목록:

systemctl list-unit-files -t target

대상 전환

기본적으로 키 조합을 2초 내에 7번 이상 누르면(예: 길게 누르기) 즉시 다시 시작(또는 지정된 동작 CtrlAltDelBurstAction)됩니다.

또한 유용 kbrequest.target하지만 기본적으로 활성화되어 있지 않습니다.

관련 정보