Câu trả lời:
Trên các hệ thống Upstart mới hơn, quy trình khởi tạo phiên được bắt đầu khi bạn đăng nhập bằng GUI. Vì Ubuntu sử dụng Upstart, nên có một initquy trình cho phiên của bạn. Kiểm tra nó bằng cách sử dụng pstree -ps $$trong một thiết bị đầu cuối:
$ pstree -ps $$
init(1)───lightdm(1741)───lightdm(9511)───init(9526)───/usr/bin/termin(9570)─┬─gnome-pty-helpe(9734)
└──zsh(7944)
Vì vậy, khi bạn chạy killall init, bạn không giết chết initPID 1 (vì bạn không có đặc quyền), nhưng phiên của bạn init, đó sẽ là PID 9526 trong ví dụ này.
Vì đây initlà quy trình quản lý cho phiên GUI của bạn, việc giết chết nó sẽ giết chết phiên của bạn và do đó bạn đã đăng xuất.
pkillthay killallvì vì killallhoạt động hoàn toàn khác trên các hệ thống khác như Solaris ...
killallGiết chết tất cả. Do đó tên.
killall initnhư rootcó vẻ không phải là một ý tưởng hay - đặc biệt là trên một hệ thống hữu ích - Tôi nghĩ rằng initsẽ gây ra sự hoảng loạn hạt nhân nếu nó chết vì nó không có ý định đạt đến returncuối mainvòng lặp mã.