# Zamanlanmış Görevler

### Cron

Cron, Linux işletim sistemlerinde komutları belirli aralıklarla otomatik olarak çalıştırmak üzere kullanılan standart bir yardımcı programdır. Her dakika cron servisi o dakika için zamanlanan bir komut olup olmadığını kontrol eder. Komut olması durumunda çalıştırılır. Cron ile sistem genelinde olduğu gibi kullanıcılar da yetkilerinin olması durumunda kendi zamanlanmış görevlerini tanımlayabilirler.

Sistem geneline ait işler `/etc/crontab` dosyasında tutulur. Bu dosyanın içeriği `cat` komutu ile görüntülenebilir.

```
cat /etc/crontab
crontab –l
```

Dosyanın içeriğinde bir zamanlanmış görevin nasıl yazılması gerektiğini gösteren aşağıdaki satır da yer alır.

```
# m h dom mon dow user command
```

| Kısaltma | İngilizce    | Türkçe        | Açıklama                                        |
| -------- | ------------ | ------------- | ----------------------------------------------- |
| m        | Minute       | Dakika        | 0-59 arası bir değer alır.                      |
| h        | Hour         | Saat          | 0-23 arası bir değer alır.                      |
| dom      | Day of Month | Ayın Günü     | 0-31 arası bir değer alır.                      |
| mon      | Month        | Ay            | 1-12 arası bir değer alır.                      |
| dow      | Day of Week  | Haftanın Günü | 0-7 arası bir değer alır. 0 ve 7 pazar günüdür. |
| user     | User         | Kullanıcı     |                                                 |
| command  | Command      | Komut         |                                                 |

Zamanlanmış bir görev yazılırken tarih ile ilgili sutünlara "\*" sembolü konularak, zamanlanmış görevin o alandaki her değer için çalıştırması sağlanır. Her bir sutün için "-" sembolü ile aralık, "," sembolü ile birden fazla değer ve "/" sembolü ile o işin periyodik olarak çalışacağı belirtilir.

### Örnekler

1. Her gün saat 12'de çalışacak zamanlanmış görev:

   ```
   00 12 * * * kullanıcı_adı komut_veya_betik_yolu
   ```
2. Her gün saat 8'de ve 14'de çalışacak zamanlanmış görev:

   ```
   00 8,14 * * * kullanıcı_adı komut_veya_betik_yolu
   ```
3. 10 dakikalık periyotlarla çalışacak zamanlanmış görev:

   ```
   */10 * * * * kullanıcı_adı komut_veya_betik_yolu
   ```
4. Hafta içi günler sabah 9 akşam 18 arası her saat çalışacak zamanlanmış görev:

   ```
   00 09-18 * * 1-5 kullanıcı_adı komut_veya_betik_yolu
   ```

Saatlik yapılan zamanlanmış görevler `/etc/cron.hourly` dizininde, günlük yapılan zamanlanmış görevler `/etc/cron.daily` dizininde, haftalık yapılan zamanlanmış görevler `/etc/periodic/weekly` dizininde, aylık yapılan zamanlanmış görevler `/etc/periodic/monthly` dizininde tanımlanır.

### Crontab

Yukarıdaki örnekler sistem genelinde kullanılan `/etc/crontab` dosyasında tanımlanarak yapıldı. İstenmesi durumunda her kullanıcı kendi zamanlanmış görevlerini `crontab` komutu ile yönetebilir.

1. -l paremetresi ile var olan zamanlanmış görevler listelenir.

   ```
   crontab -l
   ```
2. -e paremetresi ile zamanlanmış görevler düzenlenir.

   ```
   crontab -e
   ```

   *`crontab` komutu ile eklenen zamanlanmış görevler için kullanıcı belirtilmez, zamanlanmış görevi komutu çalıştıran kullanıcı çalıştırır.*
3. -u parametresi ile root kullanıcısı başka kullanıcılar için zamanlanmış görev ekleyebilir.

   ```
   crontab -e -u kullanıcı_adı
   ```

### Crontab'ın Yönetilmesi

1. `/etc/cron.allow` dosyası oluşturularak zamanlanmış görev kullanabilecek kullanıcılar belirtilir. Bu dosyada yer almayan kullanıcılar zamanlanmış görev oluşturamaz.
2. `/etc/cron.deny` dosyası oluşturularak zamanlanmış görev kullanamayacak kullanıcılar belirtilir. Bu dosyada yer alan kullanıcılar zamanlanmış görev oluşturamaz.

### at

at, Linux işletim sistemlerinde komutları belirli bir zamanda otomatik olarak çalıştırmak üzere kullanılan standart bir yardımcı programdır. Cron'un aksine tekrarlı işler için kullanılmaz.�


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.liman.dev/sistem-yonetimi/zamanlanmis-go-revler.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
