Freesco, NND, CDN, EOS
http://forum.freesco.pl/

[bash] umieszczenie zmiennej
http://forum.freesco.pl/viewtopic.php?f=22&t=16545
Strona 1 z 1

Autor:  pectosol [ niedziela, 10 lutego 2008, 18:55 ]
Tytuł:  [bash] umieszczenie zmiennej

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?

Autor:  Mis' [ niedziela, 10 lutego 2008, 19:43 ]
Tytuł:  Re: [bash] umieszczenie zmiennej

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

Autor:  Kimas [ niedziela, 10 lutego 2008, 20:18 ]
Tytuł:  Re: [bash] umieszczenie zmiennej

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...

Autor:  pectosol [ niedziela, 10 lutego 2008, 21:40 ]
Tytuł: 

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

Autor:  Mis' [ niedziela, 10 lutego 2008, 22:30 ]
Tytuł:  Re: [bash] umieszczenie zmiennej

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ś?

Strona 1 z 1 Strefa czasowa UTC+2godz.
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/