anacron, не работающий

У меня есть чистая установка 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 работа?

4
задан 4 November 2016 в 17:12

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 и 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.

1
ответ дан 1 December 2019 в 10:44

Другие вопросы по тегам:

Похожие вопросы: