Wywo

Konfiguracja serwerów, usług, itp.
env002
Posty: 48
Rejestracja: 24 października 2009, 12:43

Wywołanie skryptu BASH poprzez CRON + GBAK

Post autor: env002 »

Chcę zrobić sobie plik .sh o zawartości:

Kod: Zaznacz cały

#!/bin/bash
 find /directoryname -type f -mtime +7 -exec rm {} \;
Chcę użyć crona.
Chcę ustawić tak, aby co noc, o 2 w nocy uruchamiał się mój skrypt sh o którym pisze wyżej.
Chcę ustawić tak, aby co noc, o 3 w nocy uruchamiał się gbak z określonymi parametrami i robił backup pliku bazy danych na partycje na 2 dysku.

Czy do crona wstawic odwolanie do pliku .sh i osobno - na żywca - do gbaka?
Jak to powinno wygladać?

Aktualizacja
Jak myślę to zrobić - proszę o ocenę czy będzie dobrze

Do pliku /etc/cron.d/crontab dodać:
00 02 * * * root find /directoryname -type f -mtime +7 -exec rm {} \;
00 03 * * * root f TUTAJ GBAK O OKRESLONYCH PARAMETRACH
Czy nigdzie nie trzeba podawać hasła roota? Po prostu będzie działać?
Awatar użytkownika
aksnet
Posty: 53
Rejestracja: 25 maja 2013, 13:44
Lokalizacja: ifb0

Post autor: aksnet »

Odwołaj się w cronie do plików (np. skrypt.sh i gbak.sh z podaniem pełnych ścieżek)
i dopiero w tych plikach zdefiniuj szczegóły. W razie błędów lub przyszłych zmian nie będziesz
musiał poprawiać tego w cronie.


Ja stworzyłem sobie pliczek o nazwie cron_hourly.sh, który jest uruchamiany w cronie co godzinę.
W pliku są rozpoznawane godziny/dni tygodnia/dni miesiąca/dni roku i mam pełną kontrolę nad
skryptami uruchamianymi na rok do przodu z dokładnością co do godziny.
U mnie to się sprawdza, w razie zmian mam dużą swobodę i nie muszę grzebać w cronie.

w cronie dopisuje na stałe tylko jedną linijkę:

Kod: Zaznacz cały

# uruchamiamy pilk cron_hourly.sh co godzine
00 * * * * root /usr/aksnet/cron_hourly.sh 1> /dev/null

przykład cron_hourly.sh :

Kod: Zaznacz cały

#!/bin/sh

#================================================================
# plik uruchamiany co godzine
# w okreslonych porach uruchamia skrypty
#================================================================


godzina=$(date '+%k')    # 0-23
dayOfWeek=$(date '+%u')  # 1-7 (Monday=1)
dayOfMonth=$(date '+%d') # 1-31 
dayOfYear=$(date '+%j')  # 001 - 366

# echo $godzina
# echo $dayOfWeek
# echo $dayOfMonth
# echo $dayOfYear



# o godzinie x  oraz y ...  uruchamiamy plik qos.sh
if [[ $godzina -eq 0 || $godzina -eq 8 || $godzina -eq 12 || $godzina -eq 17 ]] 
then
  cd /usr/aksnet/qos
    ./qos.sh
fi   

# ----------- restart serwera o godzinie 5:00 rano ----------------
#------------ restartujemy serwer co 7 dni ----------------------

if [[ $godzina -eq 5 && `expr $dayOfYear % 7` -eq 0 ]] 
then    
        reboot
fi   

#=================================================================

ODPOWIEDZ