Freesco, NND, CDN, EOS

http://www.freesco.pl
Dzisiaj jest niedziela, 6 lipca 2025, 13:57

Strefa czasowa UTC+2godz.




Nowy temat Odpowiedz w temacie  [ Posty: 5 ] 
Autor Wiadomość
Post: niedziela, 10 lutego 2008, 18:55 
Offline
Użytkownik

Rejestracja: niedziela, 9 kwietnia 2006, 10:14
Posty: 316
Witam.
Mam pytanie dla ludzi piszących skrypty w bashu.
Gdzie najlepiej jest umiescic zmienną dla skryptu wykonywanego cyklicznie. np co 5min ?

Czyli:
mamy skrypt który coś oblicza
wartość zapisuje do tej zmiennej
kończy pracę
...
po jakimś czasie uruchamia sie go np z crona
skrypt odczytuje zmienną
znowu coś liczy
zapisuje wynik
kończy pracę
...
i tak w kółko.

obecnie wynik zapisuję i odczytuję z pliku - ale niepodoba mi się to rozwiaznie bo przy większej ilości skryptów dysko bedzie ciągle mielił.
inny pomysł to utworzenie zmiennej środowiskowej (export x= ...)
jeszcze inny to zapis do pliku w wirtualnym katalogu (jeśli taki jest to który?)
i na koniec mozna nie kończyc skryptu tylko uśpić do polecieniem sleep - tylko czy nie za dużo bedzie tych "sleepów"?

jakieś inne sugestie?


Na górę
 Wyświetl profil  
 
Post: niedziela, 10 lutego 2008, 19:43 
Offline
MODERATOR

Rejestracja: piątek, 5 lipca 2002, 17:31
Posty: 2449
Lokalizacja: Londyn
pectosol pisze:
Witam.
Gdzie najlepiej jest umiescic zmienną dla skryptu wykonywanego cyklicznie. np co 5min ?

Czyli:
mamy skrypt który coś oblicza
wartość zapisuje do tej zmiennej
kończy pracę
...
po jakimś czasie uruchamia sie go np z crona
skrypt odczytuje zmienną
znowu coś liczy
zapisuje wynik
kończy pracę
...
i tak w kółko.


Zależy co chcesz osiągnąć. Po pierwsze jeśli chcesz, aby wynik zliczania przetrwał reset systemu, to zapis do pliku i czytanie z niego jest jedynym rozwiazaniem. Musisz tylko dodać warunek sprawdzający czy plik istnieje i jeśli nie to tworzący go i deklarujący w nim zmienną z wartością początkowa.
Jesli nie zalezy ci żeby wynik przetrwał reset to poczytaj o zasiegu zmiennych. export niestety nic ci tutaj nie pomoże bo każdy następny wywoływany script będzie uruchamiał swój subshell i nie będzie widział zmiennych z innego subshella. Można by spróbowac stworzyć zmienną środowiskową w profilu użytkownika, który bedzie ten script uruchamiał, ale wątpię, żeby to pomogło - o ile się nie mylę to dziecko nie może zmieniać wartości zmiennych w shellu rodzica... musiałbyś to sprawdzić.
Można jeszcze, zamiast uruchamiać kolejne scripty z crona, zastosować nieskończona pętlę i w takiej sytuacji na początku scriptu deklarujesz zmienną a potem w trakcie wykonywania scriptu ją modyfikujesz. na koniec możesz zapisywac do pliku zeby wartość przetrwała restart komputera. Pierwsze uruchomienie scriptu po restarcie musiałoby czytać wartośc tej zmiennej z pliku. Podobnie jak w sytuacji gdy zapisujesz wartość do pliku musisz dodać warunek sprawdzający istnienie pliku (lub zmiennej).

pectosol pisze:
obecnie wynik zapisuję i odczytuję z pliku - ale niepodoba mi się to rozwiaznie bo przy większej ilości skryptów dysko bedzie ciągle mielił.


bez przesady - sysloga i tak pewnie nie przebijesz ilością operacji dyskowych...

Ja bym zapisywał do pliku, w jednym z tych katalogów (w takiej właśnie kolejności):

/var/lib/nazwa_scriptu
/var/local/nazwa_scriptu
/var/state/nazwa_scriptu

_________________
Mis'
___________________________________
"Real Men Use Telnet on port 80" (el bid)


Na górę
 Wyświetl profil  
 
Post: niedziela, 10 lutego 2008, 20:18 
Offline
CDN Support

Rejestracja: środa, 12 lipca 2006, 14:46
Posty: 497
Lokalizacja: Sarnaki / Warszawa
Mis' pisze:
...Zależy co chcesz osiągnąć. Po pierwsze jeśli chcesz, aby wynik zliczania przetrwał reset systemu, to zapis do pliku i czytanie z niego jest jedynym rozwiazaniem....


Może również zapisywać dane do bazy MySQL...


Na górę
 Wyświetl profil  
 
 Tytuł:
Post: niedziela, 10 lutego 2008, 21:40 
Offline
Użytkownik

Rejestracja: niedziela, 9 kwietnia 2006, 10:14
Posty: 316
hmm
nie zależy mi na zapisie tych danych

więc chyba zostane przy zapisie do pliku,
ale żeby nie mielić dyskiem to zaspis zrobię do ramdysku
z tego co widzę to jajko nnd ma wkompilowana ich obsługę

dzięki za pomoc


Na górę
 Wyświetl profil  
 
Post: niedziela, 10 lutego 2008, 22:30 
Offline
MODERATOR

Rejestracja: piątek, 5 lipca 2002, 17:31
Posty: 2449
Lokalizacja: Londyn
Kimas pisze:
Może również zapisywać dane do bazy MySQL...


Pewnie że można... do Sybase też. Tylko... o armacie i muchach słyszałeś kiedyś?

_________________
Mis'
___________________________________
"Real Men Use Telnet on port 80" (el bid)


Na górę
 Wyświetl profil  
 
Wyświetl posty nie starsze niż:  Sortuj wg  
Nowy temat Odpowiedz w temacie  [ Posty: 5 ] 

Strefa czasowa UTC+2godz.


Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 12 gości


Nie możesz tworzyć nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Przejdź do:  
cron
Technologię dostarcza phpBB® Forum Software © phpBB Group
Hosting: Compus-Net
RobertKonik.pl