Анакрон не работает
У меня чистая установка Xubuntu 14.04 32-bit, и anacron
не похоже на работу.
Я прочитал, что лучше использовать задание cron для обрезки SSD, и что в Ubuntu для этого есть задание cron, поэтому я удалил сброс из /etc/fstab
, Я хотел подтвердить, что работа cron работает, поэтому я добавил echo
командовать /etc/cron.weekly/fstrim
так что это выглядит так:
#!/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
Он работает нормально с терминала, но никогда не работает как еженедельная работа. Поэтому я переместил его в cron.daily
, но это никогда не бежит оттуда также. Поэтому я переместил его в cron.hourly
и он работает каждый час. Текст эха появляется в файле, и индикатор диска загорается примерно на две минуты. Но cron.hourly
не использует anacron
,
Вот мой crontab
файл. Я несколько раз менялся, но, похоже, он не работал с оригинальным временем, которое пришло с 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 )
#
Я проверил, правильно ли он работает из crontab моего пользователя, поместив следующее в crontab -e. Затем я подождал несколько минут до 8:10 вечера, но ничего не произошло.
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 )
Я думаю, что он должен иметь правильный синтаксис для частей выполнения, потому что он запускается, когда я перемещаю скрипт в cron.hourly
,
Кажется, что cron
работает но anacron
не является. Итак, мой вопрос, что я могу сделать, чтобы получить anacron
за работой?
1 ответ
Я получил Anacron, работающий над моей системой, следующим образом:
В /etc/fstab
Я переместил некоторые каталоги в tmpfs
чтобы избежать записи на SSD, вот так:
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
Это означает, что /var/spool/anacron/
не существует во время загрузки, и, как следствие, anacron
не работает Три файла в этом каталоге должны быть сохранены во время загрузки системы, чтобы Anacron работал. Итак, я создал каталог /usr/local/etc/anacron/
и во время загрузки я создаю /var/spool/
и поместите в него символическую ссылку, которая указывает на этот каталог. Сейчас anacron
работает, потому что его три файла (cron.daily
, cron.weekly
, а также cron.monthly
) сохраняются через сапоги.
На самом деле, я создаю кучу каталогов при загрузке, как описано здесь: Как исправить anacron & cups-pdf, когда у вас есть / var на tempfs, но я изменил скрипт, чтобы он не создавал /var/spool/anacron
но вместо этого он создает символическую ссылку, упомянутую выше.
Полученный скрипт выглядит так:
#!/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
Вышеприведенный скрипт находится в моем домашнем каталоге и запускается во время загрузки командой /etc/rc.local
как описано в связанной статье.
Может быть, реальное решение этой проблемы было бы для anacron
хранить cron.daily
, cron.weekly
, а также cron.monthly
в каталоге, к которому пользователь вряд ли перейдет tmpfs
,