1. shell – co to i co umożliwia, jakie są shell`e 2. skrypty powłoki
Transkrypt
1. shell – co to i co umożliwia, jakie są shell`e 2. skrypty powłoki
crone dr inż. Anna Zatwarnicka Skrypty i crone 1. 2. 3. 4. 5. 6. shell – co to i co umozliwia, jakie są shell’e Języki skryptowe – jakie, co umożliwiają sh – jak pisać skrypty, krótki przegląd poleceń i przykłady wywoływanie skryptów, zmienna $PATH - jak modyfikować crone – co to jest, kiedy używać i do czego 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: #!/bin/bash Najprostszy skrypt: #!/bin/bash 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. 1 crone dr inż. Anna Zatwarnicka 3. bash – jak pisać skrypty, krótki przegląd poleceń i przykłady, wywoływanie skryptów, zmienna $PATH jak modyfikować dcvsdcv 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. 2 crone dr inż. Anna Zatwarnicka 3 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. Przykład: 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/ Przykład: 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. Przykład: 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. crone dr inż. Anna Zatwarnicka 4 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!) 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 Przykład: 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 crone dr inż. Anna Zatwarnicka 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 #!/bin/bash #skrypt /sbin/quota_on if [ -x /sbin/quotaon ]; then echo ”Właczenie mechanizmu quota” /sbin/quotaon -auvg fi quota_check #!/bin/bash #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 #!/bin/bash #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: crone dr inż. Anna Zatwarnicka # ./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 6