Рейтинг:0

Не удается заставить crontab работать должным образом

флаг id

Я хочу делать ежедневную резервную копию своего домашнего каталога, выполнив следующий скрипт (я могу писать в /home):

   #!/бин/ш -е
   компакт-диск / дом
   лс -л 
   rm -f silbar.tar.gz
   эхо "стартовая смола"
   tar -czf silbar.tar.gz silbar
   кд ./силбар
   эхо "сделано с дегтем"
   звуковой сигнал

Для этого я создал свой личный файл crontab, введя ~$ crontab -e, и добавил следующее (и единственную строку, которая не является комментарием):

30 6 * * * mybackup.script 

предполагая, что мой crontab будет работать в моем домашнем каталоге.

Но ничего не происходит. Выполнение ~$ grep CRON /var/log/syslog показывает, помимо корневых вещей, следующую ошибку:

30 августа 06:30:01 Puma CRON[100126]: (silbar) CMD (mybackup.script)

30 августа 06:30:01 Puma CRON[100125]: (CRON) информация (MTA не установлен, выходные данные отбрасываются)

Итак, что я делаю неправильно? Что вообще такое МТА?

user535733 avatar
флаг cn
В вашем скрипте ошибка. Мы не знаем, что это за ошибка. Cron пытается отправить вам сообщение об ошибке по электронной почте, но ваша система не настроена для этого. Вместо того, чтобы возиться с настройкой MTA для cron, просто перенаправьте вывод ошибки в файл, чтобы вы могли его прочитать.
user535733 avatar
флаг cn
Пример: `30 6 * * * /home/silbar/mybackup.script > /home/silbar/backup.log 2>&1`
флаг cn
пожалуйста, не используйте /home для личных файлов. Единственное, что там должно быть, это пользовательские каталоги. Поместите их в другое место; также никогда не помещайте более 1 дома в файл tar; используйте 1 файл на /home/USER/ и поместите его в /home/USER (считайте это «лучшей практикой»). Это нарушение конфиденциальности, если вы этого не сделаете. И всегда используйте абсолютные пути при использовании cron. Это самый безопасный метод. "РМ" не нужен. «tar» по умолчанию перезаписывает без запроса.
Рейтинг:1
флаг cn

Возможно, вам потребуется ввести полный путь к вашему скрипту в файле cronjob.

Cronjobs запускаются с почти пустой средой. Таким образом, исполняемые файлы могут быть не найдены. То же самое касается команд в сценарии: укажите полные пути к командам или установите переменную PATH в своем сценарии.

Рейтинг:0
флаг id

Вау!, очень полезные ответы от пользователя 535733, Rinzwind, Vanadium и waltinator. Теперь он работает, как было предложено, используя bash и полные пути. Резервная копия теперь отправляется на флэш-диск (в любом случае, именно туда, куда я хотел), а не в /home.

Спасибо всем, Дик

Рейтинг:0
флаг it

Начиная с #!/бин/ш -е, вы заставляете свой скрипт работать с ш (битьИМХО лучше) вылетает при любой ошибке(мужской набор), поэтому нельзя обрабатывать ошибки. Ваш сценарий не работает, и хрон пытается отправить вам журнал по электронной почте. хрон не удается найти агент передачи сообщений (MTA). Электронная почта не настроена в вашей системе, даже для локальной доставки.

Вакансии проходят через хрон, или же системад сценарии запуска не запускаются в той же среде выполнения, что и на вашем рабочем столе. системад сценарии запуска запускаются как корень. Ни один из ваших ДОРОЖКА изменения или другие параметры переменных среды из ~/.bashrc автоматически распространяются на ваш хрон работа. Например, нет $ ДИСПЛЕЙ, поэтому программы с графическим интерфейсом нуждаются в особом подходе (читай человек).

Можно установить переменные окружения для всех своих хрон рабочие места в кронтаб файл Читать человек 5 кронтаб.

Посмотрите на результаты echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== псевдоним ===";псевдоним в каждой из ваших сред.

Поскольку команда часть кронтаб строка по умолчанию интерпретируется /бин/ш, который имеет более простой синтаксис, чем /бин/баш, рекомендую иметь команда быть призывом к бить скрипт (исполняемый, смонтированный, начинается с #!/бин/баш), который настраивает среду, а затем вызывает нужную программу.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.