OS X'te bir komut dosyasının önyükleme zamanında çalıştırılmasının en kolay yolu nedir?


12

OS X'te önyükleme zamanında çalıştırmak için bir komut dosyası (bash / zsh / ruby ​​/ ...) istiyorum. Bunu yapmanın en basit yolu nedir, xml / plist dosyalarıyla uğraşmadan ve tercihen meta AppleScript yapmaya gerek yok .

Yanıtlar:


7

MacOS X, yeniden başlatma zamanında başlatmak için özel meta etiketlere sahip Vixie cron'u kullanır. Dosya biçimi için kılavuz sayfasına bakın .

gibi bir şey:

@reboot /path/to/script.sh

crontab'ınızda çalışır. Bunun launchd'den daha iyi bir çözüm olduğundan emin değilim, muhtemelen launchd'a cron'dan bakan daha fazla meta aracınız var.


Aşk, bana yanlış olduğunu kanıtladı :-) cronOS X varsayılan olarak giriş ile o kadar iyi olmasa da (sadece birkaç gün önce bir konu vardı).
Daniel Beck

bu harika.
John Bachir

1
Cron, at ve benzerlerinin OS X'te bir dereceye kadar kullanımdan kaldırıldığını unutmayın. Çeşitli belgelerde bunun açık bir ifadesini bulamıyorum ya da ne kadar agresif bir şekilde kullanımdan kaldırıldıklarını bilmiyorum, ancak launchd genellikle tercih ediliyor gibi görünüyor. Giriş için fırlatma belgelerine bakın .
Norman Gray

plist benim için çalışmaz - bu bir cazibe gibi çalışır - teşekkür ederim! :-D
BG Bruno

Dürüst olmak gerekirse OS X'de sözdiziminin aynı olup olmayacağından emin
değildim

6

Fikrinizi değiştirmeniz durumunda:

<?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>com.superuser.245713</string>
    <key>ProgramArguments</key>
    <array>
        <string>/path/to/script.sh</string>
    </array>
    <key>UserName</key>
    <string>someuser</string>
</dict>
</plist>

Olarak saklayın com.superuser.245713.plistiçinde /Library/LaunchAgents/ve yapmak root:wheelsahibi / grubun.


1
OS'ye özgü şeyler olduğundan /Library/LaunchAgentsziyade koymak daha iyidir ve altındaki kişi üçüncü taraf şeyler için daha fazla kullanılır. Ayrıca, "kök olarak çalışacak öğeler, genellikle arka plan işlemleri" olmalıdır, burada "kullanıcı olarak veya kullanıcı ülkesi bağlamında". Bu alıntıların kaynağı , fırlatma soruları için danıştığım fırlatma hakkında harika bir makale . /System/Library/LaunchDaemons/System/LibraryLaunchDaemonsLaunchAgents
Doug Harris

@DougHarris Öneriler için teşekkürler! İtiraf etmeliyim ki, sadece bu ad-hoc yazıyorum - genellikle çözümlerimi test ederken, bunun için makinemi yeniden başlatmak istemiyordum.
Daniel Beck

Vixie cron çözümünü daha iyi sevmeme rağmen bu çok güzel :)
John Bachir

Aslında, / Library / LaunchDaemons içine konmalıdır. Aracılar yalnızca bir kullanıcı oturumu içinde çalışır, yani birisi oturum açana kadar çalışmazlar (veya daha kesin olarak yayınlanmaya uygun hale gelmezler), her oturum açtığında tekrar çalışır ve her zaman oturum açmış kullanıcı olarak çalışırlar. Daemons, önyükleme sırasında çalışır (/ çalışmaya uygun hale gelir) ve normalde root olarak çalışırken, UserName anahtarıyla başka bir kullanıcı olarak çalıştırılabilir.
Gordon Davisson


2

Ayrıca, bir kullanıcı oturum açtığında makinenin önyüklemesi yapmak yerine komut dosyasının çalışmasını (kök olarak) tercih ediyorsanız Oturum Açma Kancaları da vardır .

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.