crontab kullanımı

crontab dosyası ve crontab komutu belirli aralıklarla çalıştırmak istediğiniz komutların, uygulamaların çalıştırılmasını otomatize eden bir dosya ve ilgili komuttur. crontab komutu -l, -r, -i, -e, -u takılarını alır. Takılar:

-u : Komutun etki edeceği kullanıcıyı belirler. -u takısı verilerek kullanıcı belirtilmezse, komutu giren kullanıcının crontabına etkir.

-l : Kullanıcının crontabını listeler.

-r : Kullanıcının crontabını siler. Dikkat! Onay beklemez.

-i : -r takısını modifiye ederek, komutun onay beklemesini sağlar.

-e : crontab  dosyasına yeni satır ekler. Bunun için VISUAL ve EDITOR çevresel değişkenlerine bağlı olarak değişebilen bir editörle geçici bir dosya oluşturur. Değişiklikler tamamlandıktan sonra, dosyayı save etmeniz durumunda, ilgili satırlar crontab’ a yüklenir.

-u ile diğer takıları kombine kullanarak, farklı kullanıcıların cron işlerini de düzenleyebilirsiniz. Örneğin;

$ crontab -u asterisk -l

$ crontab -u asterisk -ir

gibi.

-e takısını kullanmak yerine crontab’ a eklenecek satırları herhangi bir dosyadan da yükleyebilirsiniz ki; birden fazla benzeri sunucu kurulumundan sonra vardiyalı çalışan programlarla ilgili girileri her seferinde tekrar tekrar girmekten bu sayede kurtulabilirsiniz. Bunun için, ilgili dosyayı crontab’ a göstermeniz gerekir;

$ crontab <full path>

Dikkat! Bu komut var olan crontab dosyasında bulunan cron işlemlerini silip ardından belirtilen dosyadakileri ekler.

Eğer sisteminizde SELinux bulunuyorsa, kullandığınız linux dağıtımına göre değişen, SELinux güvenlik karakter dizisini barındıran MLS_LEVEL ya da SELINUX_ROLE_TYPE değişkenini de cron işlerine eklemek için -s takısını kullanabilirsiniz. Yalnız, bunun için crontab’ a eklenecek işlemlerin bir dosya üzerinden yüklenmesi gerekecektir. Takının kullanımı ise;

$ crontab -s <full path>

şeklindedir.

-e takısıyla crontab’ a yeni satırlar ekleyerek, belirli saat/tarihlerde komut ya da uygulamaları çalıştırmak isteyebilirsiniz. Bunun için, aşağıda belirtilen formata uygun zamanı ve çalıştırılacak komutları satırlar halinde ekleyebilirsiniz.

Örneğin root kullanıcısı için

$ sudo crontab -u root -e

komutunu girdikten sonra editörde açılan geçici dosyaya;

15 05 * * * /usr/bin/apt-get update

satırını eklemeniz durumunda her sabah 05:15′ te paket index dosyalarının senkronize edilmesini sağlayabilirsiniz.

crontab satırlarında belirli aralıklarla çalıştırılmasını istediğiniz işlemlerin yapılmasını tek bir satırda da halledebilirsiniz.

*/2 değerini dakika değeri yerine girmeniz durumunda her iki dakikada bir

0-10/2 değerini dakika değeri yerine girmeniz durumunda belirtilen saat ve tarihlerde ilk 10 dakika içerisinde iki dakikada bir

komutlarınız çalıştırılacaklardır.

@yearly, @daily, @hourly, @monthly, @reboot parametreleri de anlamlarından tahmin edebileceğiniz zamanlarda komutların çalıştırılmasını sağlayacaktır. Örneğin her ayın başında belli bir klasörü temizlemek istiyorsanız;

