фон:
Я хочу автоматически выполнять скрипт Python при запуске сервера, поэтому я превратил его в службу Linux.
в /etc/systemd/system/myclock.service
[Unit]
Description=my first linux service
[Service]
Type=simple
ExecStart=/data/mytools/python38/bin/python3 /data/myclock.py
[Install]
WantedBy=multi-user.target
После ввода следующей команды:
systemctl daemon-reload
systemctl start myclock.service
systemctl status myclock.service
Выяснилось, что служба не запускалась, и сообщалось об ошибке:
Failed at step EXEC spawning /data/mytools/python38/bin/python3 No such file or directory
Анализ причин:
Поскольку раздел /data монтируется через nfs, предполагается, что когда systemd запускает службу myclock.service, диск еще не смонтирован, в результате чего файл или каталог не найдены.
Следовательно, необходимо изменить конфигурацию службы myclock.service, чтобы она запускалась после монтирования указанного раздела/данных.
решение:
Добавьте строку RequiresMountsFor=/data/mytools/python38/bin в [Unit]
[Unit]
Description=my first linux service
RequiresMountsFor=/data/mytools/python38/bin
[Service]
Type=simple
ExecStart=/data/mytools/python38/bin/python3 /data/myclock.py
[Install]
WantedBy=multi-user.target
Затем перезагрузитесь и все в порядке:
systemctl daemon-reload
systemctl start myclock.service
systemctl status myclock.service
ссылка:
linux — Ошибка на шаге создания EXEC: нет такого файла или каталога
Служба systemd запускается после ожидания монтирования nfs — примечания полного стека
Конфигурация системной службы CentOS 7 -- Unit (Unit)_requiresmountsfor_CodingSir's Blog-CSDN Blog