Windows 10 ve 11'de Cron'u WSL'de Otomatik Olarak Başlatma
Yayınlanan: 2022-01-29Windows'un görevleri otomatikleştirmenin birkaç yolu vardır. En yaygın araç Windows Görev Zamanlayıcı'dır, ancak Linux için Windows Alt Sistemini (WSL) kullanıyorsanız, WSL yüklemeniz için arka planda görevleri çalıştıran cron arka plan programı da vardır.
Cron Varsayılan Olarak Çalışmıyor
Windows 10 ve Windows 11'de cron, Ubuntu gibi Linux ortamlarıyla birlikte gelir. Sorun şu ki, WSL cron'u otomatik olarak başlatmaz, bu da otomatikleştirilmiş görevlerinizin varsayılan olarak yürütülmediği anlamına gelir.
Bunu düzeltmek için, komut satırını her açtığınızda cron'u manuel olarak başlatabilirsiniz, ancak görevleri otomatikleştirmesi gereken bir aracı manuel olarak başlatmak bu noktayı kaçırıyor.
Neyse ki, bunu düzeltmenin kolay bir yolu var ve bunun için Görev Zamanlayıcı'nın kullanılması gerekiyor.
Görevleri çalıştırmak için Linux'ta hiç cron kullanmadıysanız, Linux'ta görevlerin nasıl zamanlanacağıyla ilgili önceki eğitimimize bakın. Buradaki amaçlarımız için, WSL kurulumunuzda zaten bazı cron işleri oluşturduğunuzu ve her zaman cron bakıcılığı yapmak yerine çalıştıklarından emin olmak için yardıma ihtiyacınız olduğunu varsayacağız.
Bu eğitimde, WSL için en popüler dağıtım olan Ubuntu'nun modern yapılarında hizmetleri durdurmak ve başlatmak için önerilen yol olan cron'u kontrol etmek ve başlatmak için sudo service
kullanacağız.
Ayrıca, bu öğreticinin WSL sürümünüz üzerinde yönetici haklarına sahip olduğunuzu varsaydığını unutmayın. Bilgisayarınızın tek kullanıcısıysanız ve WSL'yi kendi başınıza etkinleştirdiyseniz, yönetici haklarına sahipsiniz.
İpucu: Bu, yalnızca Windows 10'da değil, Windows 11'de Linux için Windows Alt Sisteminde de çalışır.
İLGİLİ: Linux'ta Görevler Nasıl Planlanır: Crontab Dosyalarına Giriş
Linux'u hazırlayın
Yapmamız gereken ilk şey, bilgisayarın cron'u parola olmadan başlatmasına izin vermek. cron gibi bir hizmeti başlattığınızda, sudo service cron start
komutunu kullanırsınız. Ancak bu komut, başladığında Windows'un erişemeyeceği bir parola gerektirir. Bunu aşmanın yolu, bu komut için parola gereksinimini kapatmaktır.
Bunu yapmak için WSL terminal pencerenizi açın ve sudo visudo
yazın. Klavyenizde Enter tuşuna basın, Linux şifrenizi girin ve tekrar Enter tuşuna basın. Ubuntu kullanıyorsanız, bu, yeni başlayanlar için uygun Nano komut satırı metin düzenleyicisini kullanarak "sudoers" dosyasını açar. Sudoers, sistem yöneticileri için, kullanıcıların ayrıcalıklarını ve erişim haklarını değiştirebilen bir dosyadır.
Sudoers dosyasının en altına aşağıdaki komutu ekleyin ve ardından kaydetmek için Ctrl+o ve dosyadan çıkmak için Ctrl+x tuşlarına basın.
%sudo ALL=NOPASSWD: /usr/sbin/service cron start
Bu sudoers komutu, sudo komutunu (sizi içermesi gereken) kullanmak için yeterli ayrıcalığa sahip herhangi bir kullanıcının, cron arka plan programını başlatan sudo service cron start
komutunu çalıştırmak için bir parola gerektirmediğini söyler.
Dosyayı kaydettikten sonra, sudo service cron start
yazarak komutun işini yapıp yapmadığını kontrol edebilirsiniz ve bir parola sormadan cron'u başlatması gerekir. Bu işe yaradıysa, bir sonraki adımda oluşturduğumuz görevin düzgün çalışıp çalışmadığını test edebilmemiz için cron'u tekrar kapatalım. Bunu yapmak için lütfen sudo service cron stop
çalıştırın.
Windows Görev Zamanlayıcı'da Cron'u Ayarlayın
Bu, cron otomasyonuna doğru yolculuğumuzun birinci aşaması. Görev Zamanlayıcı ile 2. bölüme geçelim. Klavyedeki Windows tuşuna dokunun ve ardından “Görev Zamanlayıcı”yı arayın. “Görev Zamanlayıcı” kısayolunu başlatın.
Başladığında, "Eylemler" bölümünün altına bakın ve "Temel Görev Oluştur"u seçin.
Bu, Temel Görev Sihirbazını açar. İlk olarak, sizden görevi adlandırmanızı ve bir açıklama vermenizi isteyecek. Buraya istediğinizi girebilirsiniz. Göreve "cron" adını verdik ve açıklaması "Sistem başlangıcında cron'u başlatmak için bir görev" şeklindedir. Şimdi, "İleri" ye basın.
Aşağıdaki bölümde, işe başlıyoruz. İlk olarak, Windows görevi ne zaman çalıştırmak istediğimizi bilmek ister. “Bilgisayar Başladığında” radyo düğmesini seçin ve “İleri” ye tıklayın.
Bir sonraki bölümde “Bir Program Başlat” istiyoruz. Bu seçenek varsayılan olarak seçilidir, bu nedenle "İleri"yi tıklayın.
Şimdi, çalıştırmak istediğimiz programı WSL olan belirlememiz gerekiyor. “Program/Script” metin giriş kutusuna şunu girin: C:\Windows\System32\wsl.exe
Ayrıca bazı argümanlar eklememiz gerekiyor, çünkü şimdiye kadar yaptığımız tek şey WSL'yi başlatmak, ancak WSL içinde Ubuntu'ya cron'u başlatmasını söylememiz gerekiyor. Bu nedenle, "Argüman Ekle" kutusuna şunu ekleyin: sudo /usr/sbin/service cron start
Bir kez daha "İleri" ye basın, "Son'a Tıkladığımda Özellikler İletişim Kutusunu Aç" yazan kutuyu işaretleyin ve ardından "Bitir" e tıklayın.
Görev oluşturuldu, ancak her şeyin çalıştığından emin olmak için son bir şey yapmalıyız. Oluşturduğunuz görevin özetini gösteren yeni bir pencere açılacaktır, ancak bu yalnızca oturum açtığınızda çalışacak şekilde ayarlanmıştır. “Kullanıcı Oturum Açsa da Açmasa da Çalıştır” yazan radyo düğmesini seçip “Tamam” a basmamız gerekiyor.
Şimdi görevimizi iki şekilde test edelim. İlk olarak, Görev Zamanlayıcı'nın ana penceresinde görev adınızı görene kadar aşağı kaydırın. "Cron" adını kullandıysanız, listenin en üstünde bulunmalıdır. Göreve sağ tıklayın ve “Çalıştır”ı seçin.
Ardından, WSL terminalinize geri dönün ve sudo service cron status
yazın ve cron'un çalıştığını söylemelidir. Değilse, önceki adımlarda her şeyi doğru girdiğinizden emin olun.
İlk kontrolde her şey düzgün çalıştıysa, büyük testin zamanı geldi. Bilgisayarınızı yeniden başlatın ve geri döndüğünüzde, bir WSL terminali açın ve sudo service cron status
komutunu çalıştırın; bu, cron'un şu anda çalıştığını bildirmelidir.
Tebrikler! Daha büyük, otomatikleştirilmiş bir dünyaya ilk adımınızı attınız. Arka planda çalışan cron ile WSL'de yapılandırdığınız cronjobs otomatik olarak programa göre çalışır.