Jak napisać skrypt w systemie Linux?

Laptop z kodem na ekranie - obrazek wektorowy
Laptop z kodem na ekranie - obrazek wektorowy

Pisanie skryptów w bashu to z pewnością przydatna umiejętność dla każdej osoby w świecie IT. Jest to z pewnością kluczowa umiejętność dla uczniów technikum informatycznych, studentów informatyki, czy dla przyszłych sysadminów. Może okazać się równie cenna dla zwykłych użytkowników systemu Linux. Umiejętność tworzenia skryptów, pozwoli nam np.: zautomatyzować wykonywanie powtarzalnych zadań na komputerze, stworzyć program, który będzie komunikował się z użytkownikiem i wykonywał powierzone mu operacje.

Od czego zacząć tworzenie skryptu w bashu?

Na samym początku tworzenia skryptu, otwórz wybrany przez siebie edytor tekstu, stwórz nowy plik i zapisz go pod nazwą np. skrypt.sh – ważnym jest, by rozszerzeniem Twojego pliku było .sh.

Teraz gdy mamy już gotowy plik, możemy zabrać się za pisanie skryptu. W pierwszej linijce, należy umieścić tzw. hashbang i zdefiniować powłokę, która będzie odpowiedzialna za wykonanie zawartych w skrypcie instrukcji.

#!/bin/bash
echo "Witaj świecie!"

Powyższy kod po uruchomieniu, wyświetli nam w konsoli tekst – „Witaj Świecie!”.

Jak uruchomić skrypt bashowy?

Nie ma w tym nic skomplikowanego. Na początek uruchamiamy konsolę/terminal i komendą cd przechodzimy do katalogu, w którym zapisaliśmy nasz skrypt. W naszym przypadku zrobimy to komendą:

cd /home/user/Pulpit/skrypty/

Niektóre dystrybucje oferują również możliwość otworzenia konsoli z poziomu graficznego – np. Ubuntu – wystarczy otworzyć folder w którym jest nasz skrypt, kliknąć prawym przyciskiem myszy w pustym miejscu i wybrać pozycję Otwórz terminal tutaj – efekt końcowy jest taki sam, jak po wykonaniu powyższej komendy.

Gdy znajdziemy się już w katalogu, w którym znajduje się nasz skrypt, wystarczy wpisać komendę:

sh skrypt.sh

Analogicznie możesz nadać uprawnienia wykonywania dla swojego skryptu komendą:

chmod +x skrypt.sh

i od teraz, możesz skrypt uruchamiać po prostu wpisując w terminalu:

./skrypt.sh

Efekt końcowy jest taki sam, jak przy wykorzystaniu komendy sh skrypt.sh.

Tworzenie zmiennych w bashu

Jeśli nie miałeś nigdy styczności z programowaniem, to możesz nie wiedzieć, czym jest zmienna. Zmienną można opisać jako pudełko, które przechowuje jakąś wartość. Dla przykładu możemy utworzyć zmienne, które będą przechowywać Twoje imię i dzisiejszą datę.

#!/bin/bash
Imie="Dominik"
Data=`date`
echo "Cześć ${Imie}, dzisiejsza data to: ${Data}"

W powyższym przykładzie stworzyliśmy zmienną o nazwie „Imie„, która przechowuje wartość „Dominik”. Stworzyliśmy też zmienną „Data”, która przechowuje aktualną datę. Istotną różnicą jest sposób zapisu – „Imie”, czyli ciąg znaków jest zapisany w cudzysłowie – oznacza to wartość typu string, czyli po prostu tekst. Natomiast „Data” ma przypisaną zawartość pomiędzy znakiem, który nosi nazwę grawis (backtick). Oznacza to mniej więcej tyle, że do zmiennej „Data” zostanie przypisana zawartość, która zostanie zwrócony wynik z komendy date.

Skrypt tworzący kopię zapasową (backup) wybranego folderu

Znasz już podstawy tworzenia skryptu, teraz czas nabrać trochę doświadczenia i zrobić coś, co faktycznie może się przydać. Pracujesz nad jakimś projektem? Może piszesz jakąś pracę? A może chciałbyś mieć kopię zapasową swoich zdjęć, czy innych plików? Prosty skrypt zapewni Ci spokojny sen – gdy przez przypadek usuniesz jakiś plik lub naniesiesz jakieś zmiany (a opcja Cofnij, nie zadziała) i nie będziesz mógł ich przywrócić do pierwotnego stanu. Wtedy właśnie kopia zapasowa jest najbardziej potrzebna 😊.

