anacron não está funcionando

4

Eu tenho uma instalação limpa do Xubuntu 14.04 de 32 bits e anacron parece não estar funcionando.

Eu li que é melhor usar um cron job para cortar SSDs, e que o Ubuntu tem um cron job para fazer isso, então eu removi o descarte de /etc/fstab . Eu queria confirmar que a tarefa do cron estava funcionando, então adicionei um comando echo a /etc/cron.weekly/fstrim para que fique assim:

#!/bin/sh
# call fstrim-all to trim all mounted file systems which support it
echo "Trim started on" $(date) >> /home/dominic/Desktop/Trim_Runs
set -e
# This only runs on Intel and Samsung SSDs by default, as some SSDs with faulty
# firmware may encounter data loss problems when running fstrim under high I/O
# load (e. g.  https://launchpad.net/bugs/1259829). You can append the
# --no-model-check option here to disable the vendor check and run fstrim on
# all SSD drives.
exec fstrim-all

Funciona bem a partir de um terminal, mas nunca é executado como um trabalho semanal. Então eu mudei para cron.daily , mas nunca sai de lá também. Então, mudei para cron.hourly e ele é executado a cada hora. O texto de eco aparece no arquivo e a luz da unidade acende por cerca de dois minutos. Mas cron.hourly não usa anacron .

Aqui está o meu arquivo crontab . Eu mudei algumas vezes, mas parece que não funcionou com os tempos originais que vieram com o Xubuntu.

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the 'crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user  command
17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 16   * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report      /etc/cron.daily )
47 6    * * 1   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

Eu testei para ver se ele rodaria corretamente a partir do crontab do meu usuário colocando o seguinte em crontab -e. Então eu esperei alguns minutos até as 8:10 da noite, mas nada aconteceu.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

10 20   * * *   test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

Eu acho que ele deve ter a sintaxe correta para as partes de execução, porque ele é executado quando eu movo o script para cron.hourly .

Parece que cron está funcionando, mas anacron não está. Então, minha pergunta é: o que posso fazer para obter anacron funcionando?

    
por Dominic 19.05.2014 / 23:40

1 resposta

1

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 .

    
por Dominic 25.05.2014 / 05:12