@monthly /bin/rm  <path>/*

işinizi görecektir.

Ancak, bu ve asteriskli parametre tipleri bütün dağıtımlar tarafından desteklenmemektedir, crontab bir hata mesajı da döndürebilir.

Bunların dışında, örneğin; eğer belirttiğiniz tarih, haftanın farklı bir gününe denk geliyorsa girilen her iki parametre de geçerli kabul edilip her iki tarihte de komutun çalıştırılacağını; crontab’ ın satırlardaki değerleri kümülatif olarak değerlendirdiğini unutmamanız gerekir.

Aksi belirtilmediği sürece, crontab işlem çıkışını cron işlemini yaptıran kullanıcıya gönderir. Bunu engellemek ya da çıkışın gönderileceği kişiyi değiştirmek için MAIL değişkeni kullanılır.

MAIL=””

şeklinde değiştirilen MAIL değişkeni crontab’ ın çıkışını kimseye göndermemesini sağlayacaktır. Bunun yerine çift tırnaklar arasına cron işini çalıştıran ya da çalıştırmayan herhangi bir kullanıcının adı da yazılabilir.

Programın çıkışından tamamen kurtulmak için; STDOUT ve STDERR yönlendirmelerini yapmanız gerekir. Bunun için de çalıştırılmasını istediğiniz komutun sonuna,

> /dev/null 2>&1

eklemeniz gerekir. Bu eklentinin ilk bölümü olan > /dev/null komutun çıktısını verecek STDOUT‘ u /dev/null dosyasına; kara deliğe yönlendirir. İkinci bölümü olan 2>&1 ise STDERR‘ i, daha önceden /dev/null’ a bağlanmış STDOUT’ a yönlendirir.

Son olarak girilen komutları her seferinde pathleri ile beraber yazmak yerine crontab dahilinde genel bir PATH çevresel değişkeni belirleyeblirsiniz. Örneğin;

$ crontab -l

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/<kullanıcı adı>

@yearly <komut>

*/10 * * * * <komut>

Reklamlar

GNU Screen nedir? Yenir mi?

Screen nedir? Screen tek bir terminal ekranı içerisinden içerisinde birden fazla terminal emülasyonu çalıştırmanızı sağlayan bir uygulamadır. Pencere çoklayıcısı olarak da bilinir.  Teminal üzerinden oluşturacağınız her bir terminal emülasyonu üzerinden farklı bir programı çalıştırabilirsiniz.

E bunun için tablı xterm ekranları var diyenler olabilir. tty üzerinden tabları görebilir misiniz derim ben de onlara. Ki screen sadece bir terminal emülasyonu çoklayıcı olmakla kalmayıp, açılan herhangi bir screen penceresi üzerinden çalıştırılan komutlar; o pencereyi kapatsanız da çalışmaya devam ederler. Kullanımının getirdiği avantajlar arasında nohup komutuna benzer yönler de var yani. Bu sayede, örneğin ssh’ la uzaktan bağlandığınız herhangi bir sunucuda başlattığınız uzun sürecek işlem sırasında screen penceresini kapatıp bağlantınızı güvenli bir şekilde koparabilirsiniz ve daha sonra tekrar screen’ in gerekli takılarını da kullanarak işlemlere kaldığınız yerden devam edebilirsiniz.

Screen’ i;

$ sudo apt-get install screen

komutuyla repository’ den indirip kolaylıkla kurabiliriz. Ardından;

$ screen

komutuyla çalıştırdığımızda bir hoşgeldiniz sayfasıyla karşılaşırız. Bu sayfa klasik GPL lisanslı programlarda gördüğümüz tipte bir sayfadır. Bu sayfayı uygulamanın bir sonraki kullanımlarından itibaren es geçmek için, screenrc (olabileceği yerler: ~/.screenrc/etc/screenrc) örnek konfigürasyon dosyasında;

startup_message off

satırının başındaki hash karakterini kaldırarak, konfigürasyona dahil etmeniz yeterli.

Eğer screen komutunu takısız çalıştırırsanız ilki 0 olarak numarandırılmak üzere, her yeni screen penceresi için birer artacak şekilde devam eder.  Bu açılan screen pencereleri arasında ^a n ile bir sonrakine, ^a p ile bir öncekine geçebilir ya da ^a (0-9) şeklinde doğrudan screen penceresinin numarası üzerinden gidebilirsiniz. Yeni bir screen penceresi açmak için ^a c kullanabilir, ^a “ ile açık pencereleri listeleyebilirsiniz.

^a d ile bağlı bulunduğunuz screen penceresinden ayrılabilirsiniz (detach). Bu komutla ayrıldığınız screen penceresinde çalışan bir uygulama varsa, çalışmaya devam edecektir ve

$ screen -ls

