UWAGA: w trakcie wykonywania poniższych ćwiczeń staraj się unikać wszelkich eksperymentów prowadzących do całkowitego lub częściowego zatkania komputera i/lub zapchania dysków (ewentualnie przeprowadź takie eksperymenty na własnym komputerze domowym).

  1. Zapoznaj się z pojęciem i działaniem procesów i sygnałów w Unixie (rozdział 5 książki Nemeth etc.). W szczególności zwróć uwagę na sekcję 5.11 (Problemy z procesami). Następnie, pisząc krótkie skrypty zasymuluj procesy:

    Sprawdź wysyłanie do procesu różnych sygnałów (SIGTERM, SIGINT, SIGQUIT, ale także SIGFPE, SIGILL), a następnie rozbuduj skrypty o przechwytywanie tych sygnałów (trap) i sprawdź, że to działa.

    Sprawdź możliwość uśmiercenia sygnałem SIGKILL procesu, który przechwytuje wszystkie 15 sygnałów.

    Sprawdź możliwość zawieszania procesu sygnałem SIGSTOP i wznawiania sygnałem SIGCONT

  2. Spróbuj wyprodukować proces typu zombie i sprawdź jak pojawia się on na liście procesów ps (Linux, Solaris), a następnie za pomocą wbudowanego polecenia wait spowoduj uwolnienie procesu zombie i jego poprawne zakończenie.

  3. Sprawdź wartości priorytetów procesów i przećwicz obniżanie priorytetu pracującego w tle procesu (nice/renice).

  4. Zapoznaj się z systemem cron i za pomocą programu crontab uruchom okresowe zadanie i sprawdź jego działanie. Następnie zmodyfikuj zadanie poleceniem crontab i ponownie sprawdź jego działanie.

  5. Napisz skrypt służący do sprawdzania każdego pierwszego dnia miesiąca (trudniejsza alternatywa: w każdy poniedziałek), dla wskazanego zestawu logów systemowych, czy nie przekraczają one określonej długości (MAXCHARS znaków), a jeśli tak to skracający je do ostatnich TRUNCLINES linijek. Ze względu na możliwość zgaszenia systemu na nieokreślony czas skrypt powinien, przed rozpoczęciem pracy, zaprogramować swoje następne wywołanie komendą at. Nie można używać crona!

  6. Zapoznaj się z systemem syslog, i poleceniem logger wyślij serię komunikatów kategorii local7 i wszystkich poziomów