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

Podobne dokumenty