Windows Görev Zamanlayıcı ile program ve betik çalıştırma (açılışta, saatlik)

RDP ve Windows Sunucu 71 görüntülenme Markdown

Bir programınızın (bir bot, bir veri toplama betiği, bir yedekleme komutu) sunucu yeniden başladığında kendiliğinden çalışmasını ya da belirli saatlerde tekrarlanmasını istiyorsunuz. Windows'ta bunun yolu Görev Zamanlayıcı'dır (Task Scheduler). Linux'taki cron'un karşılığıdır ve en önemli özelliği kimse oturum açmadan da çalışabilmesidir.

Arayüzle görev oluşturma

  1. Başlat menüsünde Görev Zamanlayıcı'yı açın. Sağdan Görev Oluştur'u seçin (Temel Görev Oluştur değil; ikincisinde önemli seçenekler yoktur).
  2. Genel sekmesinde bir ad verin. İki seçenek çok önemlidir:
    • Kullanıcı oturum açmış olsa da olmasa da çalıştır: RDP oturumunuzu kapatsanız bile görev çalışmaya devam eder. Bunu seçince görev için parolanızı girmeniz istenir.
    • En yüksek ayrıcalıklarla çalıştır: Yönetici yetkisi gereken işler için.
  3. Tetikleyiciler sekmesinde Yeni: "Başlangıçta" (sunucu açılınca) ya da "Zamanlamaya göre" (günlük, saatlik). Tekrarlama için "Görevi şu aralıkta tekrarla" kutusunu işaretleyin.
  4. Eylemler sekmesinde Yeni > Program başlat. Program/komut alanına çalıştırılacak dosyanın tam yolunu yazın (C:\botlar\baslat.bat). "Başlangıç yeri" alanına programın klasörünü yazın; birçok program göreli dosya yollarını buradan çözer.
  5. Koşullar sekmesinde "Görevi yalnızca bilgisayar AC gücü varsa başlat" gibi kutuların işaretli olmadığından emin olun (sunucuda ilgisiz ama bazen varsayılan işaretli gelir).
  6. Ayarlar sekmesinde "Görev başarısız olursa yeniden başlat" ile deneme sayısı ve aralığı verebilirsiniz.

Komutla

Aynı işi yönetici Komut İstemi'nde tek satırla yapabilirsiniz:

schtasks /Create /TN "Bot Baslat" /TR "C:\botlar\baslat.bat" /SC ONSTART /RU SYSTEM /RL HIGHEST /F

/SC ONSTART sunucu açılışında, /RU SYSTEM sistem hesabıyla (parola gerekmez) çalıştırır. Her gün 04:30 için: /SC DAILY /ST 04:30, her 15 dakikada bir için: /SC MINUTE /MO 15. Görevi elle çalıştırmak ve durumu görmek için:

schtasks /Run /TN "Bot Baslat"
schtasks /Query /TN "Bot Baslat" /V /FO LIST

Sık sorunlar

  • Görev "çalışıyor" ama hiçbir şey olmuyor: Göreli yol kullanıyorsunuzdur. Dosya yollarını tam yazın ve "Başlangıç yeri" alanını doldurun.
  • "Son çalıştırma sonucu: 0x1": Program kendisi hata verdi. Çıktıyı bir dosyaya yönlendirip bakın: baslat.bat >> C:\botlar\gunluk.txt 2>&1.
  • Ekran gerektiren program (pencereli): "Kullanıcı oturum açmış olsa da olmasa da çalıştır" seçilince pencere görünmez. Pencereli uygulamalar için "Yalnızca kullanıcı oturum açtığında çalıştır" seçmek ve sunucuyu otomatik oturum açacak biçimde ayarlamak gerekir: MetaTrader örneği.
  • Parola değişti, görev çalışmıyor: Görevin kayıtlı kullanıcı parolası eskidir; görevi açıp parolayı yeniden girin ya da SYSTEM hesabını kullanın.

Programın çökünce kendiliğinden yeniden başlaması için "Görev başarısız olursa yeniden başlat" ayarını kullanın. Uygulamayı gerçek bir servis olarak çalıştırmak daha sağlam bir çözümdür: 7/24 çalıştırma. Windows sunucu paketleri: Windows VDS.

Sık sorulanlar

Görev Zamanlayıcı ile cron arasındaki fark ne?

İşlev aynıdır; Windows'ta arayüzle tanımlanır ve oturumla ilişkisi vardır. Linux'taki karşılığı için cron makalesine bakın.

SYSTEM hesabıyla çalıştırmak güvenli mi?

SYSTEM çok yetkili bir hesaptır. Betiğinizin güvenilir olduğundan emin olun; genel kural: işi görecek en düşük yetkili hesabı seçin.

Görev çalışmadan kaç dakika gecikmeyi tolere eder?

Gecikmeye bağlı bir ayar vardır: Ayarlar sekmesinde "Zamanlanmış başlangıç kaçırılırsa görevi en kısa sürede çalıştır" kutusunu işaretleyebilirsiniz.

İlgili makaleler

Sorununuz çözülmediyse destek talebi açın. Hangi adımı denediğinizi ve ekranda ne gördüğünüzü yazarsanız çözüm çok daha hızlı olur.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.