[Çözüldü] Crontab Sorunu

Başlatan Baktery, 13 Nisan 2013 - 10:00:29

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

Baktery

Ben bi script yapmak için uğraşıyorum notify-send komutunu da kullandım ama scripti ben başlattığımda bu komutu işlevsel hale geliyor crontab çalıştırdığında hiçbi bildirim ekrana gelmiyor. İnternette araştırdım DISPLAY=:0.0 veya DISPLAY=:0 komutunu crontabda kodların başına ekledim ama yine bi değişiklik olmadı gerekse kodları da yazabilirim script normal çalışıyor

acablack

Açıkcası ben yazılarımı php ile yazıyorum.  Crontab'a eklediğim de echo ile yazılan bildiirmler mail/root a düşüyor. Hatta hatalar ve diğerleride root mailinde görülebiliyor.
Bir de crontab'ın log dosyasına bakın derim.

Baktery

Linuxta yeniyimde nasıl bakacağımı anlatabilir misiniz? Anlatmak istediğinizden web server olarak kullandığımı sandınız sanırım ben normal pcde ubuntu kullanıyorum
#!/bin/bash
SICAKLIK=`exec sensors -u | grep temp2_input: | awk '{print $2 }' | cut -c 1-2`
ADAPTOR=$(acpi -a)
MAXFREQ=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq)
GOVERNOR=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor)
if [ "$ADAPTOR" = "Adapter 0: on-line" ]
then
if [ "$SICAKLIK" -gt "70" ]
then
if [ "$MAXFREQ" -ne "800000" ]
then
DISPLAY=:0.0 notify-send "Cpu Isısı 70 Derecenin Üstünde!" -t 1000

cpufreq-set -c 0 -g conservative
cpufreq-set -c 0 -u 800Mhz

cpufreq-set -c 1 -g conservative
cpufreq-set -c 1 -u 800Mhz

cpufreq-set -c 2 -g conservative
cpufreq-set -c 2 -u 800Mhz

cpufreq-set -c 3 -g conservative
cpufreq-set -c 3 -u 800Mhz
fi
else
if [ "$MAXFREQ" -ne "2300000" ]
then
DISPLAY=:0.0 notify-send "Cpu Isısı 70 Derecenin Altında." -t 1000

cpufreq-set -c 0 -g conservative
cpufreq-set -c 0 -u 2.3Ghz

cpufreq-set -c 1 -g conservative
cpufreq-set -c 1 -u 2.3Ghz

cpufreq-set -c 2 -g conservative
cpufreq-set -c 2 -u 2.3Ghz

cpufreq-set -c 3 -g conservative
cpufreq-set -c 3 -u 2.3Ghz
else [ "$GOVERNOR" = "ondemand" ]

DISPLAY=:0.0 notify-send "Cpu Isısı 70 Derecenin Altında." -t 1000

cpufreq-set -c 0 -g conservative
cpufreq-set -c 0 -u 2.3Ghz

cpufreq-set -c 1 -g conservative
cpufreq-set -c 1 -u 2.3Ghz

cpufreq-set -c 2 -g conservative
cpufreq-set -c 2 -u 2.3Ghz

cpufreq-set -c 3 -g conservative
cpufreq-set -c 3 -u 2.3Ghz

fi
fi
else
if [ "$MAXFREQ" -ne "800000" ]
then
DISPLAY=:0.0 notify-send "Güç Tasarrufu Modu Açıldı." -t 1000 -i "/usr/share/icons/Humanity/status/48/battery-caution.svg"
cpufreq-set -c 0 -g powersave
cpufreq-set -c 0 -u 800Mhz

cpufreq-set -c 1 -g powersave
cpufreq-set -c 1 -u 800Mhz

cpufreq-set -c 2 -g powersave
cpufreq-set -c 2 -u 800Mhz

cpufreq-set -c 3 -g powersave
cpufreq-set -c 3 -u 800Mhz
elif [ "$GOVERNOR" = "ondemand" ]
then
DISPLAY=:0.0 notify-send "Güç Tasarrufu Modu Açıldı." -t 1000 -i "/usr/share/icons/Humanity/status/48/battery-caution.svg"
cpufreq-set -c 0 -g powersave
cpufreq-set -c 0 -u 800Mhz

cpufreq-set -c 1 -g powersave
cpufreq-set -c 1 -u 800Mhz

cpufreq-set -c 2 -g powersave
cpufreq-set -c 2 -u 800Mhz

