У меня есть чистая установка 32-разрядного Xubuntu 14.04, и anacron
кажется, не работает.
Я считал, что лучше использовать задание крона для обрезки SSD, и что Ubuntu имеет задание крона, чтобы сделать это, таким образом, я удалил отбрасывание из /etc/fstab
. Я хотел подтвердить, что задание крона работало, таким образом, я добавил 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. Затем я ожидал несколько минут до 20: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
работа?
Я получил 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 и 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
.