komutu ile açık screen pencerelerinin listelediğinizde, detached screenlerden biri olarak gözükecektir. Daha sonra örneğin listelenen screen pencereleri;

6210.theforth    (04/02/2012 11:41:24 PM)    (Attached)
6091.thethird    (04/02/2012 11:38:38 PM)    (Attached)
6035.thesecond    (04/02/2012 11:38:03 PM)    (Detached)

ise,

$ screen -r 6035.thesecond

komutu ile ayrıldığınız screen penceresine yeniden dönebilir, işinize kaldığınız yerden devam edebilirsiniz.

Screen ile yapılabileceklerden biri açtığınız screen pencerelerinden birini paylaşmaktır. Örneğin uzaktan bağlandığınız bir sunucuda, aynı screen penceresi üzerinden, on-site mühendis ile beraber çalışabilirsiniz.

Not: Bu yöntem güvenlik sorunu yaratabilir. Zaten bu sebeple de varsayılan dosya izinleriyle bu işlem yapılamaz, bu yüzden dosya sisteminde screenle ilgili bölümlerde kimi izinleri değiştirmeniz gerekmektedir. Örneğin en basitinden; screen penceresinin paylaşıldığı ikinci kullanıcı; oturumu açan kullanıcının dosya erişim izinlerini kullanarak normalde erişemediği dizinleri görüntüleyebilir. Bu sebeple pencerenin kiminle hangi durumda paylaşıldığı konusunda dikkatli olmakta fayda vardır.

Bu şekildeki bir ortak screen penceresinin kullanılabilmesi için;

$ sudo chmod u+s /usr/bin/screen

$ sudo chmod 755 /var/run/screen

Ardından bir screen penceresini;

$ screen -S <pencereismi>

şeklinde isimlendirerek açın. Ardından, screen penceresini paylaşıma açmak için, ^a :multiuser on komutunu kullanın. Ardından gerekli erişim iznini vermek için ^a :aclcfg <kullanıcıadı2> <permissions> komutunu kullanarak bağlantıyı paylaşacağınız ikinci kullanıcıyı ve bu kullanıcının screen dahilinde yapabileceklerini belirleyen izinleri verin. İzin takıları r, w, x olup başlarına  + koymanız durumunda izin verir, koymanız durumunda ise izinleri kaldırırsınız.

İkinci kullanıcının, paylaşılan screen penceresine bağlanabilmesi için, screen uygulamasının çalıştığı sunucuya bağlandıktan sonra;

$ screen -x <kullanıcıadı>/xxxx.<pencereismi>

komutunu kullanması gerekir. Burada, <kullanıcıadı>, screen uygulamasını başlatan kullanıcıdır,  xxxx ile belirtilen ise screen penceresinin oturum numarasıdır. Bağlanılan sunucuda

$ ls /var/run/screen/S-<kullanıcıadı>

komutu ile paylaşımı başlatan kullanıcının açtığı pencerelerin tam listesi görülebilir ve xxxx değerine ulaşılabilir.

Bu sayede paylaşılan  screen penceresinde, her iki kullanıcı da; ikinci kullanıcının sahip olduğu izinlere bağlı olarak, bir diğerinin yaptığını görebilir, komut yazabilir, uygulama çalıştırabilir.

Birden fazla screen penceresini aynı terminalden de çalıştırmak başvurulan yöntemlerden biridir. İkinci screen penceresini açtıktan sonra (^a c ile), ^a S komutu ile  screen uygulamasını çalıştırdığınız terminal ekranını iki pencereyi görüntüleyecek şekilde yatay olarak ikiye bölebilirsiniz. Altta kalan pencerede ilk etapta pencere listesi olabilir ya da açmış olduğunuz ikinci screen penceresi olabilir. Altta liste görünmesi durumunda doğal olarak altta görünmesini istediğiniz screen penceresini seçmeniz gerekecektir. İki pencere arasındaki geçişler ise ^a TAB  komutuyla yapılır. Örneğin top gibi sistem kaynaklarının durumunu gösteren bir pencereyi bir tarafta çalıştırırken diğer tarafta işinizi görebilirsiniz. Bu açıdan kullanışlı bir özelliği vardır. Bölünmüş yapıdan kurtulmak içinse, çalışmaya devam etmek istediğiniz tarafa geçtikten sonra, ^a Q komutunu kullanmanız yeterlidir.

