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