Linux Labs

Bash: обработка текста и скрипты / Ступень 8 из 9

Скрипт по расписанию: окружение, журнал, блокировка

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 1 из 6 · на машине · 5 мин

Руками работает, службой — нет

Чему научишься

  • Запускать скрипт службой systemd с нужным каталогом и находить его вывод в журнале службы.
  • Объяснять, чем окружение службы отличается от терминала, — текущий каталог и PATH.
  • Не давать второй копии скрипта начать работу через flock в начале скрипта.

Коллега написал ~/sched-lab/backup.sh — копию каталога data в каталог archive — и поставил его на ночной таймер lab-backup. Руками скрипт работает, а утром новых архивов нет. Запусти копию руками, потом той же службой, которую запускает таймер, и прочитай журнал службы.

Упражнение · посмотреть

Запусти копию руками и службой

В ~/sched-lab запусти backup.sh руками, потом ту же копию службой lab-backup и прочитай журнал службы.

Сначала предположи

Руками скрипт сохранил архив. Что ответит sudo systemctl start lab-backup.service?

Теперь начни упражнение, выполни команду и сверь прогноз с выводом.

Войти и начать Машина доступна после входа
Проверь себя 1 вопрос

Руками backup.sh нашёл data и archive, а в службе tar пишет No such file or directory. Почему?

  • В юните стоит User=student — проверь systemctl cat lab-backup.service. А root открыл бы каталоги student без ошибок.

  • Первая строка скрипта, #!/bin/bash, выбирает bash и в службе. tar запустился — это его строки в журнале.

Пути data и archive/… относительные, а текущий каталог у службы другой.

Ubuntu 24.04
Загрузка…