Her gün Mac OS X'te çalışacak bir komut dosyasını nasıl alabilirim?


Yanıtlar:


62

Başvuru için, tüm 3 seçenek işe yarayacak. Ancak, iCal seçeneğinin diğerlerinden daha fazla sınırlaması var.

(Cron'u düzenlemek ve diğer cevaplarda belirtildiği gibi lansman için GUI'ler var)

Cron en yalındır ve iyi bilinen ve mevcut birçok ders vardır. Coles Notes, son satırı aşağıdan crontab'ınıza eklemektir ( komut satırında düzenleyerek /etc/crontabveya kullanarak crontab):

MM HH DD MM WKD -- Minutes, Hour, Day, Month, Weekday (eg. Sun, Mon)
MM HH * * * USERNAME /PATH/TO/SCRIPT
00 3 * * * chealion /myscript.sh "Runs at 03:00 every day"

Mac OS X'te, cronaslında yerini almıştır, launchdancak yine de kullanabileceğiniz anlamıyla launchdgeriye doğru uyumludur, ancak aslında tüm işi yapmaktadır.croncronlaunchd

Kullanmak isterseniz launchdsiz de Super User burada başka sorular kontrol etmek istersiniz: (. Örn ? Ben root olarak launchd komutu nasıl çalıştırabilirim ) Eğer yapılandırma dosyası (Plist dosyası) kaydetmek istediğiniz yere kadar ne zaman çalıştığı, hangi dizinde depolandığına ve nasıl yüklendiğine (örn. sudo kullanıp kullanmamaya bağlı) bağlıdır - cron'a benzer.

Günlük çalıştırma pistinin çalıştırıldığı örnek bir çalışma (dosyanın ve etiketin aynı olduğundan emin olun - eksi etiketin eksi) - bu komut dosyası her gün gece yarısından sonra 3 dakika sonra çalıştırılır:

<?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>local.IDENTIFIER_HERE.SOMETHING</string>
    <key>KeepAlive</key>
    <false/>
    <key>RunAtLoad</key>
    <false/>
    <key>UserName</key>
    <string>USERNAME HERE</string>
    <key>Program</key>
    <string>/PATH/TO/SCRIPT</string>
    <key>ProgramArguments</key>
    <array>
        <string>Argument_1</string>
        <string>Argument_2</string>
    </array>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>00</integer>
        <key>Minute</key>
        <integer>03</integer>
    </dict>
</dict>
</plist>

Bilgisayar uykuda veya kapalıyken planlanmışsa, başlatılan görevlerin bilgisayarın yeniden kullanılabilir hale geldiğinde (açtıktan veya uyandıktan sonra) çalışacağını not etmek de önemlidir. olmuştur. Düzenleme: Makine kapalıysa, o zaman herhangi bir açılış olayını kaybedeceğinizi söyleyen bir Apple belgesindeydim (betiğiniz başlangıçta başlatılmayacak), (uyku uyanırken betiği başlatır)


Diğer bir seçenek ise " at " kullanmaktır ("man at" manüel sayfasını kontrol ediniz). Betik, örneğin:

echo "sh $0 $@" | at `date +%H:%M` tomorrow

(her 10 dakikada bir çalıştırmak için "yarın" yerine "+ 10 dakika" kullanın; zamanlamayı durdurmak için, zamanlanmış iş kimliklerini listelemek için "-l" yapın ve sonra işi kaldırmak için " -d id " yapın)