Przygotujemy prosty skrypt, który będzie tworzył kopię zapasową wybranego przez nas folderu, kompresował ją (dla oszczędności przestrzeni dyskowej) i zapisywał w wybranym przez nas miejscu.

#!/bin/bash        
Data=`date +"%H:%M_%d-%m-%y"`
Pliki="/home/user/Pulpit/moje-pliki"
Lokalizacja_kopii="/home/user/Pulpit/backup"
tar -zcpf ${Lokalizacja_kopii}/kopia-${Data}.tar.gz -C ${Pliki} .

W zmiennej Pliki przechowujemy adres do folderu, którego kopię zapasową chcemy tworzyć. W moim przypadku nazwaliśmy ten folder moje-pliki. W zmiennej Lokalizacja_kopii, jak nazwa wskazuje, mamy adres folderu, w którym będzie przechowywana nasza kopia zapasowa. W ostatniej linijce natomiast mamy komendę, która jest odpowiedzialna za kompresowanie naszych plików oraz skopiowanie ich do odpowiedniego miejsca. Skrypt zapisze nasz folder w skompresowanym archiwum o nazwie kopia-(aktualna_data).tar.gz.

Wskazówka: Warto jako lokalizację naszej kopii zapasowej wybrać np. zewnętrzny dysk podłączony do komputera – wtedy nawet w przypadku awarii naszego komputera / dysku, nasz backup będzie bezpieczny.

Automatyzacja tworzenia kopii zapasowych

Gdy mamy już stworzony skrypt, który zrobi nam kopię zapasową ważnych dla nas plików, warto byłoby go uruchamiać automatycznie. Dzięki temu, nie będziemy musieli robić kopii ręcznie. Tylko będzie zawsze na nas czekać. Do tego celu wykorzystamy jedno z najpotężniejszych i najważniejszych narzędzi w systemie Linux – czyli Crona (crontab). Pozwala on cyklicznie wykonywać różne komendy – np. komendę uruchamiającą nasz skrypt. Aby dodać zadanie do harmonogramu crontaba, należy edytować jego plik konfiguracyjny. Najprościej zrobić to komendą:

crontab -e

W konsoli uruchomi nam się edytor harmonogramu crontaba w którym możemy dopisać zadania, które ma on dla nas wykonać. Cron korzysta z własnego sposobu określania ram czasowych, w których ma się uruchamiać.

  • pierwsza kolumna oznacza minutę uruchomienia polecenia – [0-59],
  • druga to godzina – [0-23],
  • trzecia to dzień miesiąca – [1-31],
  • czwarta to miesiąc – [1-12],
  • piąta to dzień tygodnia – [0-7], 0 i 7 oznaczają niedzielę.

Najprościej zrozumieć crontaba na przykładzie.

Skrypt.sh uruchomi się co pół godziny: 11:30, 12:00…

*/30 * * * * sh /home/user/Pulpit/skrypt.sh

Skrypt uruchomi się co zegarową godzinę: 12:00, 13:00…

0 * * * * sh /home/user/Pulpit/skrypt.sh

Skrypt uruchomi się co trzy godziny: 12:00, 15:00…

* */3 * * * sh /home/user/Pulpit/skrypt.sh

Jest również narzędzie, które pomoże Ci przygotować bardziej skomplikowane ramy czasowe dla Twojego crontaba – Crontab.guru.

Podsumowanie

Po utworzeniu skryptu i podpięcia go do crontaba, mamy prosty system automatycznych kopii zapasowych, który tworzy się cyklicznie – w zależności od naszych potrzeb.

System ten można rozbudować na wiele różnych sposobów. Możesz stworzyć drugi skrypt, który będzie kasował pliki kopii zapasowej, starsze niż np. 7-14 dni. Dzięki temu zaoszczędzisz miejsce na dysku. Innym sposobem będzie wrzucanie plików naszej kopii na serwer w chmurze – np. po utworzeniu kopii, uruchamianie transferu FTP i upload na serwer! W ten sposób Twój backup będzie jeszcze lepiej zabezpieczony przed awarią. 😊

Share on facebook
Facebook
Share on twitter
Twitter

Proponowane wpisy

1 myśl na “Jak napisać skrypt w systemie Linux?”

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Sklep partnerski 💸

Kupując wspierasz działanie serwisu! ☕ Dziękujemy!

Najnowsze wpisy