Tematy prac domowych

Backup Solution 1

Skrypt basha, który dokonuje kopii zapasowej plików użytkownika i dodatkowo spełnia następujące wymagania.

  1. Program jest konfigurowalny za pomocą plików konfiguracyjnych (wedle Państwa uznania) znajdujących się w katalogu ~/.config/sk/back1.

    Konfigurowalny jest:

    • Zestaw katalogów, których kopie wykonujemy.
    • Katalog docelowy, do ktorego wykonujemy kopię zapasową.
    • Pliki których (rozszerzenia, albo wyrażenia regularne) których kopii nie robimy
    • Maksymalny rozmiar plików które są kopiowane.
  2. Dodatkowo program będzie:

    • Kompresował katalogi i pliki
    • (opcjonalnie) szyfrował je

Backup Solution 2

Skrypt basha, który dokonuje kopii zapasowej plików użytkownika i dodatkowo spełnia następujące wymagania.

  1. Program jest konfigurowalny za pomocą plików konfiguracyjnych (wedle Państwa uznania) znajdujących się w katalogu ~/.config/sk/back2.

    Konfigurowalny jest tylko zestaw katalogów, których kopie wykonujemy:

    • Zestaw katalogów, których kopie wykonujemy.
    • Katalog docelowy, do ktorego wykonujemy kopię zapasową.
  2. Program działa następująco:

    1. Pobiera z katalogu z kopią zapasową plik zawierający datę ostatniej synchronizacji (ścieżką do tego pliku może być np. katalog_docelowy/.last-sync)
    2. Tworzy w katalogu docelowym katalog o nazwie zawierającej aktualną datę.
    3. Przesyła tam wszystkie pliki których czas modyfikacji lub stworzenia jest po dacie ostatniej synchronizacji.
    4. Program zapisuje datę ostatniej synchronizacji.

Start/stop deamon

Program, który służy do zarządzania stanem serwera.

Powiedzmy, że mamy program startujący serwer server.sh, nasz program będzie miał następujące polecenia:

  • start który startuje server.sh, jeśli server.sh już jest uruchomiony to polecenie informuje o błędzie.
  • stop który wyłącza server.sh jesli server.sh nie jest uruchomiony program informuje o błędzie.
  • restart, stopuje i startuje program
  • status wyświetla status programu.

Program wykrywa to czy server.sh jest uruchomione za pomocą tzw. pidfile.

Pid Files

PID to inaczej Proces ID, czyli numeryczny identyfikator procesu w linuksie.

By uruchomić program sleep 1000` w tle należy (polecenie sleep powoduje zarzymanie wykonania programu na zadaną liczbę sekund):

sleep 1000 & # Znak: & powoduje wysłanie polecenia "w tło"
pid=$! # Pobiera ID urucomionego procesu
disown # Powoduje że zadania "w tle" nie zostaną wyłączone po wylogowaniu się z sesji

Pid file to pliik zawierający id uruchomionego procesu, nasz skrypt będzie po wykonaniu start zapisze ID procesu do pliku, i przy następnym wykoaniu będzie sprawdzać czy program o zapisanim pid ciągle jest wykonywany.

Program sprawdzający czy inny program jest uruchomiony

Skryupt basha, który służy do zarządzania stanem serwera.

Powiedzmy, że mamy program startujący serwer server.sh, nasz program będzie miał jedno proste zadanie: co sekundę będzie sprawdzać czy serwer jest uruchomiony, a jeśli nie jest będzie go uruchamiać ponownie.

Program powinien korzystać z pidfiles (patrz: Start/stop deamon).

Program pobierający obrazki z serwera WWW

Program pobierający wszystkie obrazki z zadanej strony WWW.

Program powinien:

  • Pobrać stronę podaną “z linii komend” do pliku tymczasowego
  • Znaleźć w niej adresy obazków
  • Pobrać pliki obrazków
  • Usunąć plik z treścią strony

Program sprawdzający aktualność strony WWW

Program posiada w konfiguracji listę stron WWW.

  • Podczas wywołania pobiera każdą z nich i sprawdza czy jej treść się nie zmieniła.
  • Program zapamiętuje zmienione strony
  • Program wyświetla listę stron które zmienły się od ostatniego razu

Program implementujący folder “Kosz” w bashu

Proszę napisać skrypt pozwalający na usuwanie plików. Pliki przekazywane w argumencie należy kom- presować (jeśli nie są jeszcze skompresowane) i przenosić do katalogu-śmietnika. Przy każdym wywołaniu należy usuwać ze śmietnika pliki starsze niż 24 godziny. Należy umożliwić usuwanie plików oraz całych katalogów.

Informacja o zmianie parametrów komputera

Należy napisać skrypt który:

  1. przy pierwszym uruchomieniu wysyła na podany w pliku konfiguracyjnym adres e-mail informację o stanie parametrów komputera
  2. przy kolejnych uruchomieniach najpierw sprawdza, czy którykolwiek parametr się zmienił, jeśli tak to wysyła ponownie e-maila ze wszystkimi parametrami, jeśli nie to nic nie robi

Parametry jakie sprawdza program:

  • Adres IP komputera
  • Ilość Ram (polecenie free)
  • Ilość procesorów (polecenie cat /proc/cpuinfo).

Uruchamianie programów wielowątkowo

Mamy program który wykonuje obliczenia, program ten przyjmuje jako argument plik z konfiguracją symulacji, plik ten wygląda tak:

/emc/det/setMat  foo
/emc/scorers/dump/trajectories 0

/emc/initial_energy {EMC_ENERGY} MeV


/random/setSeeds {{ e.random_x }} {{ e.random_y }}

/run/beamOn 10000

Zadaniem skryptu jest:

  1. Stworzenie 10 plików konfiuracyjnych w katalogu tymczasowym, w plikach tych ciągi znaków: {{ e.random_x }} {{ e.random_y }} zamieniane są na liczby losowe, a {EMC_ENERGY} na energie. Energia przyjmuje wartości: 1, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000 MeV (inną w każdym pliku).

    Note

    Możesz spróbować: echo $RANDOM.

  2. Uruchomienie programu geant4sim.exe (w ramach ćwiczeń może on zawierać polecenie sleep 10), program ten jest uruchamiany 10 razy (raz z każdym plikiem konfiguracyjnym), każdy program jest uruchomiony w oddzielnym wątku.