İlk önce karşılık gelen arka planını (atrun) başlatmanız gerekebilir (bkz. Https://superuser.com/a/43680 ):

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist

Avantajları: hızlı düzeltme, sudo / root erişimine gerek yok, karmaşık program kalıplarının yapması kolay Dezavantaj: OS X için standart programlama yöntemi değil (piyasaya sürüldü)


8
Efendim, örnek bir başlatma dosyası için sizi öpebilirim . Ama yapmam.
Paul D. Waite

5
launchdOS X altına girmenin yolu
zneak

Evet, bu benim izlenimdi. Tiger’da bazı sorunları olduğu anlaşılıyor, ancak Apple o zamandan beri netleştirmiş görünüyor.
Paul D. Waite

Os 10.7.4'te / etc / crontab dosyası yoktur. ): Ben de 'hangi crontab'ı yaptım ve bu bana / usr / bin / crontab'ı verdi, ama bu bozuk bir dosya.
Hermann Ingjaldsson,

@HermannIngjaldsson / usr / bin / crontab bir programdır; bir Terminalde çalıştırırsanız crontab -e, sizi kaydederken kişisel crontab'ınız olacak bir dosyadaki terminal tabanlı bir metin editörüne yönlendirir.
Mark Reed

8

LaunchControl launchd / launchctl için başka bir GUI'dir. Diğerleri tarafından belirtilen alternatifler günlük olarak bir senaryoyu mükemmel bir şekilde başlatabiliyor olsa da, LaunchControl ile karmaşık programları yapılandırabilirsiniz ("hafta içi her gün bir kez, hafta içi her saat 2 ile 20:00 arasında"). Ayrıca, işi gerçekten doğrulayan tek araç (AFAIK). Bir iş beklendiği gibi çalışmazsa, size neden olduğunu gösterecektir.

İstediğiniz kadar denemek için ücretsiz.


3
Denemek / kullanmak ücretsiz olsa da, geliştirici lisans için ödeme yapmayı tercih eder. sites.fastspring.com/somazone/product/shop
Kent

1
Kesinlikle. Bu cevabı ilk olarak göndermemin nedeni geliştiriciyi desteklemekti.
Mark Hall,


2
  • İCal için bu makaleyi okumak isteyebilirsiniz .
  • Bunun için crongoogle eğer yeterince öğretici bulmalısın .

İstediğinize göre değişir: iCal komut dosyaları yalnızca oturum açtıysanız cronçalıştırılır, komut dosyasını giriş yapmadan çalıştırır. Mac'in komut dosyası olması gereken zamanda açılmış olması durumunda, iCal'in bir komut dosyasını çalıştırıp çalıştırmadığını bilmiyorum. idam edildi. cronbunu yapıyor.



2

İşte plist XML oluşturmak için basit ve ücretsiz bir yardımcı program:

http://www.gieson.com/Library/projects/utilities/launcha/

Bu kullanım sayesinde bir program kurmanıza gerek kalmaz, sonuçları sadece Library / LaunchAgents klasörünüze kaydedin.


Uyarı: Bu aracı kullanıyorsanız, RunAtStartyanlış (false) olarak ayarlanmadığından emin olun . Finder'ımın neden donma ve masaüstünün açılışta yüklenmesini durduracağını bulmak için bir saat harcadım. Devre dışı bırakmak RunAtStart, sabit zamanlamaya engel olmaz.
Andrea Lazzarotto

1

Lingon'u her zaman bunun için kullanırım , ancak geliştirilmemiş gibi görünüyor. Crontooie'yi deneyebilirsin ama ben kişisel olarak hiç kullanmadım. Veya sadece terminaldeki crontab dosyasını düzenleyin.


Bana öyle geliyor ki Lingon aktif gelişme altında ; Geçerli sürüm 3, AppStore'da önceki sürüm 2 ile birlikte kullanılabilir. Her ikisi de birkaç dolara mal olur ve çok karışık yorumlar alır. Ben şahsen Lingon 3'ü bir miktar başarı ile kullanıyorum, ancak bu makaledeki amaç için başka cevaplarda (cron, at, vb.) Belirtilen diğer araçlar için tavsiye etmem.
ssc

Lingon'u en son kullandığımda 2 yıl önceydi. O zamanlar benim için iyi çalıştı, fakat son ayetleri kullanmadım. Çok kötü, bir zamanlar olduğu gibi güvenilir değil.
Josh


0
sp@mactop ~ $ crontab -l
*/5 * * * * /usr/local/bin/cinco.sh
sp@mactop ~ $ cat /usr/local/bin/cinco.sh
#!/bin/sh
....cut....
sp@mactop ~ $ 

... ".... kes ...." için attığınız komut satırları her beş dakikada bir çalışacaktır.

30 yıllık ilerleme ve 'cron' hala en sevdiğim programcı.

-C


0

Bir takvim etkinliği ihtiyaçlarınızı karşılıyorsa, yerleşik Automator uygulaması ayrıca takvim etkinlikleri tarafından tetiklenen Takvim Alarmları oluşturmanıza da olanak sağlar. İstediğiniz şeyi yapmak için yerleşik UI tabanlı işlemlerden bazılarını kullanabilir veya bazı uygulamaları veya özel AppleScript, JavaScript veya kabuk komut dosyalarını çalıştırmasını sağlayabilirsiniz.

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.