Pardus Linux’ta cron, sistem yöneticilerinin ve paketlerin belirli işleri otomatik ve düzenli olarak çalıştırmasını sağlar. Okul ortamlarında cron;
gibi kritik görevler için vazgeçilmezdir.
1️⃣ Cron Mimarisi – Büyük Resim
Pardus’ta cron sistemi iki ana yapı üzerinden çalışır:
2️⃣ /etc/cron.hourly/
⏱ Saatlik Görevler
📌 Kullanım Alanı
🧪 Örnek: Saatlik Disk Kontrolü
3️⃣ /etc/cron.daily/
📆 Günlük Görevler
📌 Okul Senaryosu
🧪 Örnek: Öğrenci Temp Temizliği
4️⃣ /etc/cron.weekly/
📅 Haftalık Görevler
📌 Örnek Kullanım
-
Samba AD yedekleri
-
Haftalık raporlama
5️⃣ /etc/cron.monthly/
🗓 Aylık Görevler
📌 Örnek
6️⃣ /etc/cron.d/
🎯 Profesyonel ve Paket Dostu Cron Alanı
En kritik dizin burasıdır
🔑 Özellikleri
-
Dosya içinde zaman + kullanıcı tanımlanır
-
Paketler bu dizini kullanır
-
Kurumsal yapı için en doğru tercih
📄 Dosya Formatı
🧪 Örnek: ETAP Tahtaları Otomatik Kapatma
📌 Hafta içi her gün saat 17:00’de kapanır
7️⃣ TSOMTAL Özel Senaryoları
🎓 Öğrenci Bilgisayarları – Gece Kapanış
👨🏫 Öğretmen Bilgisayarları – Geç Kapanış
Bu ayrımı Samba AD grup kontrolü + script ile yapabilirsiniz.
8️⃣ Cron Logları Nerede?
veya
📌 Sorun giderme için hayati
9️⃣ Cron vs systemd timer (Kısa Karşılaştırma)
| Özellik | cron | systemd timer |
|---|
| Basit işler | ✅ | ⚠️ |
| Paket uyumu | ✅ | ❌ |
| Kurumsal yönetim | ⚠️ | ✅ |
| Log takibi | Orta | Çok iyi |
👉 Geleneksel bakım işleri → cron
👉 Modern kapanma / açılma senaryoları → systemd timer
🔐 Güvenlik Notları
-
/etc/cron.* içindeki dosyalar root yetkisiyle çalışır
-
Script içinde tam yol kullanın (/usr/bin/rm)
-
Kullanıcıdan veri alan script yazmayın
📌 Sonuç
-
/etc/cron.hourly → hızlı kontroller
-
/etc/cron.daily → günlük bakım
-
/etc/cron.weekly → sistem yedekleri
-
/etc/cron.monthly → arşivleme
-
/etc/cron.d → kurumsal ve profesyonel kullanım
Aşağıya Samba AD grup bazlı cron çalıştırma + ETAP 23 için hazır cron paket yapısını, doğrudan okul ortamında kullanabileceğiniz şekilde “kopyala-çalıştır” mantığıyla verdim. (Pardus 23.x / Debian tabanlı)
1) Samba AD Grup Bazlı Cron Çalıştırma
Cron satırında doğrudan “şu AD grubundaysa çalıştır” diye bir özellik yok. En sağlam yöntem:
-
Cron tek bir komut çalıştırır (root)
-
Komut bir wrapper (sarmalayıcı) script olur
-
Script, aktif kullanıcıyı/oturumu bulur
-
O kullanıcı AD grubunda mı? kontrol eder
-
Şart sağlanıyorsa asıl işi çalıştırır
1.1. Gerekli paketler
Not: Siz zaten Samba AD domain’e katılıysanız çoğu kurulu olabilir.
1.2. ETAP cihazda “aktif kullanıcıyı” bulma (grafik oturum)
ETAP’ta çoğu zaman tek aktif oturum olur. Aşağıdaki yöntem pratik:
Biz bunu script’e gömeceğiz.
1.3. Grup kontrol scripti (wrapper)
/usr/local/sbin/tsomtal-cron-ifingroup oluşturun:
İçeriği:
Yetki verin:
Grup adı nasıl seçilecek?
Samba AD’de örnek:
-
ETAP_OGRETMEN
-
ETAP_OGRENCI
id -nG kullanıcıadı çıktısında gördüğünüz grup ismini aynen kullanın.
1.4. Cron.d ile kullanım örnekleri
✅ Öğretmen grubuna özel (örnek: akşam geç kapanma)
✅ Öğrenci grubuna özel (örnek: erken kapanma)
2) ETAP 23 için Hazır Cron Paket Yapısı (TSOMTAL Şablonu)
Aşağıda .deb paket gibi dağıtabileceğiniz “kurumsal şablon” yapıyı veriyorum. Mantık:
-
Script’ler /usr/local/sbin/ veya /usr/share/tsomtal-cron/
-
Cron tanımları /etc/cron.d/
-
Paket kurulumunda otomatik izinler, log dizinleri, vs.
2.1. Dizin yapısı
Bir çalışma klasörü açın:
2.2. DEBIAN/control
2.3. Wrapper script’i pakete koyma
Mevcut wrapper’ı kopyalayın:
2.4. Cron tanımlarını paket içine koyma
Öğrenci politikası
Öğretmen politikası
2.5. Postinst (kurulum sonrası)
Yetki verin:
2.6. Paketi derleme
Çıktı:
Kurulum:
3) Hızlı Test ve Doğrulama
Cron dosyaları okunuyor mu?
Cron servis logları
Wrapper test
Aktif kullanıcı öğretmense:
4) ETAP Sahada Pratik Öneri (çok önemli)
Akıllı tahtalarda “kapanış” kritik iş olduğu için, cron yerine systemd timer daha güvenilir log ve hata takibi sağlar. Ama siz “paket uyumu ve basit dağıtım” istiyorsanız cron.d yaklaşımı çok iyi.
-
✅ Tek cron dosyasıyla önce öğretmen grubunu kontrol edip değilse öğrenci kapanışı uygulayan “öncelik mantığı”
-
✅ Hafta sonu farklı saat, tatil günleri “çalışma”
-
✅ Samba AD OU’ya göre cihaz politikası (ör. Lab-1 erken kapanır, Öğretmenler Odası geç kapanır)
Aşağıdaki çözüm tek bir /etc/cron.d dosyası ile çalışır; karar mantığını tek bir policy script içinde toplar:
-
Öncelik: Aktif oturum öğretmen grubundaysa öğretmen saatleri → değilse öğrenci saatleri
-
Hafta sonu farklı saatler
-
Tatil günleri: OU profiline göre çalış / çalışmasın
-
Cihaz OU’suna göre politika: (Lab-1 erken kapanır, Öğretmenler Odası geç kapanır vb.)
-
OU tespiti: AD’de bilgisayar hesabının distinguishedName (DN) bilgisini LDAP ile çekip OU’yu çıkarır.
Varsayım: İstemciler domain’e katılı (SSSD/realmd veya winbind). LDAP sorgusu için Kerberos (GSSAPI) kullanıyoruz.
1) Gerekli paketler
2) Tatil listesi dosyası
Tatil günlerini bu dosyaya koyacağız:
Örnek içerik (YYYY-MM-DD):
İsterseniz MEB tatillerini “okul takvimi”ne göre buraya ekleyebilirsiniz.
3) OU tabanlı + grup öncelikli policy script
Aşağıdaki script’i aynen yapıştırın:
OU eşleştirmeyi genişletmek için
Script’teki şu bloğu çoğaltmanız yeterli:
4) Tek cron.d dosyası
İçerik:
Cron’u yenileyin:
5) Kontrol / Log
OU sorgusu neden bazen çalışmayabilir?
Cron ortamında Kerberos ticket yoksa ldapsearch -Y GSSAPI DN çekemeyebilir. Bu durumda iki pratik seçenek:
-
Makine hesabıyla bind (LDAP bind kullanıcı/parola) — güvenli saklama gerekir
-
OU’yu “cihaz etiketi” olarak /etc/tsomtal/device.profile dosyasına yazıp LDAP’ı devre dışı bırakmak (en stabil)
Yorumlar