Nowe posty

Autor Wątek: skrypt sprawdzajacy wielkosc pliku  (Przeczytany 6503 razy)

tomekiola

  • Gość
skrypt sprawdzajacy wielkosc pliku
« dnia: 2008-11-02, 07:46:12 »
Witam!
Mam do napisania skrypt ktory codziennie bedzie sprawdzal wielkosc pliku i jezeli plik ten przekroczy wielkosc 1GB to zeby go wyczyscil. Jestem nowicjuszem w programowaniu w bashu ale udalo mi sie zrobic cos takiego:
#!bin/bash
if [ -gt=1GB /var/log.log ]
then
cp /var/ null log.log
fi
Dobrze to jest zrobione czy zle? Jak zle to prosze o pomoc.
Z gory dziekuje.

arctgx

  • Gość
skrypt sprawdzajacy wielkosc pliku
« Odpowiedź #1 dnia: 2008-11-02, 16:28:26 »
Zobacz koniecznie man bash (po polsku jest) oraz man du oraz przykłady w sieci, potem wykład

http://www.uniforum.chi.il.us/slides/bash1.pdf na stronie 32, by porównać choćby [ z [[.

Skąd wziąłeś takie użycie -gt i dlaczego? Przecież to operator porównania. Z kolei znak = jest operatorem przypisania. Dalej, "1GB" jest dla basha niczym więcej niż ciągiem znaków. Bash jest w stanie rozróżnić jedynie czy plik ma zerową długość, czy nie (operator -s).

Ty musisz wynik polecenia du na pliku (który dla basha ma być liczbą, więc musisz wywołać du tak, by pokazał wynik w bajtach) porównać z liczbą bajtów równą gigabajtowi.

Polecenia po "then" nie komentuję - po prostu czeka Cię intensywna lektura (z doświadczeniami) na temat podstaw powłoki i poleceń wspólnych dla uniksopodobnych systemów. Może tylko polecę man cp. Podanie Ci gotowego rozwiązania nie nauczyłoby Cię zbyt wiele w tym momencie.

ed. poprawka -z na -s

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
skrypt sprawdzajacy wielkosc pliku
« Odpowiedź #2 dnia: 2008-11-02, 18:10:18 »
Ja polecę:
- `man stat` lub `stat --help`
- http://www.ournet.pl/kursbasha/cytat.html
- http://www.ournet.pl/kursbasha/if.html
- http://www.ournet.pl/kursbasha/echo.html
To wystarczy, aby napisać skrypt, który potrzebujesz.

EDIT:
Żeby było codziennie, to albo odpowiedni wpis w cronie, albo dodatkowa pętla while i polecenie sleep:
- http://www.ournet.pl/kursbasha/while.html
- `man true` i `man false`
- `man sleep`

tomekiola

  • Gość
skrypt sprawdzajacy wielkosc pliku
« Odpowiedź #3 dnia: 2008-11-02, 20:48:11 »
Wielkie dzieki za pomoc troche poczytalem i udalo mi sie zrobic cos takiego:
#!/bin/bash
FILENAME=/var/log.log
FILESIZE=$(stat -c%s "$FILENAME")

if [ $FILESIZE -gt 1073741824 ]; then
cat /dev/null > $FILENAME
fi

arctgx

  • Gość
skrypt sprawdzajacy wielkosc pliku
« Odpowiedź #4 dnia: 2008-11-02, 21:53:44 »
Zamiast wyjścia polecenia cat /dev/null wystarczy wyjście pustego polecenia, po prostu
>$FILENAME
albo
:>$FILENAME
.

tomekiola

  • Gość
skrypt sprawdzajacy wielkosc pliku
« Odpowiedź #5 dnia: 2008-11-02, 22:30:16 »
macie moze jakies dobre poradniki do crona?? albo moze powiecie mi jakim poleceniem w cronie uruchomictenskrypt??

Dzieki wielkie wszystkim za pomoc.

arctgx

  • Gość
skrypt sprawdzajacy wielkosc pliku
« Odpowiedź #6 dnia: 2008-11-02, 22:46:42 »
man -a crontab

tomekiola

  • Gość
skrypt sprawdzajacy wielkosc pliku
« Odpowiedź #7 dnia: 2008-11-02, 23:01:47 »
zrobilem cos takiego
0 9 * * *       $HOME/bin/skrypt

arctgx

  • Gość
skrypt sprawdzajacy wielkosc pliku
« Odpowiedź #8 dnia: 2008-11-02, 23:37:30 »
...czyli każdego dnia o dziewiątej rano.

Dodam tylko, że jeśli będziesz miał wyłączony system o dziewiątej, a chcesz jak najszybciej po włączeniu nadrabiać zaległości, dowiedz się, co robi anacron. Sam niewiele wiem o nim i niczego więcej nie podpowiem.

tomekiola

  • Gość
skrypt sprawdzajacy wielkosc pliku
« Odpowiedź #9 dnia: 2008-11-02, 23:50:37 »
Wielkie dzieki za pomoc.