Bash - p

Potrzebujesz pomocy z C, C++, perl, python, itp.
Karolus
Posty: 12
Rejestracja: 24 stycznia 2011, 23:59

Bash - pętla i sprawdzanie czy istnieje plik

Post autor: Karolus »

Witam.

Chciałbym otrzymać pętlę, która sprawdza, czy istnieje plik. A więc:

Kod: Zaznacz cały

cd /home/.../
if [ -e server.log.lck ]
Z tym, że nie ma ona wykonywać zadań dopóki on istnieje lecz instrukcja ma się wykonać dopiero wtedy kiedy go już nie będzie.

Czyli:
  1. Sprawdza czy istnieje plik
  2. Jeżeli tak to nie robi nic, jeżeli nie to wywołuję instrukcję.
Jak mogę otrzymać coś takiego?
modem
Posty: 4
Rejestracja: 27 listopada 2012, 22:13

Post autor: modem »

Kod: Zaznacz cały

#!/bin/bash


if [ ! -e /home/../server.log.lck ];
then
echo "gdy plik nie istnieje"
fi
I wrzuć do crona co jaki okres czasu ma sprawdzać.
Karolus
Posty: 12
Rejestracja: 24 stycznia 2011, 23:59

Post autor: Karolus »

Czyli, rozumiem, że to wykonuje tylko jeden cykl?
Tzn. raz sprawdza, a żeby sprawdziło dwa razy już musi być w cronie?
Awatar użytkownika
LordRuthwen
Moderator
Posty: 2324
Rejestracja: 18 września 2009, 21:45
Lokalizacja: klikash?

Post autor: LordRuthwen »

A jak go chcesz wykonywać?
W pętli?
Cały czas?
Lepiej okresowo.
Awatar użytkownika
Yampress
Administrator
Posty: 6400
Rejestracja: 09 sierpnia 2007, 21:41
Lokalizacja: PL

Post autor: Yampress »

Tak wrzuć do crona niech sprawdza co 5 minut. Chyba że potrzebujesz innej częstotliwości sprawdzania. Wtedy ustaw inaczej przedziały czasowe.
Awatar użytkownika
markossx
Beginner
Posty: 489
Rejestracja: 26 maja 2007, 16:01
Lokalizacja: Polska

Post autor: markossx »

Ja bym zrobił tak:

Kod: Zaznacz cały

#!/bin/bash
FILE='/tmp/xxc'
function checkit() {
test -e $FILE &> /dev/null
}
while [ $? -eq 0 ];
   do
      checkit
      sleep 5
done
echo -e "File $FILE not found\nWhat next..?"


Dodane:

Możesz to uruchomić ze startem systemu lub "z ręki" i uruchomić w tle z opcją '&'.

Muszę dodać bo napisałem z pamięci, po sprawdzeniu okazuje się, że powinno być:

Kod: Zaznacz cały

#!/bin/bash -x
FILE='/tmp/xxc'
function checkit() {
sleep 5
test -e $FILE &> /dev/null
}
while [ $? -eq 0 ];
   do
      checkit
done
echo -e "File $FILE not found\nWhat next..?"

ODPOWIEDZ