"Uyku 3600; oturum kapatma" gibi bir şey çalıştırmak istiyorum, ancak oturum kapatma bash komutu yalnızca geçerli terminali kapatır. Tam Mac OS X oturumunu nasıl kapatabilirim?
"Uyku 3600; oturum kapatma" gibi bir şey çalıştırmak istiyorum, ancak oturum kapatma bash komutu yalnızca geçerli terminali kapatır. Tam Mac OS X oturumunu nasıl kapatabilirim?
Yanıtlar:
Aşağıdaki Applescript geçerli kullanıcının oturumunu kapatır:
tell application "System Events" to log out
osascriptKomutu kullanarak bunu bir bash diğer adıyla kapatabilirsiniz :
alias maclogout="osascript -e 'tell application \"System Events\" to log out'"
"> Çıkış [kullanıcı adı] ..." seçeneğini tıklamakla aynıdır ve 2 dakikalık bir bekleyişten sonra çıkış yapacak
Bu sleepkomutla kolayca birleştirilebilir :
alias delayedlogout="sleep 3600; maclogout"
..ya da tek bir takma adda birleştirilebilir:
alias delayedlogout="sleep 3600; osascript -e 'tell application \"System Events\" to log out'"
alias maclogout="..."
Geçerli kullanıcıyı OS X'te Terminal'den çıkış yapmak için "hoş" bir yol yoktur. Bunu yapmanın 'dağınık' yolu, kullanıcının loginwindowişlemini öldürmektir . Kullanıcı adınız altında çalışan tüm işlemleri (programları) terbiyesizce öldürecektir.
Bunu yapmak iki aşamalı bir süreçtir.
Terminalde şunu çalıştırın:
ps -Ajc | grep loginwindow
O zaman koş
sudo kill <pid>
<pid>Yukarıdaki komuttan çıkan ilk sayı (ikinci sütun) nerede .
Bunu işe almak için yapmak zorunda olduğu süreci öldürmek zorlamak için sudo kill -9 kullanın.
Yani, örneğin, ilk komuta çıktı:
joshhunt 41 1 41 5e15c08 0 Ss ?? 3:13.09 loginwindow
Sonra koşar sudo kill 41, şifremi girer ve oturumu kapatırım.
Bu bir bash takma adı olarak birleştirilebilir:
alias messylogout="ps -Ajc | grep loginwindow | grep -v grep | awk '{print \$2}' | sudo xargs kill"
sudo killall loginwindowmısın? En azından 10.7'de bu loginwindowsüreç derhal tekrar açılıyor gibi görünüyor.
Bu eski bir soru olduğunu biliyorum ama bana yardımcı oldu, OS X 10.8 üzerinde gereken komut:
ps -Ajc | grep loginwindow | awk '{print $2}' | sudo xargs kill -9
awkİfadesi farklıdır ve kill -9olmasını sağlar giriş istemi gösterilir.
Ben Mac OS X 2 dakikalık bekleme olmadan zarifçe oturum kapatma için nasıl cevap bulduğumu düşünüyorum .
Shift, Option ve Command tuşlarını basılı tutup "q" tuşuna basmanın zarif bir şekilde oturumu kapatacağını ve "oturumu kapatmak isteyip istemediğinizi" sormayacağını anladım.
Bu yüzden Automator aracılığıyla bir AppleScript kodladım:
tell application "System Events"
keystroke "q" using {command down, shift down, option down}
end tell
Bir kabuğa mac'un gui'sinde oturum açmış kullanıcıyla oturum açtıysanız, sudo'suz bir komut verebilirsiniz: launchctl reboot logoutkullanıcının oturumunu oldukça etkili bir şekilde kapatır; çıkarken etkileşim istemekten vazgeçen uygulamalara izin vermeme uyarısına sahiptir, ancak bunun bir kill(SIG TERM) veya kill -9(SIG KILL) olabileceği gibi onları doğrudan öldürmekle aynı şey olduğu anlamına gelmez .
Ben OS X 10.9 sonrası "en güzel" yolu olabileceğini iddia ediyorum launchctl gui/$(id -u <username>) bootout
Launchctl için OS X 10.9 sonrası belgeler çalıştırılarak bulunur launchctl help, ancak esasen yukarıdaki komut bir kullanıcının geçici oturumunu yıkacaktır . Alternatif launchctl user/$(id -u <username>) bootout, kullanıcı oturum açmamışken kullanıcı artalan süreçlerini çalıştıran kalıcı oturumu ortadan kaldırır.
Bu çalıştırılarak test edilebilir launchctl gui/$(id -u) bootout, bu hemen oturumunuzu kapatır ve sistemin giriş penceresini görüntülemesine neden olur (biraz gecikmeyle).
sudo launchctl bootout gui/XXXyerdir XXX. İ) bootoutalt komutun önce geldiğini ve ii) $(id)UID'den çok daha fazlasını döndürdüğünü unutmayın.
Terminalinize eklemek için güzel bir yardımcı program , aşağıdaki gibi kullanılacak çıkış komutudur:
logout UserName
İşte nasıl yapılır:
.Bash_profile dosyanızı düzenleyin
nano ~/.bash_profile
Bu satırı ekle:
logout() {sudo launchctl bootout user/$(id -u "$1")}
Tuşuna basarak dosyayı kaydedin ctrl+x
Terminali yeniden başlatın
Gitmeye hazırsın ;)