Tôi đã đưa ra chức năng này để đăng xuất người dùng (xem ở phía dưới)
Nó giả định
- bạn có quyền sudo
- bạn có bash
- người dùng có 1 phiên X đang chạy (mặc dù bạn có thể ban hành cùng một lệnh đăng xuất nhiều lần để thoát khỏi các phiên còn lại)
Bạn có thể cung cấp cho nó nhiều tên người dùng:
logout john jane mike elisa
Và bạn có thể cung cấp cho nó các tùy chọn bổ sung:
logout john --force
Vì vậy, tôi có chức năng trợ giúp sau:
function forcelogout() {
logout "$@" --no-prompt --force
}
Ghi chú:
- Đây là một công cụ cùn và hoạt động bằng cách chỉ sao chép toàn bộ môi trường phiên. Điều này có thể được lựa chọn nhiều hơn.
- Đôi khi đăng xuất dường như mất một lúc
- Trong các trường hợp hiếm hoi, phiên tiếp tục được báo cáo cho đến khi ai đó truy cập vào vt nơi phiên chạy, nhưng không còn gì nữa)
MÃ
function logout() {
local USERNAME
export USERNAMES=( )
while [ -n "$1" ]; do case "$1" in
-* ) break ;;
*) USERNAMES+=( "$1" ); shift ;;
esac; done
for USERNAME in "${USERNAMES[@]}"; do
local SESSION_PID=$(pgrep -fu "$USERNAME" gnome-session|head -1)
if [ -n "$SESSION_PID" ]; then
(
sudo -u "$USERNAME" cat "/proc/$SESSION_PID/environ" | xargs -0 -n 1 echo export
echo "gnome-session-quit --logout $@"
) | sudo -u "$USERNAME" sh -;
fi
done
}
restart
sẽ dừng tất cả các chương trình đang chạy. (Tôi vẫn không biết cách khởi động lại GUI mà không dừng các chương trình.)