В терминале работает. Через systemd — падает.

Почему?

Потому что сервис может запускаться в другом окружении.

Сценарий:

запускаем скрипт вручную → работает

создаём systemd unit → ошибка:

— команда не найдена; — файл не найден; — конфигурация отсутствует.

Частая ошибка диагностики:

сразу искать проблему в приложении.

Но сначала нужно проверить контекст запуска.

Что отличается:

— пользователь; — PATH; — рабочий каталог; — переменные окружения; — права доступа.

Проверяем unit:

User=

Кто запускает сервис?

WorkingDirectory=

Откуда выполняется команда?

Environment= EnvironmentFile=

Какие переменные передаются?

ExecStart=

Что именно запускается?

Важно:

ulimit, PATH и переменные вашей shell не являются доказательством того, что их получил systemd-сервис.

Главный источник информации:

journalctl -u имя-сервиса

Смотрите:

— ошибку; — пользователя; — момент запуска; — код завершения.

Типичная ошибка:

запустить сервис от root, чтобы «проверить, работает ли».

Так можно скрыть проблему с правами или окружением.

Правильный порядок:

unit-файл → пользователь → рабочий каталог → переменные → права → журнал.

Вывод:

Работа команды в терминале не гарантирует её работу через systemd.

Проверяйте не только приложение, а среду, в которой оно запускается.

Сохраните этот чек-лист диагностики systemd-сервисов.

😄VK | 💬Макс | 🌐 Cайт 🔹🔹🔹🔹

В терминале работает. Через systemd — падает.
Почему?
Потому что сервис может запускаться в другом окружении | Сетка — социальная сеть от hh.ru