Использовать cron
.
Сказать crontab -e
как корень — или sudo crontab -e
если Вы имеете sudo
настроенный — и помещенный следующее в файл, который подходит в текстовом редакторе:
0 9 * * * cp /etc/hosts_worktime /etc/hosts
0 16 * * * cp /etc/hosts_playtime /etc/hosts
Это говорит это относительно нулевой минуты 9-х и 16-х часов каждого дня месяца, перезаписи /etc/hosts
использование данных команд оболочки.
Вы могли бы на самом деле хотеть что-то немного более сложное:
0 9 * * 1-5 cp /etc/hosts_worktime /etc/hosts
0 16 * * 1-5 cp /etc/hosts_playtime /etc/hosts
То одно изменение — помещение 1-5
в пятом положении — говорит, что изменение между рабочим временем и временем воспроизведения происходит только в понедельник в течение пятницы.
Сказать man 5 crontab
получить полное объяснение того, что все можно сделать в a crontab
файл.
Между прочим, я изменил имена Вашего hosts
файлы выше, потому что hosts_allow
слишком близко к hosts.allow
, используемый оболочками tcp.
Необходимо использовать logrotate. Сделайте что-то вроде этого
кошка/etc/logrotate.conf
/path/foo.txt {
size 50M
create 700 root root
rotate 5
}
размер 50M – logrotate работает, только если размер файла равен (или больше, чем), этот размер.
создайте – поворачивают исходный файл и создают новый файл с указанным разрешением, пользователем и группой.
вращайтесь – ограничивает количество вращения файла журнала. Так, это сохранило бы только недавние 5 повернутых файлов журнала.
Что-то как этот?
LF=foo.txt
typeset -i LFSB LFSM LOGFILE=50
let LFSB=$(stat -c "%s" $LF)
# This is bytes - turn into MB, base 2
let LFSM=${LFSB}/1048576
if [ $LFSM -gt $LOGFILE ]
then
echo Logfile $LF is greater than $LOGFILE MB
else
echo Logfile $LF is less or equal than $LOGFILE MB
fi
Я использовал tail
сделать это. Это - больше быстрого и грязного уважения решения к logrotate
, но это делает задание.
Вот то, что я вставил свой сценарий:
# in the preceding lines, the log file is updated, with new content at the
# bottom.
# every update causes the file to exceed the size limit (set to 1MB)
# using tail, put the last 1MB of the file in a temporary file
/usr/bin/tail -c 1MB /your/path/here/logfile.log > /your/path/here//temp 2>&1
# overwrite the older and oversized log file with the new one
/bin/mv /your/path/here/temp /your/path/here/logfile.log