Eu tenho um anacron trabalhando no meu sistema, da seguinte forma:
Em /etc/fstab
eu tenho alguns diretórios movidos para tmpfs
para evitar gravações no SSD, assim:
tmpfs /tmp tmpfs nodev,nosuid,noatime,mode=1777 0 0
tmpfs /var/spool tmpfs nodev,nosuid,noatime,mode=1777 0 0
tmpfs /var/log tmpfs nodev,nosuid,noatime,mode=0755 0 0
Isso significa que /var/spool/anacron/
não existe no momento da inicialização e, como resultado, anacron
não funciona. Os três arquivos nesse diretório devem ser preservados nas inicializações do sistema para que o anacron funcione. Então eu criei um diretório /usr/local/etc/anacron/
, e na hora do boot eu criei /var/spool/
e coloquei um symlink nele que aponta para aquele diretório. Agora, anacron
está funcionando porque seus três arquivos ( cron.daily
, cron.weekly
e cron.monthly
) são preservados nas inicializações.
Na verdade, eu crio vários diretórios na inicialização, conforme descrito aqui:
Como corrigir anacron & amp; cups-pdf quando você tem / var em tempfs mas eu modifiquei o script para que ele não crie /var/spool/anacron
, mas ele cria o link simbólico mencionado acima.
O script resultante é assim:
#!/bin/bash
# Script to create required directories in tempfs /var/log (that are not otherwise created).
# This script is needed because I have some directories moved to tmpfs in /etc/fstab.
# That means these directories disappear every time I shut down.
# Programs should create them if they do not exist, but some, like anacron, fail to do so, and then fail to run.
# So I create them here. I don't know where it gets the permissions from, or whether they are right.
# Thanks to http://blog.philippklaus.de/2011/02/ssd-optimizations-on-linux/ for the list below :-)
for dir in apparmor apt ConsoleKit cups dist-upgrade fsck gdm hp installer lightdm news ntpstats samba speech-dispatcher unattended-upgrades upstart; do
if [ ! -d /var/log/$dir ] ; then
mkdir /var/log/$dir
fi
done
# And in /var/spool.
for dir in cups-pdf; do
if [ ! -d /var/spool/$dir ] ; then
mkdir /var/spool/$dir
fi
done
# Create the symlink.
ln -s /usr/local/etc/anacron /var/spool/anacron
O script acima está no meu diretório inicial e é executado no momento da inicialização por um comando em /etc/rc.local
, conforme descrito no artigo vinculado.
Talvez a solução real para esse problema seja anacron
armazenar cron.daily
, cron.weekly
e cron.monthly
em um diretório que o usuário provavelmente não moverá para tmpfs
.