JAVA

Running and compiling a java class in the crontab Linux

Bu örnekte crontab içinden java sınıflarını nasıl çağırabileceğimizi açıklamaya çalışacam.
Crontab belli araliklarla bazi işlemlerin kendiliğinden gerçekleştirmesini sağlamak için kullanılan bir yazilimdir. Crontab içinde Test.java sinifini her akşam 21:41 de derleyip(sadece daha önce derlenmemişse derleme işlemi gerçekleşir), çalıştırıp ve çıktıyı /home/ubuntu içindeki result_output.txt(yoksa kendisi oluşturuyor dosyayı) dosyasına yazdirmasini istedim.

Note: ilk derlemede Test.class dosyası olmadığından yani daha önce derlenmediğinden result_output.txt dosyasına bir şey yazmiyor. Çünkü crontab içinde satırlar arda ardadır ve derleme uzun sürdüğünden hemen altındaki satırı çalıştırıyor ve çıktı boş oluyor. Örnek olsun diye derlemeyi de gösterdim. Zamanı 21:20 gibi bir değer veririsek o zaman sorun olmaz tabi.
Crontab’ı Linux consolundan çalıştırmayı bilmiyorsanız tıklayın(bu örnekte de nmap ile ağ taranıp veriler .xml dosyasına kaydediliyor).

Crontab içinde derlemek için aşağıdaki kodu yazıyoruz.

Note: consoldan derlemek için “/usr/lib/jdk1.6.0_23/bin” classpathi tam yazmak zorunda değiliz ama crontab içindeki bütün tanımlamalarda path tam olmalıdır. Aksi halde class not found hatası verecek. Crontab içindeki tanımlama javac komutu ile Test.java sinifini derliyor. Uyari ./CommandLine/src/Test.java tanımlamaya dikkat.
Crontab içine aşağıdaki 2 satır kod yazdım.

41 21 * * * javac -classpath "/usr/lib/jdk1.6.0_23/bin" /home/ubuntu/workspaceWeb/CommandLine/src/Test.

Crontab’a yazılan aşağıdaki kod ise Test yani derlenmiş sinifini çağırıp main içinde ekrana yazılacak olan değeri result_output.txt dosyasına kaydediyor.Uyari ./CommandLine/src Test src boşluk Test şeklinde yazıldığında dikkat edin.

Buda Test>/home/ubuntu/result_output.txt çıktıyı txt dosyasına yazıyor. 41 21 * * * java -classpath /home/ubuntu/workspaceWeb/CommandLine/src Test>/home/ubuntu/result_output.txt.

Eğer paket olsaydı onun yolunu da belirtirdik ama uygulamada paket tanımlanmamış.
Test. Java public class Test {public static void writeMethod(String str){System.out.println(“Output: “+str);}.

Public static void main(String[] args){String s=”Running a Java class in the crontab”;writeMethod(s);}.

Result_output.txt içinde Running a Java class in the crontab çıktısı yazılmış olmalı.