Для протокола я хочу предложить использовать /etc/cron.d/
. Только root может писать файлы здесь, но записи могут быть настроены для запуска от имени любого пользователя (без необходимости sudo
во время выполнения),
echo '0 0 * * 0 webadmin /usr/local/bin/tidy_logfiles' >/etc/cron.d/my_webadmin
Важной частью является то, что my_webadmin
должен быть уникальным для вас (не обязательно уникальным для запуска, хотя), потому что любой пакет установки также может писать файлы здесь, и вы хотите избежать столкновения. Имея это ограничение уникальности, вы можете обновлять my_webadmin
простой перезаписью, поскольку вы знаете, что это "ваш" файл и он не будет содержать записей для кого-либо/чего-либо еще.
Более того, при таком подходе удаление записи cron становится тривиальным
rm -f /etc/cron.d/my_webadmin
Возможно, это выходит за рамки вашего вопроса, но если у вас есть удаленный доступ к учетной записи root (или через sudo
), вы можете даже предоставить удаленное обеспечение,
echo '0 0 * * 0 webadmin /usr/local/bin/tidy_logfiles' > ~/webadmin.cron
scp -p ~/webadmin.cron root@remote_host:/etc/cron.d/my_webadmin
или,
echo '0 0 * * 0 webadmin /usr/local/bin/tidy_logfiles' |
ssh -q root@remote_host 'cat >/etc/cron.d/my_webadmin'
и удалить инициализацию,
ssh -nq root@remote_host rm -f /etc/cron.d/my_webadmin
(Обратите внимание, что во многих случаях вы не можете предоставить пароль root для команд scp
/ssh
, потому что учетная запись root ограничена для предотвращения входа по паролю. Вместо этого вам необходимо установить сертификаты открытого/закрытого ключа. Кроме того, по косвенным признакам локальная учетная запись (какой бы она ни была) будет иметь полный root-доступ к удаленному серверу.)