Screen uygulaması ilk açıldığında açılmasını istediğiniz screen pencereleri varsa, bunları da yine screen konfigürasyon dosyasından ayarlayabilirsiniz. Bunlarla ilgili örnekler ise dosya içinde mevcut.

Screen’ in yapabildikleri tabi ki bunlarla kalmamakta. Komut satırından man sayfasına ulaşarak uygulamanın takılarını ve pencereler üzerinden verilebilen komutları görebilirsiniz.

Özgür Yazılım ve Linux Günleri 2012 – Asterisk Semineri

Ozgur Yazilim ve Linux Günleri 2012Özgür Yazılım ve Linux Günleri 2012 dahilinde, 31 Mart tarihinde düzenlenen Asterisk Semineri’ nin sunum dökümanını indirmek için tıklayınız.

Katılımcılara teşekkür ederim.

Gnome 3.4 yayınlandı

3.0 sürümüne geçildiğinden beri çoğunluğu negatif olmak üzere oldukça eleştirilen Gnome’ un 3.4 nolu sürümü yayınlandı.

Fashion over function yönelimi, en önemli negatif eleştiri noktalarından biri olan Gnome’ un 2.x sürümlerindeki fonksiyonelliğini yeni alt sürümle beraber göstermeye başlamasını umud ediyorum.

Benim gibi, Gnome 2.x’ te ilerde yaşanacak destek eksikliği problemleriyle cebelleşmemek için XFCE, LXDE vb. masaüstü yöneticilerine geçenleri, yeniden kendisine bağlar mı bekleyip göreceğiz elbette.

Haber kaynağına ulaşmak, değişiklikler ile ilgili bilgi almak için logoya tıklamanız yeterli.

Dipnot: XFCE de hiç fena değil aslında. Uzun vadede bunu da kullanabilirim belli olmaz…

Özgür Yazılım ve Linux Günleri 2012 – Asterisk Semineri

Ozgur Yazilim ve Linux Günleri 2012Özgür Yazılım ve Linux Günleri, Linux Kullanıcıları Derneği (LKD) ve İstanbul Bilgi Üniversitesi işbirliği ile yılda bir kere düzenlenen, linux ve özgür yazılımla ilgili herkesin buluşma noktasıdır.

Bu yıl 30-31 Mart tarihlerinde, İstanbul Bilgi Üniversitesi, Dolapdere Kampüsü’ nde gerçekleşecek olan, benim de konuşmacı olarak katılacağım buluşma; toplumun her kesimine uygun düzeyde teknik ve tanıtım amaçlı seminerlerin verildiği bir etkinliktir.

Başta, 31 Mart Cumartesi günü, 2. Salon’  da 15:00′ te başlayacak ve yaklaşık 45dk sürecek Asterisk seminerime olmak üzere; etkinlik süresince gerçekleşecek bütün oturumlara herkesi beklerim.

Etkinlik sayfasına afişe tıklayarak, program detaylarına ise buradan ulaşabilirsiniz.

Unutmadan; katılım ücretsizdir.

Sangoma’ ya Ödül.

Firmanın Vega 5000 Analog Gateway ürününe, 2011 yılı için Yılın Internet Telefonculuğu Ürünü ödülü verildi.

Üzerinde 2 PSTN bağlantısı bulunan ürün, ölçeklenebilir boyutta olup, 16-50 arasında belirlenen sayıda analog telefon bağlanabiliyor. SIP ve H.323 protokollerini destekleyen üründe aynı zamanda modem, fax destekleri de bulunuyor. 50′ ye kadar VoIP kanalı destekleyen ürün, elektrik kesintisinde, üzerinde bulunan PSTN portlarının kullanılmasına izin vererek erişimin kısıtlı da olsa devam etmesini sağlıyor.

Ürün sayfasına ve ödül haberine ulaşmak için sırasıyla resim ve ödül logosuna tıklamanız yeterli.

Görsel, Etkileşimli, Dialplanner Yayınlandı.

İlk sürümü yayınlanan; arama akışını kontrol etmek için görsel bir arabirim sunan,  açık kaynak kodlu Interactive Dialplanner’ ı indirmek için logosuna tıklayarak açılan sayfadaki download bağlantısını kullanmanız yeterli.

%d blogcu bunu beğendi: