# [risolto] problema con fcron e preocessi saltati

## lele_dj

Ciao gente, 

non riesco a capire come fare funzionare a dovere fcron

mi spiego meglio .... in fcrontab ho inserito una riga che mi lancia uno script per il backup del sistema una volta a settimana ad una determinata ora:

```
xyz lele # fcrontab -l

12:20:57 listing root's fcrontab

30 21 * * 1 bash /home/lele/script/backup.sh
```

lo script che viene lanciato è il seguente:

```
#!/bin/sh

mount /mnt/backup

mount /boot

# What to backup. 

backup_files="/bin /boot /dev /etc /home /lib /lib32 /lib64 /opt /root /sbin /usr /var"

# Where to backup to.

dest="/mnt/backup"

# Create archive filename.

day=$(date +%F)

hostname=$(hostname -s)

archive_file="$hostname-$day.tar.bz2"

# Backup the files using tar.

sleep 5

tar -cvjf $dest/$archive_file $backup_files

sleep 5

umount /mnt/backup

umount /boot
```

se il pc è acceso fcron fa il suo dovere senza problemi .... il problema sorge se il pc al momento del lancio dello script da fcron è spento

naturalmente fcron è nel runlevel default

```
xyz lele # rc-update show

           alsasound | boot                          

            bootmisc | boot                          

             checkfs | boot                          

           checkroot | boot                          

               clock | boot                          

         consolefont | boot                          

                dbus |      default                  

               fcron |      default                  

                hald |      default                  

            hostname | boot                          

             keymaps | boot                          

               local |      default nonetwork        

          localmount | boot                          

             modules | boot                          

            net.eth0 |      default                  

              net.lo | boot                          

            netmount |      default                  

           rmnologin | boot                          

           syslog-ng |      default                  

      udev-postmount |      default                  

             urandom | boot                          

                 xdm |      default
```

ho sostituito vixie-cron con fcron perchè quest'ultimo è in grado di recuperare al riavvio i processi saltati in caso di pc spento ... ma questo non succede .... dove sbaglio?Last edited by lele_dj on Sun Dec 12, 2010 10:24 pm; edited 1 time in total

----------

## cloc3

 *lele_dj wrote:*   

> 
> 
> ho sostituito vixie-cron con fcron perchè quest'ultimo è in grado di recuperare al riavvio i processi saltati in caso di pc spento ... 

 non conosco fcron.

ma non puoi ottenere lo stesso effetto con uno script in /etc/conf.d/local ?

----------

## lele_dj

 *cloc3 wrote:*   

> non conosco fcron.
> 
> ma non puoi ottenere lo stesso effetto con uno script in /etc/conf.d/local ?

 

Sinceramente non saprei nemmeno da dove cominciare a fare quello che dici tu   :Rolling Eyes: 

----------

## cloc3

 *lele_dj wrote:*   

> 
> 
> Sinceramente non saprei nemmeno da dove cominciare a fare quello che dici tu  

 

è semplice.

in gentoo, la cartella /etc/conf.d contiene un insieme di script di bash che possono essere avviati quando si accende il servizio omonimo.

a pensarci bene, puoi creare un file sul percorso /etc/conf.d/vixie-cron.

appena vixie-cron si avvia (cioè all'accensione del computer) esegue le istruzioni personalizzate che hai inserito in quel file.

in questo modo, puoi istruire lo script a verificare le evenutali operazioni non effettuate ed eseguirle.

esempio banale:

```

aspi2 ~ # cat /etc/conf.d/vixie-cron 

#!/bin/sh

[ -f /var/run/cron.pid ] || date >>/tmp/vixie-cron

```

il controllo su cron.pid evita di eseguire lo script allo spegnimento del servizio.

----------

## xdarma

 *lele_dj wrote:*   

> mi spiego meglio .... in fcrontab ho inserito una riga che mi lancia uno script per il backup del sistema una volta a settimana ad una determinata ora:
> 
> ```
> xyz lele # fcrontab -l
> 
> ...

 

Non conosco fcron (anche se mi era sembrato interessante in fase di installazione), comunque dalle pagine della documentazione ho trovato questo:

 *Quote:*   

> Valid options in a fcrontab
> 
> bootrun, b
> 
> boolean(false)
> ...

 

Un altra possibilità di fcron è di lanciare un comando in base all'uptime del sistema, quindi non necessariamente ogni settimana ma ogni 7 giorni di uso:

 *Quote:*   

> Entries based on elapsed system up time
> 
> The entries of commands which have to be run once every m minutes of fcron's execution (which is normally the same as m minutes of system's execution) are of the form
> 
> ```
> ...

 

Se decidi di abbandonare fcron, oltre al metodo suggerito da cloc3 c'è qualcosa di preposto/riadattabile: anacron.

 *Quote:*   

> Anacron can be used to execute commands periodically, with a frequency specified in days. Unlike cron(8), it does not assume that the machine is running continuously. Hence, it can be used on machines that aren't running 24 hours a day, to control daily, weekly, and monthly jobs that are usually controlled by cron.

 

Ciao.

----------

## lele_dj

Finalmente funziona ....

è bastato modificare la riga di fcrontab 

da

```
30 21 * * 1 bash /home/lele/script/backup.sh
```

a

```
&bootrun 30 21 * * 0 bash /home/lele/script/backup.sh
```

P.S. grazie mille a tutti per l'interesse 

@cloc3 ... il metodo che mi hai postato tu mi sembra molto interessante .... purtroppo però sono ancora alle prime armi e non sono ancora in grado di mettere mano in maniera così invasiva ai file di configurazione ... per questo mi affido a programmi già pronti per l'uso   :Wink: 

Ciao

----------

## cloc3

 *lele_dj wrote:*   

> purtroppo però sono ancora alle prime armi e non sono ancora in grado di mettere mano in maniera così invasiva ai file di configurazione ... per questo mi affido a programmi già pronti per l'uso  
> 
> 

 

nel rispetto della tua libertà di scelta ...

non sono del tutto daccordo con quello che dici.

se sei riuscito a ottenere da solo quello che volevi da fcron significa che non sei più alle prime armi.

quindi, sei perfettamente in grado (se lo desideri) anche di seguire il mio consiglio.

ciò che ho scritto non è assolutamente invasivo, ma è un modo corretto di utilizzare openrc.

ls cartella /etc/conf.d, infatti, è uno strumento caratteristico di gentoo (nelle altre distribuzioni sei costretto a mettere mano ai file di /etc/rc.x - e questo sarebbe decisamente invasivo). dunque, segliendo quella strada otterresti lo stesso risultato con degli strumenti forniti di default dalla distro.

l'unica cosa che devi fare (perché vixie-cron non è capace) è imparare la bash che ti serve per emulare le funzionalità di fcron.

ma ti accorgerai presto (se non lo sai già) che una buona lettura di man bash è pane quotidiano per un utente unix ben impostato.

----------

