#Что означает сообщение
status=203/EXEC
systemd status=203/EXEC появляется, когда служба не может выполнить команду из ExecStart: путь неверен, файл не исполняемый или указан неподходящий интерпретатор.
#Как отличить причины
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Неверный путь | При диагностике «systemd: status=203/EXEC — сервис не запускается» уточните, какой файл, каталог или запись вызывает отказ, и сравните время её изменения с началом ошибки. Важно сопоставить проверку с исходным симптомом, а не с догадкой. | Для случая «systemd: status=203/EXEC — сервис не запускается» исправляйте целевой файл или запись и оставляйте исходник на случай отката. Для проверки результата повторите только прежнее действие. |
| Нет прав | Уточните, какой пользователь и к какому объекту обращается; проверьте сообщение об отказе, состояние учётной записи и требуемую роль. Учитывайте версию systemd и условия сбоя. | Для случая «systemd: status=203/EXEC — сервис не запускается» восстановите конкретное разрешение или штатную процедуру входа. Изменения вносите по одному, с возможностью возврата. |
| Shebang | Сравните момент появления признака «Shebang» с тем, когда ранее работала нужная функция. Учитывайте версию systemd и условия сбоя. | Исправляйте только подтверждённый фактор «Shebang», сохраняя прежние настройки. Для проверки результата повторите только прежнее действие. |
| CRLF | Сравните момент появления признака «CRLF» с тем, когда ранее работала нужная функция. Учитывайте версию systemd и условия сбоя. | Исправляйте только подтверждённый фактор «CRLF», сохраняя прежние настройки. Изменения вносите по одному, с возможностью возврата. |
#Пошаговое решение
- Зафиксируйте ошибку и проверьте условияНа Linux-сервере выполните
systemctl status имя.service --no-pager -lи найдитеstatus=203/EXEC, затемsystemctl cat имя.serviceдля просмотра фактическогоExecStart. Ошибка обычно означает, что systemd не смог запустить указанный исполняемый файл; причины видны вjournalctl -u имя.service -b. - Выполните основную проверку и исправлениеПо реальному пути из ExecStart выполните
ls -l /путь/к/программе,file /путь/к/программеи проверьте право исполнения и наличие интерпретатора в shebang для сценария. Если файл находится на разделе сnoexec, исправляйте архитектуру размещения, а не назначайте всем права 777. - Исключите другие подтверждённые причиныЕсли бинарник существует, но ошибка сохраняется, проверьте путь к интерпретатору, перевод строк CRLF у скрипта, совместимость исполняемого файла и зависимости. Изменяйте unit-файл через
systemctl editили соответствующий исходный файл с резервной копией, не подменяя/usr/bin/bashфиктивным путём. - Проверьте, действительно ли проблема решенаПосле исправления выполните
sudo systemctl daemon-reload, затемsudo systemctl start имя.serviceиsystemctl status. Если 203/EXEC исчез, но служба завершилась с другим кодом, исследуйте новую ошибку приложения; не скрывайте её бесконечными перезапусками.
#Что важно перед исправлением
Не выдавайте права 777 исполняемому файлу. Если служба должна работать без root, сохраните ограниченные права её пользователя.