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 init
quy 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 init
PID 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 init
là 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.
pkill
thay killall
vì vì killall
hoạt động hoàn toàn khác trên các hệ thống khác như Solaris ...
killall
Giết chết tất cả. Do đó tên.
killall init
như root
có 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 init
sẽ 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 return
cuối main
vòng lặp mã.