Logout pengguna lain tanpa beralih terlebih dahulu ke pengguna itu

28

Istri saya menggunakan akun terpisah dan pengguna cepat mengaktifkan MBP yang berjalan 10.6. Terkadang saya ingin mengeluarkannya untuk membebaskan beberapa RAM, tetapi saya ingin menghindari login sebagai dirinya, logout, kemudian masuk kembali seperti saya.

Saya telah melihat solusi terminal ... apakah ada cara yang lebih baik? Terima kasih!

Richard Herron
sumber
5
Anda perlu mendefinisikan "apakah ada cara yang lebih baik". Bagi saya, tidak banyak (komputer-bijaksana) lebih baik daripada terminal. Jika Anda menginginkan aplikasi, cukup bungkus perintah terminal dalam aplikasi automator atau applescript.
2
@ terima kasih, poin bagus! Tapi ini bukan forum Arch Linux, jadi mari kita asumsikan saya ingin solusi GUI / built-in :). Tapi, Anda benar, saya hanya bisa menulis skrip shell.
Richard Herron
2
Ini adalah tautan ke solusi skrip (saya melihatnya sebelum memposting, tapi ini dari 2005, jadi saya berasumsi bahwa sekarang fitur sederhana ini sudah dimasukkan ke dalam GUI). forums.macrumors.com/showthread.php?t=118545
Richard Herron
tidak ada solusi
bawaan
OK, terima kasih, Semua! Ketika saya menulis skrip yang bagus, saya akan mempostingnya kembali di sini.
Richard Herron

Jawaban:

22

Menggunakan Terminal, Anda dapat mematikan loginwindowprosesnya dan semua program yang telah dibuka akan ditutup ... tetapi ini akan menyebabkan dia kehilangan semua pekerjaan yang belum disimpan yang dimilikinya! Faktanya, ini adalah alasan utama Anda harus masuk saat dia keluar: Ketika Anda masuk sebagai dia, semua programnya lagi memiliki akses ke GUI, sehingga mereka dapat meminta Anda untuk mengkonfirmasi penutupan, menyimpan perubahan atau mengambil yang lain tindakan sebelum keluar.

Jika Anda yakin dia hanya memiliki hal-hal seperti browser web, iTunes, dll. Yang terbuka, bukan Pages, Word, Photoshop, atau apa pun dengan dokumen, maka Anda dapat mencoba dari terminal:

kill `ps awwwwux | grep her_short_username | grep loginwindow | grep -v grep | awk "{ print \$2 }"`

Pada OSX 10.10.4: (sedikit edit dari komentar terakhir):

export pn=`ps awwwwux | awk '/her_short_username/ && /loginwind[o]w/ { print $2 }'`
sudo kill -9 $pn
Josh
sumber
1
Setuju dengan peringatan bahwa jika Anda tidak masuk untuk melihat apa yang dia lakukan, maka Anda tidak tahu apa yang mungkin Anda keluarkan dengan mengeluarkannya.
Michael H.
Ya kamu benar. Sebagian besar waktu browsing web ... Tapi satu kali tidak akan! Terima kasih!
Richard Herron
4
Jika Anda memaksanya menghentikannya loginwindowmelalui Activity Monitor.appAnda bisa dengan mudah melihat pada saat yang sama apa proses lain yang dibiarkan terbuka.
Jari Keinänen
1
Jika Anda tetap menjalankan Awk, beberapa grepperintah dapat dengan mudah dihindari. ps awwwwux | awk '/her_short_username/ && /loginwind[o]w/ { print $2 } | xargs killdan lihat juga iki.fi/era/unix/award.html#grep
tripleee
1
hanya memperbaiki kesalahan ketik pada perintah Anda yang diperbarui, bacaan suduharus dibaca sudo.
Hoss
18

Anda dapat menggunakan Monitor Aktivitas untuk mengeluarkan pengguna lain dengan mematikan proses login mereka:

  1. Jalankan Monitor Aktivitas
  2. Di filter di kanan atas, ketik loginwindow
  3. Klik baris dengan nama pengguna di kolom Pengguna
  4. Klik Quit Process , lalu Force Quit , dan ketikkan kata sandi Anda.

Ini hanya versi GUI jawaban Josh yang lebih bagus (?) .

Sebelum langkah 2, Anda dapat meninjau proses yang dijalankan pengguna lain untuk melihat apakah mereka menjalankan aplikasi yang mungkin kehilangan data saat logout.

Bennett McElwee
sumber
Saya mencoba ini dan masih melihat proses pengguna lain berjalan di Activity Monitor. Benar, akun tersebut muncul logout di menu switching pengguna, tetapi sepertinya itu tidak benar-benar sama dengan logout.
Kumpulkan
8

Perintah ini lebih sederhana daripada yang disarankan dan itu akan memiliki hasil keinginan untuk membunuh semua proses pengguna (saya harus menjalankannya dua kali)

sudo pkill -9 -u user

Jika Anda hanya ingin mematikan proses loginwindow untuk pengguna tersebut, Anda dapat melakukan hal berikut:

sudo pkill -9 -u user loginwindow

Ulukai
sumber
1
Menurut saya ini adalah jawaban yang jelas lebih baik dan lebih idiomatis (dari sudut pandang unix sysadmin) daripada yang lain.
Gregg Leventhal
2

Saya pikir cara paling sederhana untuk melakukannya adalah: sudo killall -9 -u wifes_name

mempman
sumber
Menggunakan MacOS Mojave, ini adalah satu-satunya solusi setelah mencoba banyak yang tidak hanya membunuh proses LoginWindow, tetapi banyak proses lain yang dimiliki oleh pengguna itu. Membunuh proses LoginWindow untuk pengguna itu saja tidak membunuh banyak proses lain yang dimulai oleh pengguna itu. Solusi ini (menggantikan dengan nama istri saya) menyingkirkan setiap proses yang dimulai dengan loginnya. Anda dapat me-reboot mesin dan masuk sendiri.
i-CONICA
-1

Menurut pendapat saya, kemungkinan hilangnya data jauh melebihi kemungkinan kenaikan dalam RAM.

Selain itu, sudah lama sejak Unix dapat menukar memori ke disk ketika prosesnya tidak digunakan.

mouviciel
sumber
2
Satu masalah adalah bahwa ketika pengguna dimatikan, proses mereka mungkin tidak siaga. Mereka mungkin mengunyah CPU dan memori. Game tampaknya sangat buruk dalam hal ini.
Bennett McElwee
2
Pertanyaan menyebutkan istri, tetapi sebenarnya ada kasus yang lebih baik - ketika Anda memiliki anak yang telah melebihi batas waktu untuk hari itu dan hanya bermain game dan melakukan hal-hal lain yang tidak perlu diselamatkan. Sekarang Anda tidak hanya harus masuk sebagai anak tetapi menambahkan waktu hanya untuk keluar.
Michael
@Michael Itulah tepatnya kasus penggunaan saya . :)
Bennett McElwee