Linux Labs

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

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

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

Шаг 2 из 6 · на машине · 7 мин

Окружение службы

Служба запускает скрипт в другом окружении, чем твой терминал, — и тот же путь в ней ведёт в другое место.

Путь archive/partial.tar.gz без / в начале — относительный: он считается от текущего каталога. В терминале это каталог, куда ты перешёл через cd. Службу systemd запускает без входа в систему: ей не достаются ни текущий каталог терминала, ни то, что настраивают ~/.profile и ~/.bashrc, — алиасы и добавки в PATH. Окружение службе даёт сам systemd.

Посмотреть на него можно, не трогая lab-backup: systemd-run запускает команду временной службой, --wait --pipe дожидается её конца и выводит её строки в терминал, -p User=student запускает её от тебя.

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

Сравни терминал и службу

В ~/sched-lab напечатай текущий каталог и PATH сначала в терминале, а потом во временной службе от student.

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

Какой каталог напечатает pwd во временной службе?

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

Войти и начать Машина доступна после входа

Служба начинает работу в корне, и data для неё — это /data. PATH у неё короткий, четыре каталога: программа из ~/bin или ~/.local/bin, которую ты запускаешь по имени в терминале, в службе не найдётся.

Чинят это с одной из двух сторон. В юните: строка WorkingDirectory=/home/student/sched-lab в разделе [Service] задаёт текущий каталог, Environment=PATH=… — PATH; после правки файла — sudo systemctl daemon-reload. В скрипте: абсолютные пути или cd в нужный каталог до первой команды, которой он нужен.

Ubuntu 24.04
Загрузка…