Skrypty i crone 1 1. shell co to i co umozliwia, jakie są shell e 2. Języki skryptowe jakie, co umożliwiają 3. sh jak pisać skrypty, krótki przegląd poleceń i przykłady 4. wywoływanie skryptów, zmienna $PATH - jak modyfikować 5. crone co to jest, kiedy używać i do czego 6. Przydatne skrypty do crone Fvdfvd 1. shell co to i co umożliwia, jakie są shell e csdcvs 2. skrypty powłoki 2.1. Co to są skrypty Skrypty powłoki to programy składające się z: Poleceń powłoki Poleceń sterujących wykonaniem programu (for, if etc.) Skrypt piszemy, gdy pewne polecenia często wydawane można powiązać w jedno zamiast wywoływać kolejno polecenia piszemy skrypt. 2.2. Prawa dostępu do skryptów Użytkownik może używać skrypty, jeśli ma prawo ich uruchamiania. Nadawanie uprawnień: # chmod +x nazwa_skryptu <Enter> 2.3. Budowa skryptów W pierwszej linijce: specyfikacja powłoki, która zostanie użyta do jego wykonania. Dla powłoki bash: Najprostszy skrypt: echo ble ble ble Poza wypisywaniem: -operacje arytmetyczne - wczytywanie danych z klawiatury (read zmienna1,zmienna2, ) potem używamy $zmienna1 - instrukcje sterujące: if, for, while, until.
3. bash jak pisać skrypty, krótki przegląd poleceń i przykłady, wywoływanie skryptów, zmienna $PATH - jak modyfikować dcvsdcv 2 4. Wywoływanie skryptów o zadanym czasie Poleceniem uruchomienia zadania o zadanym czasie jest at. Pooglądać: # at --help Wywołanie (najprościej): at f plik_z_zadaniem czas uruchomienia zadania <Enter> lub: at czas_uruchomienia_zadania <Enter> plik_z_zadaniem <Enter> Określanie czasu uruchomienia zadania: Domyślnie: 24 h Dodanie przedrostka am lub pm 12 godzinne określanie czasu Minuty opcjonalnie Można podać daty: rok: 4 cyfry, miesiąc: 1-12 lub 3 pierwsze litery nazwy angielskiej, dzień tygodnia: 3 pierwsze litery nazwy angielskiej, Można używać: midnight (północ), noon (południe), today (dzisiaj), tomorrow (jutro) i now (teraz). Po now należy podać czas po jakim zadanie zostanie wykonane. Czas można określić względnie: po znaku + wpisujemy liczbę i jednostkę miary (minute, hour, day, week, year), np. at now + 15 minutes 5. crone automatyczne przetwarzanie zadań co to jest, kiedy używać i do czego 5.1. wprowadzenie co to i do czego W administrowaniu systemami konieczne jest wykonywanie pewnych zdań systematycznie i cyklicznie co pewien okres czasu raz w tygodniu, raz w miesiącu etc. Jakie to mogą być zadania? I jak często uruchamiane? wykrywanie wirusów/trojanów/innego paskudztwa parę razy dziennie przeszukiwanie systemu plików by usunąć nieistniejące dowiązania do plików np. raz w miesiącu, sprawdzanie zajętości systemów plików (quota) raz w tygodniu. Inne jakie? Do tego celu wykorzystuje się usługę systemową crond.
5.2 crond demon i jego zadania crond Tak naprawdę jest demonem tj. programem działającym ciągle w tle, któremu można zlecić wykonywanie zadań, które mają być cyklicznie wykonywane. 3 Polecenie wyświetli nam nazwy procesów (wszystkich): # ps A no i można znaleźć cron (a nie crond :/ ). Demon crond jest sterowany przez pozycje tablicy crontab: a) przechowuje oddzielnie dla każdego użytkownika w katalogu /var/spool/cron/ w plikach, których nazwa odpowiada nazwie użytkownika zlecającego demonowi crond owi zadanie do wykonania, b) przechowywane jako zlecenia tzw. główne (czyli systemowe) dla crond w pliku /etc/crontab/ Edytujemy plik /etc/crontab: # vi /etc/crontab można sobie pooglądać Pozycje w crontab może dodawać: a) każdy użytkownik, b) administrator i admin może stworzyć w tablicy crontab pozycje dla dowolnych użytkowników indywidualnych, c) administrator w katalogach: /etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly pozwala na wygodne realizowanie cyklicznych zadań. Ale jest jeden wymóg: trzeba stworzyć skrypt realizujący to jakieś nasze zadanie administracyjne i umieścić go w odpowiednim katalogu (jak zadanie realizowane co tydzień to w tym weekly etc.). Przypomnienie: terminarz opisany jest w: /etc/crontab i modyfikując go można go dopasować do swoich potrzeb. Pooglądamy sobie, że te katalogi /etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly rzeczywiście tam są: # mc i idziemy do /etc ładnie widać, lepiej niż po komendach cd/pwd ale lepiej mieć poczucie panowania nad tym, co robi system i KIEDY, czyli: lepiej wpisywac do tablicy crontab a nie wgrywać do katalogów cron.cośtam. Bo w cron.daily to kiedy on uruchamia skrypty? Hę? Nie ustalimy godziny no, chyba, że ktoś z Państwa wie gdzie się tych info dokopać, bo ja przyznaję, za bardzo nie szukałam.
5.3. Zarządzanie pozycjami w crontab: Do zarządzania pozycjami w crontab służy polecenie crontab. crontab modyfikacja pozycji tablicy crontab demona crond wywołanie: crontab [-u użytkownik] [opcje] gdzie opcje mogą być: -e utworzenie/zmiana pozycji tablicy crontab -l wyświetlenie zawartości tablicy crontab -r usunięcie pozycji tablicy crontab -u operacja na tablicy crontab podanego użytkownika (opcja tylko dla administratora systemu!) 4 Każda pozycja crontab ma postać: min godz dzien_miesiaca miesiąc dzien_tygodnia zadanie min1,min2,min3 godz dzien_miesiaca miesiąc dzien_tygodnia zadanie min-zakres,interwał min minuta po pełnej godzinie, kiedy zadanie ma być uruchomione (0-59) godz godzina, o której zadanie ma być uruchomione (0-23) dzien_miesiaca dzień miesiaca, w którym zadanie ma być uruchomione (1-31) miesiąc - miesiąc, w którym zadanie ma być uruchomione (1-12) dzien_tygodnia dzień tygodnia, w którym zadanie ma być uruchomione (0-6, 0 - niedziela) zadanie polecenie systemowe lub skrypt, który ma być przetwarzany w określonym czasie Pooglądamy sobie tablicę crontab: # crontab e ładnie się wyświetla, za dużo tam nie ma i nie całkiem rozumiem tamten zapis Przykład 1. Mamy za zadnie przeprowadzić skanowanie plików raz w tygodniu, w niedzielę o 5 rano. Cel: aktualizacja danych w plikach kontrolnych mechanizmu quota (dla przypomnienia: edquota -e). Oto wpis do tablicy crontab: 0 5 * * 0 /sbin/quotacheck auvg M albo wykorzystujemy skrypcik (na następnych slajdach) np.: 0 0 * * 0 /sbin/quota_check Przykład 2. Aby co 15 minut wywołać skrypt /root/status można zrobić to edytując pozycję crontab: 0,15,30,45 * * * * /root/status
5 albo można wykorzystać zapis wykorzystujący zakres i interwał: 0-59,15 * * * * /root/status 6. Przydatne skrypty do crone Przydatne jest systematyczne skanowanie systemów plików, by mieć wiarygodne info w plikach kontrolnych. Skanowanie powinno być cykliczne i ze stałą częstotliwością (np. raz na tydzień). Skrypty do uruchamiania najczęściej wykorzystywanych poleceń mechanizmu quota umieszczane np. w /sbin (bo tam jest część poleceń mechanizmu quota, i będzie względnie porządnie): quota_on #skrypt /sbin/quota_on if [ -x /sbin/quotaon ]; then echo Właczenie mechanizmu quota /sbin/quotaon -auvg fi quota_check #skrypt /sbin/quota_check if [ -x /sbin/quotacheck ]; then echo Aktualizacja plików kontrolnych mechanizmu quota echo Proszę czekać ;) /sbin/quotacheck auvg -M fi quota_off #skrypt /sbin/quota_off if [ -x /sbin/quotaoff ]; then echo Wyłaczenie mechanizmu quota /sbin/quotaoff auvg fi jeśli plik quota_check zostanie skopiowany do katalogu /etc/cron.weekly to zadanie skanowania systemów plików będzie wykonywane automatycznie raz na tydzień Przypominam o prawach wykonania dla plików skryptów!!! Przykład 1. Uruchomienie skryptu /sbin/quota_check: # /sbin/quota_check albo: idziemy do katalogu /sbin i wywołujemy skrypt:
6 #./quota_check (ale to Państwo już wiecie ćwiczycie na qnx-ie ) ew. bezpośrednio, gdy zmodyfikowaliśmy zmienną $PATH Przykład 2. Uruchomienie skryptu /sbin/quota_check cyklicznie co tydzień: Wgrywamy (kopiujemy) skrypt do katalogu: /etc/cron.weekly # cp /sbin/quota_check /etc/cron.weekly