Ý nghĩa và lệnh được thực thi trên Ctrl + Alt + Del trong Linux là gì?


7

Trong máy tính để bàn GUI gnome của Ubuntu 12.04, Ctrl+ Alt+ Deletesẽ đăng xuất thay vì khởi động lại.

Nhưng tôi đã nói rằng

Chuyển sang bảng điều khiển ảo dựa trên văn bản và nhấn Ctrl + Alt + Delete sẽ khởi động lại máy. Nó sẽ tắt sạch và khởi động lại, tốt hơn nhiều so với Alt + SysRq + REISUB.

Vì vậy, tôi tự hỏi nếu hai ý nghĩa khác nhau của Ctrl+ Alt+ Deletelà đúng?

Những lệnh Ctrl+ Alt+ nào Deleteđược liên kết trong hai trường hợp này?

Câu trả lời:


6

Ctrl+ Alt+ Deletethực sự là một tổ hợp phím "ma thuật" cho kiến ​​trúc phần cứng tương thích với PC của IBM sẽ gọi lại thiết lập BIOS.

Vì loại điều này rất nguy hiểm đối với một hệ thống như Linux, quyết định đã được đưa ra để móc các tổ hợp phím đó và thay vào đó làm một việc khác. Điều này được kiểm soát bởi initvà bạn có thể thấy những gì nó làm bằng cách nhìn vào /etc/inittab.

Trên hệ thống ép xung Debian của tôi:

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

Windows NT sau đó đã làm theo và biến Ctrl+ Alt+ Deletethành chế độ nhập khóa an toàn *.

Trong trường hợp của X, nó cũng tương tự móc các tổ hợp phím nhưng nó chỉ đơn giản killlà máy chủ hiển thị (sẽ tự động hồi sinh nếu bạn đang sử dụng trình quản lý hiển thị).

Một số hệ thống (có lẽ là tất cả, tôi đã không thử trong một thời gian) bạn vẫn có thể nhấn Ctrl+ Alt+ Deletetrước khi hệ điều hành tải để kích hoạt thiết lập lại BIOS.


* Tôi không chắc họ thực sự gọi nó là gì.


Cảm ơn! Những gì được /etc/inittabsử dụng cho?
Tim

@Tim: /etc/inittabít nhiều là tệp cấu hình cho init.
bahamat

Trên Ubuntu 12.04 của tôi, không có / etc / inittab. Điều gì có thể có thể là sự thay thế?
Tim

Mm, đúng vậy. Ubuntu sử dụng upstartchứ không phải init. Tương đương trên Ubuntu là etc/initthư mục. (Lưu ý là không /etc/init.d ).
bahamat

1
@Tim /etc/init/control-alt-delete.confĐối với upstart, upstart vẫn được gọi init , nhưng nó không phải là truyền thống init. Xem bài viết Wikipediatrang dự án .
Eliah Kagan

2

Nhân Linux có thể khởi động lại cứng hoặc gửi SIGINT quá trình init khi Ctrl + Alt + Del

Hạt nhân Linux cho phép hai hành vi có thể có từ Ctrl-Alt-Del:

  • khởi động lại ngay lập tức
  • gửi SIGINT đến quá trình init

Hành vi nào được sử dụng có thể được chọn với một trong hai:

  • reboot gọi hệ thống, xem man 2 reboot
  • /proc/sys/kernel/ctrl-alt-del

Do đó, nếu hành vi SIGINT được bật, thì kết quả của Ctrl + Alt + Del hoàn toàn phụ thuộc vào trình xử lý SIGINT mà init của bạn có.

Ví dụ: init 1.28.3 của BusyBox thực thi một lệnh tùy ý được đưa ra /etc/inittabdưới dạng:

::ctrlaltdel:/sbin/reboot

Và đây là một ví dụ C thú vị tối thiểu cho 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;
}

Đây là một thiết lập dễ dàng để thử điều này .


1

Các bản phân phối Linux hiện đại sử dụng systemdthay vì SysV init. Hành vi của tổ hợp ctrl-alt-xóa được xử lý bởi ctrl-alt-del.target, theo mặc định được liên kết với restart.target, nhưng có thể được đặt thành bất kỳ mục nào khác.

Danh sách các mục tiêu có sẵn:

systemctl list-unit-files -t target

Chuyển mục tiêu

Nhấn tổ hợp hơn 7 lần trong vòng 2 giây (như nhấn và giữ) sẽ buộc khởi động lại ngay lập tức theo mặc định (hoặc hành động được chỉ định bởi CtrlAltDelBurstAction).

Cũng có ích kbrequest.target, nhưng điều này không được bật theo mặc định.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.