[ patton @ 24.12.2005. 13:58 ] @
Totalni sam pocetnik sto se linuxa tice, pa mi je potrebna mala pomoc. Treba mi skripta koja ce se izvrsavati na svakih recimo 30min i koja ce zapisivati podatke koje daje komanda uptime u neki fajl. Kako to da napravim? Znam da uptime ima neku opciju da pise rezultat u fajl, ali sam je zaboravio... a skriptu u zivotu nisam napisao, pa ako je neko voljan da pomogne :)
[ alex @ 24.12.2005. 15:32 ] @
A svrha te skripte je?!

Cemu taj upis u fajl kada uvek mozes da pozoves komandu uptime i dobijes rezultat :)..

Najprostiji moguci primer (bash) skripte je:
Code:

#!/bin/bash
uptime > fajl


alex.
[ patton @ 24.12.2005. 15:52 ] @
OK, samo sto je potrebno da se ta skripta izvrsava na svakih 30min. Kako to da uradim? Potrebno je pisati podatke u fajl, radi prikazivanja na sajtu. Jedna html strana ce se osvezavati s vremena na vreme i prikazivati podatke iz tog fajla. S tim sto meni ne treba load i tako to, vec samo uptime, ali to je sad neka druga prica.
[ nkrgovic @ 24.12.2005. 21:10 ] @
Citat:
patton: OK, samo sto je potrebno da se ta skripta izvrsava na svakih 30min. Kako to da uradim?


$ man cron

I sve ce ti se samo kasti :)
[ japan @ 24.12.2005. 21:57 ] @
može jedno glupo pitanje?





zašto bi pisao skriptu kad je u pitanju samo jedna komanda? zašto je cron-u lakše reći /putanja/do/skripte nego uptime > /putanja/do/fajla
[ Mister Big Time @ 25.12.2005. 02:29 ] @
Snimi ovo kao naziv.php i okaci na server. Ili include-uj u neku drugu stranicu na sajtu gde zelis da ti prikazuje uptime.


Code:
<? function linuxUptime() { 
  $ut = strtok( exec( "cat /proc/uptime" ), "." ); 
  $days = sprintf( "%2d", ($ut/(3600*24)) ); 
  $hours = sprintf( "%2d", ( ($ut % (3600*24)) / 3600) ); 
  $min = sprintf( "%2d", ($ut % (3600*24) % 3600)/60  ); 
  $sec = sprintf( "%2d", ($ut % (3600*24) % 3600)%60  ); 
  return array( $days, $hours, $min, $sec ); 

$ut = linuxUptime(); 
// If you would like to show the seconds as well just add [ , $ut[3] seconds ] after minutes. 

echo "<font color=#777777><h4>Server UPTIME:  $ut[0] days, $ut[1] hours, $ut[2] minutes, $ut[3] seconds</h4></font>"; 
?>




Hint: ne radi uvek, zavisi kakva je ogranicenja postavio admin servera..
[ pisac @ 25.12.2005. 20:42 ] @
Code:

while [ 1 ]
do
    uptime > /uptimelog
    sleep 1800
done


Ovo bi trebalo da radi upravo ono što hoćeš, bez mnogo pametovanja. Startuj je sa imeskripte &
[ Anak1n @ 26.05.2006. 14:06 ] @
Ja bi to uradio ovako:

Code:


watch -n 1800 'uptime > fajl'

[ rafiki @ 26.05.2006. 19:51 ] @
Generalno, najbolje resenje je pokretanje skripte na svakih 30 minuta iz crona. Evo i zasto:

Citat:
Code:


watch -n 1800 'uptime > fajl'


i
Citat:
Code:

while [ 1 ]
do
    uptime > /uptimelog
    sleep 1800
done


Ova dva resenja su prinicipijelno u redu ali ukoliko se proces ubije iz bilo kog razloga, ne postoji nacin da ga automatski pokrenes. Takodje nakon restarta OS moras da ga pokrenes rucno ili da ga ubacis u startup skript. Cron mehanizam resava oba ova problema.

Perl resenje je isto OK, ali prekomplikovano i zahteva web server na masini (kao i perl). A draz Unix like operativnih sistema je upravo mogucnost pravljenja elegantnih i jednostavnih.

Pozdrav