10. Kısım - Görev Zamanlama #
Giriş #
Linux, zamanlanmış görevler çalıştırmak için zengin bir özellik seti sunar. İyi bir sistem yöneticisinin temel niteliklerinden biri, işleri sizin yerinize bilgisayarın yapmasını sağlamaktır (bu bazen tembellik olarak yanlış yorumlanır!). İyi yapılandırılmış zamanlanmış görevler, sunucunuzun sorunsuz çalışmasını sağlamak için kritik öneme sahiptir.
Zaman tabanlı görev zamanlayıcı olan cron(8), Linux sistem yöneticileri tarafından en çok kullanılan araçtır. Unix System V’den bu yana büyük ölçüde aynı formda var olmuş ve yaygın olarak kullanılan standart bir sözdizimine sahiptir.
Tek seferlik görevleri zamanlamak için at kullanma #
Ubuntu’da iseniz, öncelikle at paketini yüklemeniz gerekecek.
sudo apt update
sudo apt install at
at
komutunu kullanarak gelecekte belirli bir zamanda çalışacak bir seferlik bir görev zamanlayacağız.
Öncelikle, terminalimizin standart girişe bağlı dosya adını yazdıralım (Linux’ta her şey bir dosyadır, terminaliniz bile!). Gelecekte bir noktada terminalimize bir mesaj göndereceğiz ve bu da bize at ile görev zamanlamanın nasıl çalıştığını gösterecek.
vagrant@ubuntu2204:~$ tty
/dev/pts/0
Şimdi, terminalimize 1 dakika içinde bir selamlama mesajı göndermek için bir komut zamanlayacağız.
vagrant@ubuntu2204:~$ echo 'echo "Merhaba $USER!" > /dev/pts/0' | at now + 1 minutes
warning: commands will be executed using /bin/sh
job 2 at Sun May 26 06:30:00 2024
Bir süre sonra, terminalde selamlama mesajı görüntülenmelidir.
...
vagrant@ubuntu2204:~$ Merhaba vagrant!
Tek seferlik görevler için at
kullanımı yaygın olmasa da, ihtiyaç duyduğunuzda artık nasıl yapılacağını biliyorsunuz. Bir sonraki bölümde, zaman tabanlı görevleri cron ve crontab kullanarak nasıl zamanlayacağımızı öğreneceğiz.
Daha derinlemesine bilgi için ek okumalar bölümündeki ilgili makalelere göz atın.
Görevleri zamanlamak için crontab kullanma #
Linux’ta, cron aracılığıyla zamanlanmış görevlerle etkileşimde bulunmak için crontab
komutunu kullanırız. Her kullanıcı, kök kullanıcı da dahil olmak üzere, kendi kullanıcı haklarıyla çalışan görevler zamanlayabilir.
Kullanıcınızın crontab dosyasını görüntülemek için:
vagrant@ubuntu2204:~$ crontab -l
no crontab for vagrant
Eğer daha önce bir crontab dosyası oluşturmadıysanız, muhtemelen henüz bir dosyanız olmayacaktır. Şimdi bir cron görevi oluşturarak nasıl çalıştığını anlayalım.
crontab -e
komutuyla ilk cron görevinizi oluşturun. Ubuntu’da, ilk kez bir crontab düzenliyorsanız bir düzenleyici seçmeniz istenecektir:
vagrant@ubuntu2204:~$ crontab -e
no crontab for vagrant - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /bin/ed
Choose 1-4 [1]: 2
Tercih ettiğiniz düzenleyiciyi seçin ve Enter tuşuna basın.
Dosyanın altına şu cron görevini ekleyin, ardından kaydedip çıkın:
* * * * * echo "Merhaba dünya!" > /dev/pts/0
NOT:
/dev/pts/0
dosya yolunun, yukarıdaki tty komutuyla görüntülenen yolla eşleştiğinden emin olun.
Yüklediğiniz crontab dosyasını tekrar görüntüleyin:
vagrant@ubuntu2204:~$ crontab -l
* * * * * echo "Merhaba dünya!" > /dev/pts/0
Bu cron görevi, her dakika terminalinize “Merhaba dünya!” mesajını yazacaktır. Birkaç dakika bekleyin ve çıktıyı inceleyin:
vagrant@ubuntu2204:~$ Merhaba dünya!
Merhaba dünya!
Merhaba dünya!
...
Görevi kaldırmak istediğinizde:
crontab -r
Crontab sözdizimini anlama #
Crontab sözdizimi şu şekildedir:
* * * * * çalıştırılacak komut
- - - - -
| | | | |
| | | | ----- Haftanın günü (0 - 7) (Pazar=0 veya 7)
| | | ------- Ay (1 - 12)
| | --------- Ayın günü (1 - 31)
| ----------- Saat (0 - 23)
------------- Dakika (0 - 59)
Kısa yollar için kullanılan operatörler:
Sembol | Açıklama |
---|---|
* | Joker karakter, tüm olası zaman aralıklarını belirtir |
, | Virgülle ayrılmış birden fazla değeri listeler |
- | İki sayı arasında aralık belirtir |
/ | Periyodik aralık belirtir |
Farklı ifadeleri denemek için crontab.guru sitesini kullanabilirsiniz.