Bir uygulamayı önyükleme / giriş / başka bir zamanda otomatik olarak nasıl çalıştırabilir / durdurabilir / yeniden başlatabilirim?


42

Sistem önyüklendiğinde, kullanıcı oturum açtığında, belirli bir zamanda, bir disk takıldığında, vb.


3
Lingon sadece kullanıcı dostu başlatmak için .plist dosyalarını oluşturmak için yapmak için bir uygulama. Ayrıca birileri web tabanlı lansman
yarattı

Boo! plist.spotmac.de gitmiş görünüyor. :-(
docwhat

Yanıtlar:


44

Gui Yöntemi

Bir kullanıcı oturum açtığında çalışacak bir şey istiyorsanız, en kolay yol GUI'yi kullanmaktır. Yapabilirsin

  • System Prefs > Accounts > Login ItemsEkrana gidin ve öğeyi buraya ekleyin.
    • +sembolünü tıklatarak
    • .appbölmeyi sürükleyip bırakma
  • Bağlantı biriminde, bir uygulamanın içerik menüsünü açın, seçin Options, ardındanOpen at Login

Başlat yöntemi

Eğer olmayan bir şeyi başlatmak istiyorsanız .app, ya da onu başlatırken daha fazla kontrol sahibi olmak istiyorsanız, örneğin:

  • belirli bir zamanda veya belirli bir aralıkta
  • sürekli çöküyorsa tekrar başlatılıyor
  • kullanıcı girişi ile ilgili değil
  • ağ erişiminin bir fonksiyonu olarak
  • yalnızca başka bir işlem çalışırken
  • bir dosya bir klasöre eklendiğinde
  • vb.

o zaman ki teknik çözümü kullanmak istersiniz launchd.

Bir launchdyapılandırma dosyası oluşturmanın en kolay yolu , yardımcı olacak bir araç kullanmaktır. Yazma sırasında en popüler yöntem Lingon (SourceForge'dan daha eski ve ücretsiz bir sürümü olan) veya PList Web sitesi aracıdır.

El Kodlaması

Lingon veya PList Web Sitesini kullanmak istemiyorsanız ve sadece sistemdeki mevcut iş araçlarını kullanmak istiyorsanız, kendinizinkini launchd plistel ile yazabilirsiniz.

İşte sistem önyüklemesinden sonra sürekli olarak SomeApp'ı çalıştırmak için başlattığım komut dosyası (giriş yapan bir kullanıcıdan bağımsız). Bu / System / Library / LaunchAgents / içinde ve SomeApp.restart.plist olarak adlandırılır. Bir kullanıcı girişine göre çalıştırılırsa, ~ / Library / LaunchAgents / klasöründe saklanabilir.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>RunAtLoad</key>  
        <true/>
        <key>KeepAlive</key>
        <true/>
        <key>Label</key>
        <string>SomeApp.restart</string>
        <key>ProgramArguments</key>
        <array>
                <string>/path/to/SomeApp.app/Contents/MacOS/SomeApp</string>
        </array>
        <key>StartCalendarInterval</key>
        <dict>
            <key>Hour</key>
            <integer>5</integer>
            <key>Minute</key>
            <integer>10</integer>
       </dict>
</dict>
</plist>

Bir kez yükle

launchctl load ~/Library/LaunchAgents/SomeApp.restart.plist
  • RunAtLoadSeçenek ilk kez launchctl bu çalışan uygulamayı başlatacak.
  • KeepAliveÇökerse seçenek uygulamayı yeniden başlatacak.
  • StartCalendarIntervalBelli bir anda çalışacaktır. Muhtemelen bu, önceki ikisiyle karşılıklı olarak özeldir, ancak neler yapılabileceğini göstermek için dahil edilmiştir.launchd
  • Launchctl bunu yeniden başlattıktan sonra çalıştıracak.

Lingon deneyerek ya man sayfalarını okuyarak bulunabilir birçok ek seçenek vardır launchctl, launchd.plist, plist, launchd.conf, vb


Teşekkürler, gerçekten faydalı. launchctl load -w ...Değişikliği kalıcı yapmak için de kullanabilirsiniz . Geri bildiriminize dayanarak OSX poweruser configurator betiğimi
sorin

8

Lingon hala çalışıyor. Geçen hafta "planlanmış bir görev" oluşturmak için kullandım. İndirdikten sonra en son sürümü almak için otomatik güncelleyicisini kullanmak zorunda kaldım ancak iyi çalışıyor.


1
Lingon ayrıca şu anda App Store'da
user151019

1
Ancak ücretsiz, açık kaynak sürümünü bulmak için Sourceforge'dan çıkarmanız gerekir. En son ticari sürüm Leopard (10.5) üzerinde de çalışmıyor. Ancak 2.1.1 - bkz: sourceforge.net/projects/lingon/files/Lingon/2.1.1
nealmcb

7

Yalnızca sistem önyüklendiğinde çalıştırmak gerekliyse , Sistem tercihlerindeki Hesap Tercihleri ​​bölmesinin Giriş Öğeleri sekmesini kullanmanız yeterlidir .

alt metin

Bir komut dosyasıysa, bir uygulama olarak kaydetmek için AppleScript Editor'ı kullanın. Eğer bir AppleScript betiği değilse, betiği bu şekilde çalıştırmak için yine de AppleScript kullanabilirsiniz:

do shell script "your script here"


Huh? Bundan emin misin ? Ekran görüntüsünün kullanıcı arayüzünde "Giriş yaptığınızda bu öğeler otomatik olarak açılacak" diyor - sistemin önyükleme yapmasından farklı değil mi? Ayrıca, bağlantı 404. görünüyor
SSC

5

Loginhooks'u unutma.

Kök olarak çalışsalar da, böyle bir şey kullanarak $ HOME / .loginhook betiğini çalıştırabilmeniz gerekir:

#!/bin/sh

home=`eval echo ~$user`

if [ -x "$home/.loginhook" ]; then
    logger -t $0 "executing .loginhook of user $user"
    su - $user -c "$home/.loginhook"
fi

Sonra ~ / .loginhook istediğiniz komutları ekleyin

Ayrıca, 'launchd' 'Mac yolu' olsa da, crontab hala mükemmel bir seçenek olup, elle başlatmak için XML çalıştırma dosyalarından çok daha kolaydır.

Şahsen, mutlu bir şekilde Lingon için 5 dolar ödedim .


Yani kod bloğundaki komut dosyası /path/to/script, ve sudo defaults write com.apple.loginwindow LoginHook /path/to/script? Ve ev dizininde bir komut dosyası çalıştıran nokta her kullanıcı özel (veya hiç) sahip olmasıdır ~/.loginhook?
Lri

@Lri - evet, kesinlikle. Üzgünüm, net değildi. Blok kodu /usr/local/bin/loginhook.sh olabilir ve root tarafından çalıştırıldığı için bir kullanıcı oturum açtığında ve onu bu kullanıcı olarak çalıştırdığında $ HOME / .loginhook dosyasını arar.
TJ Luoma

4

Belirli bir zamanda bir uygulamayı çalıştırmak iCal'da kolayca yapılabilir, çünkü başka bir forum sayesinde şimdiden öğrendim!

  1. Uygulamanın açılmasını istediğiniz süre için iCal'da yeni bir etkinlik yapın.
  2. 'Uyarı' seçeneğinde 'Dosya Aç'ı seçin - böylece açılacak bir dosya belirleyebilirsiniz; bu, açık bir şekilde bu dosya türü için varsayılan uygulamayı da açacaktır.
  3. Bir dosyayı değil bir uygulamayı açmak için 'iCal' açılır menüsünü 'Diğer ...' olarak değiştirin ve çalıştırmak istediğiniz uygulamayı seçin!

Unutulmaması gereken bir şey, iCloud üzerinden bir şeyler paylaşan birden fazla Mac'iniz varsa, bu etkinliğin isteyebileceğiniz veya istemeyeceğiniz uygulamalarda da çalışacağıdır. Bunu yalnızca tek bir Mac'te yapmak için, etkinliği aşağıdaki gibi yapabileceğiniz bir 'Mac'imde' takviminde oluşturmanız gerekir ...

  1. Takvim adının üzerine gelip görünecek olan 'gizle' düğmesini tıklatarak sol çubuktaki diğer tüm iCloud'ları veya paylaşılan takvimleri gizleyin.
  2. Şimdi sağ tıklayın (veya tam bir kretiyseniz ve hala birden fazla parmağınızın olduğunu farketmediyseniz ve farenizin tercihlerini değiştirebildiğinden, klavyenin varsayılan 'kretli tuğla' durumundan biraz daha kullanışlı olması için Seçenek tuşuna tıklayın. ) ve 'Yeni Takvim'i seçin.
  3. Tüm paylaşılan takvimler gizlendiğinden, bu yeni takvim 'Mac'imde' olarak oluşturulacak ve bu Mac'te yerel olacaktır.

Bunu sadece kendim öğrendim ve her iki ipucundan da hoş bir sürpriz oldu, bu yüzden onları burada paylaşacağımı düşündüm.

Buradaki yararlı insanlardan bilgi aldım ... çok teşekkür ederim millet!

http://osxdaily.com/2013/04/15/launch-file-app-scheduled-date-mac-os-x/

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.