OS X'te oturum açma / oturum kapatma işleminde komut dosyası nasıl çalıştırılır?


10

Özel bir render çiftlik yöneticisi oluşturmakla uğraşıyorum ve kullanılmadığında render çiftliğine otomatik olarak OS X makineleri eklemek istiyorum.

Herhangi bir kullanıcı oturumu kapattıktan sonra bir komut dosyasını çalıştırmanın ardından herhangi bir kullanıcı oturum açtığında durmanın bir yolu var mı?

Yanıtlar:


10

OS X'te oturum açma / oturum kapatma'da komut dosyalarını çalıştırmanın birkaç yolu vardır , bazıları daha yenidir ve sadece 10.5 ve üstü için geçerlidir, bazıları oldukça kullanım dışıdır, ancak en hızlı olanı bir eklemek olacaktır Login Hook.

İlk olarak, çalıştırmak istediğiniz komut dosyasını oluşturun. Bir Terminal açın ve şunu girin:

touch ~/script.sh
open -e !$

Bu bir metin editörü açacaktır. Komut dosyasını girin, örneğin aşağıdaki içeriklerle:

#!/bin/sh
# insert your script here

Dosya 'yı kaydet. Terminalinizde şunları çalıştırın:

chmod +x ~/script.sh

Bu dosyayı yürütülebilir hale getirir. Şimdi bir kanca olarak ekleyelim:

sudo defaults write com.apple.loginwindow LoginHook /usr/local/bin/script.sh 

Bir de Logout Hookmuadili var:

sudo defaults write com.apple.loginwindow LogoutHook /usr/local/bin/script2.sh

Ben OS X 10.6 üzerinde test ettik ve bu gerektiği kadar bile 10.8 çalışıyoruz. Komut dosyasının şu şekilde çalıştığını rootve giriş ve çıkış için tek bir kanca bulunduğunu unutmayın .

Tüm bunları geri almak için şunu girin:

sudo defaults delete com.apple.loginwindow LoginHook
sudo defaults delete com.apple.loginwindow LogoutHook

Bu yöntemin dağıtım veya başka bir şey için önerilmediğini unutmayın, ancak yalnızca belirttiğiniz soru gibi kullanıyorsanız, sorun olmamalıdır.


yosemite için çalışmıyor
davidcondrey

5

Giriş kancaları 10.4'te fırlatma lehine kullanımdan kaldırıldı. Oturum açmada bir komut dosyası çalıştırmak için, bunun gibi bir plist kaydedin ~/Library/LaunchAgents/test.plist. Çalışmasanız bile bir sonraki girişe yüklenir launchctl load ~/Library/LaunchAgents/test.plist.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>test</string>
    <key>ProgramArguments</key>
    <array>
        <string>say</string>
        <string>test</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

Daha fazla bilgi için bkz man launchd.plistve bu blog yayınında .


Bağlantılı blog gönderisine göre, bu ilk girişinizde plist'i yükleyecek ve sistem yeniden başlayana kadar yüklü kalacaktır. Her girişte bir komut dosyası çalıştırmak için launchd'ı nasıl kullanırsınız? Yoksa çıkışta mı?
ShadSterling

-1

Bu kancaların 10.10'da çalışması için bunu yapmanız gerekir:

  1. /etc/ttysDosyayı açın : Finder'da, Git menüsünden Klasöre Git'i seçin, yazın ve Git'i /etc/tıklatın.

  2. Ortaya çıkan pencerede, ttysdosyayı tercih ettiğiniz metin düzenleyicisinde (TextEdit gibi) açın.

  3. Şu metni içeren bir satır arayın:

    console "/System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow" vt100 on secure window=/System/Library/CoreServices/WindowServer onoption="/usr/libexec/getty std.9600"

  4. Bu satırı aşağıdaki şekilde okunacak şekilde düzenleyin (bu satırda boşluk yok):

    console "/System/Library/CoreServices/loginwindow.app/Contents/MacOS/loginwindow -LoginHook /path/to/script" vt100 on secure window=/System/Library/CoreServices/WindowServer onoption="/usr/libexec/getty std.9600"

    yani ekleyin (burada sadece ikinci alıntı (önce bir kullanıcı oturum açtığında yürütmek istediğiniz komut tam yoludur) ) işareti.-LoginHook /path/to/script/path/to/script"

  5. Dosya 'yı kaydet.

Bu dosyayı düzenlemek için kullandığınız metin düzenleyicinin yukarıdaki satırı birden fazla satıra bölmediğinden emin olun.


veya tam talimatları burada uygulayın:

http://support.apple.com/en-ca/HT2420


yosemite için çalışmıyor
davidcondrey
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.