Похоже, вы помещаете контент, который должен быть в /etc/hosts
в /etc/host.conf
.
/etc/host.conf
— это файл , определяющий, как должна работать команда host
. Это не база данных поиска. В CentOS по умолчанию мои системы содержат только одну строку:
multi on
/etc/hosts
— это база данных поиска, в которую вы должны поместить определения различных хостов , например:
154.70.157.36 ns1.suretelcom.co.ug hostname
Ваш синтаксис выглядит нормально, поэтому, если вы поместите правильный контент в правильные файлы, я думаю, вы получите ожидаемые результаты.
Если вы новичок, я предлагаю, возможно, использовать crontab-интерфейс, например crontab.guru для понимания crontab.
Однако, как и в вашем случае, настройка часа допускает значения только от 0 до 23, поэтому здесь вы не можете использовать crontab.
Вместо этого я бы предложил использовать at
. В вашем случае я бы, вероятно, использовал что-то вроде:
at now + 64 hours
, а затем введите команду или
echo "<your command>" | at now + 64 hours
в начале вашего скрипта и т. д. По сути, вы будете планировать выполнение команды сразу после того, как команда была вызвана в последний раз. Кроме того, если вам нужна не временная дельта, а точное время, я предлагаю выполнить небольшую арифметику времени, а затем использовать точное время с at
для запуска команды.
Я настоятельно рекомендую прочитать справочную страницу at
, так как она довольно исчерпывающая.
cron
предназначен для запуска вещей по событиям даты или времени, т. е. каждое 1-е число месяца или недели или каждый третий час дня соответственно.
Для запуска вещей во временных интервалах, которые нельзя просто выразить арифметически по часам или датам, я бы предложил использовать systemd
таймер -, который, конечно, работает только в том случае, если systemd
работает на вашем соответствующем устройстве. устройство.
Вам понадобятся два файла: служебный файл для запуска скрипта и файл таймера для управления событиями.
$cat /etc/systemd/system/myscript.service
[Unit]
Description=this service runs my script
[Service]
ExecStart=/full/path/to/myscript.sh
#[Install]
#WantedBy=multi-user.target
Эта служба просто выполняет скрипт, не проверяя, успешно ли он выполнился. При необходимости включите службу через systemctl enable myscript.service
, что означает, что она будет выполняться один раз во время загрузки -. Я прокомментировал это, потому что таймер будет заботиться о событиях загрузки. Вы можете запустить свой скрипт вручную systemctl start myscript.service
.
$cat /etc/systemd/system/myscript.timer
[Unit]
Description=this timer runs myscript.service every 64h
[Timer]
OnBootSec=120
OnUnitActiveSec=64h
[Install]
WantedBy=timers.target
Это таймер для запуска myscript.service
каждые 64 часа с момента последней активации службы, а также через две минуты после загрузки (, чтобы убедиться, что система находится в правильном состоянии для запуска службы ). ]. Обратите внимание, что таймер не запоминает 64 часа, если вы перезагружаете/выключаете питание. Включите и запустите таймер соответствующим образом:
systemctl enable myscript.timer
systemctl start myscript.timer
Поскольку таймер запускается только после загрузки или после последней активации устройства, вам придется запустить службу один раз, чтобы убедиться, что таймер работает:
systemctl start myscript.service
Проверьте состояние таймеров с помощью
.systemctl list-timers
64 часа — это 2 и 2/3 дня, поэтому 3 *64 часа = 192 часа = 8 дней. Таким образом, вы могли бы почти сделать
0 0 1-25/8 * * foo
0 16 3-27/8 * * foo
0 8 6-30/8 * * foo
за исключением того, что вы получите короткий шаблон в конце месяца (если в месяце 30 дней, то между запуском в 08 :00 30-го числа и запуском в 00 будет только 16 часов. :00 1 числа; если в месяце 31 день, то будет 40 часов; если в месяце 28 дней, между запуском в 16 :00 27-го числа и в 00 :00 1-го числа будет 32 часа; если в месяце 29 дней, то будет 56 ), а также все будет смещаться на 1 час всякий раз, когда в вашей местности переходит на летнее время (или выходит из него ).
Не совсем соответствует вашим спецификациям, (и я поддерживаю любые другие ответы, которые соответствуют ), но это — интересное упражнение в выполнении.
Удивлен, что никто не упомянул ни одну из:-
Анакрон
Он входит в стандартную комплектацию большинства дистрибутивов.