cpufreq-set -c 3 -g powersave
cpufreq-set -c 3 -u 800Mhz
fi
fi


ordan burdan edindiğim bilgilerle böyle bi kod yazdım crontab her dakika bunu otomatik olarak çalıştırıyor ancak  notify-send yazan bölgeler çalışmıyor.

guopx

Dakika başı çalıştırma için illa crontab kullanmanız gerekmez bir "while do done" döngüsü işinizi görür bence
Mesela#!/bin/bash
while :
do
SICAKLIK=`exec sensors -u | grep temp2_input: | awk '{print $2 }' | cut -c 1-2`
ADAPTOR=$(acpi -a)
MAXFREQ=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq)
GOVERNOR=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor)
if [ "$ADAPTOR" = "Adapter 0: on-line" ]
then
if [ "$SICAKLIK" -gt "70" ]
then
if [ "$MAXFREQ" -ne "800000" ]
then
DISPLAY=:0.0 notify-send "Cpu Isısı 70 Derecenin Üstünde!" -t 1000

cpufreq-set -c 0 -g conservative
cpufreq-set -c 0 -u 800Mhz

cpufreq-set -c 1 -g conservative
cpufreq-set -c 1 -u 800Mhz

cpufreq-set -c 2 -g conservative
cpufreq-set -c 2 -u 800Mhz

cpufreq-set -c 3 -g conservative
cpufreq-set -c 3 -u 800Mhz
fi
else
if [ "$MAXFREQ" -ne "2300000" ]
then
DISPLAY=:0.0 notify-send "Cpu Isısı 70 Derecenin Altında." -t 1000

cpufreq-set -c 0 -g conservative
cpufreq-set -c 0 -u 2.3Ghz

cpufreq-set -c 1 -g conservative
cpufreq-set -c 1 -u 2.3Ghz

cpufreq-set -c 2 -g conservative
cpufreq-set -c 2 -u 2.3Ghz

cpufreq-set -c 3 -g conservative
cpufreq-set -c 3 -u 2.3Ghz
else [ "$GOVERNOR" = "ondemand" ]

DISPLAY=:0.0 notify-send "Cpu Isısı 70 Derecenin Altında." -t 1000

cpufreq-set -c 0 -g conservative
cpufreq-set -c 0 -u 2.3Ghz

cpufreq-set -c 1 -g conservative
cpufreq-set -c 1 -u 2.3Ghz

cpufreq-set -c 2 -g conservative
cpufreq-set -c 2 -u 2.3Ghz

cpufreq-set -c 3 -g conservative
cpufreq-set -c 3 -u 2.3Ghz

fi
fi
else
if [ "$MAXFREQ" -ne "800000" ]
then
DISPLAY=:0.0 notify-send "Güç Tasarrufu Modu Açıldı." -t 1000 -i "/usr/share/icons/Humanity/status/48/battery-caution.svg"
cpufreq-set -c 0 -g powersave
cpufreq-set -c 0 -u 800Mhz

cpufreq-set -c 1 -g powersave
cpufreq-set -c 1 -u 800Mhz

cpufreq-set -c 2 -g powersave
cpufreq-set -c 2 -u 800Mhz

cpufreq-set -c 3 -g powersave
cpufreq-set -c 3 -u 800Mhz
elif [ "$GOVERNOR" = "ondemand" ]
then
DISPLAY=:0.0 notify-send "Güç Tasarrufu Modu Açıldı." -t 1000 -i "/usr/share/icons/Humanity/status/48/battery-caution.svg"
cpufreq-set -c 0 -g powersave
cpufreq-set -c 0 -u 800Mhz

cpufreq-set -c 1 -g powersave
cpufreq-set -c 1 -u 800Mhz

cpufreq-set -c 2 -g powersave
cpufreq-set -c 2 -u 800Mhz

cpufreq-set -c 3 -g powersave
cpufreq-set -c 3 -u 800Mhz
fi
fi
sleep 60
done
Sevdiklerine sevdiğini söyle çok geç olmadan.

Baktery

#4
Bundan haberim var ancak cpufreq-set komutları yetki istiyor bu yüzden crontab kullanma ihtiyacı duydum bi öneriniz var mı yetki sorununa?


Düzeltme...

Sorunumu çözdüm ben /etc/crontab'daki dosyayı düzenliyordum scripti çalıştırsa da bildirimleri göstermiyordu.
terminalden crontab -e yazıp yeni dosya oluşturdum bunun içine kaydettim şuan normal şekilde çalışıyor bildirimleri gösteriyor.