Cara untuk keluar pengguna dari baris perintah di OS X 10.9


31

Saya ingin keluar Mac OS X dari baris perintah. Versi OS X saya adalah 10.9. Saya mencoba perintah pkill -KILL -u uid, tetapi perintah ini tidak berhasil. Apakah ada perintah yang dapat digunakan untuk mengeluarkan pengguna dari sistem hanya menggunakan baris perintah, bukan AppleScript ?


apa yang sebenarnya tidak berhasil?
nohillside

pada menjalankan perintah pkill -KILL -u uid sistem menunjukkan layar abu-abu dan menunggu lama sistem menunjukkan kekuatan berhenti jendela tanpa aplikasi berjalan
prateeak ojha

Jawaban:


32

sudo launchctl bootout gui/$(id -u <username>)
atau
sudo launchctl bootout user/$(id -u <username>)

Ganti nama pengguna dengan nama pengguna pengguna target atau ganti seluruh subkulit dengan uid pengguna. Ini memberitahu launchctl untuk membongkar sesi login pengguna (gui secara khusus merujuk pada sesi login sementara pengguna, pengguna menentukan proses latar belakang pengguna).

Anda dapat keluar sendiri tanpa sudoharus menguji ini.

Perhatikan bahwa ini HANYA akan bekerja pada macOS 10.11.x atau lebih baru (lihat launchctl helplebih lanjut)


1
Saya HANYA membaca kembali pertanyaan Anda dan saya minta maaf karena ini tidak akan membantu Anda, tetapi itu akan muncul di hasil pencarian google.
Iain Henderson

29

Untuk keluar murni dari terminal (atau sesi ssh jarak jauh), matikan saja proses loginwindow:

sudo pkill loginwindow

Anda bisa menjadi mewah dan menentukan pengguna jika banyak pengguna memiliki proses loginwindow, tetapi ini adalah satu tembakan mudah, tidak ada cara cepat untuk mengakhiri sesi grafis pengguna.


16

Ini telah berhasil bagi saya di masa lalu:

Logout (dengan konfirmasi)

osascript -e 'tell app "System Events" to log out'

Logout langsung (tidak ada konfirmasi)

osascript -e 'tell app "System Events" to  «event aevtrlgo»'

atau

osascript -e 'tell application "loginwindow" to  «event aevtrlgo»'

Dengan cara ini setiap aplikasi yang berjalan akan diperhatikan dan dapat diakhiri dengan aman.


osascript -e 'beri tahu aplikasi "System Events" ke «event aevtrlgo»' yang menampilkan kesalahan: a "<" tidak dapat dilanjutkan setelah ini.
prateeak ojha

Hmm, ok buat saya. Bisakah Anda mencoba dari skrip shell alih-alih baris perintah, mungkin shell melakukan beberapa hal aneh di sini.
nohillside

Saya menduga OP memiliki beberapa masalah lain dan perintah normal semakin terputus dari komentar di sini dan deskripsi pertanyaan.
bmike

5
Perhatikan bahwa «≠ <<
mlainz

2

Jika Anda memiliki banyak pengguna ....

Temukan ID Proses dengan:

ps aux|grep login

Kemudian bunuh proses itu dan Anda logout sesi itu. Tetapi ada banyak proses yang tersisa.

Periksa dengan pstreebegitu Anda tahu proses mana yang harus diakhiri.


2

Ini berguna bagi saya.

sudo -s

Untuk mendapatkan hak akses root dan # prompt, kemudian matikan prosesnya.

killall -vu username -HUP

Dan jika tidak semuanya hilang. Nuke em! Peringatan wajib - membunuh segala sesuatu karena root tidak memiliki undo dan no "apakah Anda yakin ingin menghentikan proses ini tanpa menyimpan file Anda, termasuk basis data sistem kritis yang mungkin membuat mesin tidak dapat di-boot pada kesempatan yang jarang." ketik peringatan.

killall -vu username -9

1
Tidak perlu ke shell root - cukup
taruh

1

Utilitas yang bagus untuk ditambahkan ke Terminal Anda adalah perintah "logout", untuk digunakan seperti:

logout UserName

Berikut caranya:

  1. Edit .bash_profile Anda

    nano ~/.bash_profile

  2. Tambahkan baris ini:

    logout() {sudo launchctl bootout user/$(id -u "$1")}

  3. Simpan file dengan menekan ctrl+x

  4. Mulai ulang terminal

Kamu siap untuk pergi ;)


Saya harus mematahkan tubuh ke baris baru dan menempatkan kurung kurawal penutupan sesudahnya juga.
bmauter

@bmauter bukan untuk saya, dalam bentuk yang disarankan berfungsi dengan baik.
Kappe

-3

jika Anda masuk dengan ssh ke komputer jarak jauh, Anda dapat keluar dengan mengetik 'keluar':

[host:~user]$ exit
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.