Я пытаюсь создать / запустить сервис, то есть запустить скрипт при загрузке с помощью systemd.
Во-первых, когда я тестирую свой сценарий с помощью $ /usr/bin/pastec.sh
, он работает хорошо.
Итак, я попытался создать свой сервис:
$ sudo nano /etc/systemd/system/pastec.service
Он выглядит так:
[Unit]
Description=Pastec Service
[Service]
ExecStart=/usr/bin/pastec.sh
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Затем, чтобы запустить его:
systemctl daemon-reload
systemctl enable pastec.service
systemctl start pastec
код выполнен, ошибки не возвращаются.
root# systemctl start pastec
root#
Но служба / задача не существует, когда я запускаю ps aux | grep pastec
ПРИМЕЧАНИЕ. Я запускал этот скрипт при запуске, используя init.d в Ubuntu 14.04 - Теперь я хочу запустить его в Ubuntu 18.04 с использованием systemd.
Что я пропустил?
РЕДАКТИРОВАТЬ 1: по запросу PonJar, это то, что я могу видеть с systemctl status pastec
● pastec.service - Pastec Service
Loaded: loaded (/etc/systemd/system/pastec.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) since Wed 2019-10-02 06:01:07 UTC; 4s ago
Process: 8339 ExecStart=/usr/bin/pastec.sh (code=exited, status=0/SUCCESS)
Main PID: 8339 (code=exited, status=0/SUCCESS)
Но никаких следов пастели с grep .. .
После многих поисков я нашел answser в этом поток .
я добавил Type=forking
в Сервисной директиве, и сценарий был действительно запущен сервисом.
Main PID: 12645 (pastec)
Tasks: 1 (limit: 4915)
CGroup: /system.slice/pastec.service
└─12645 ./pastec visualWordsORB.dat
, В то время как Type=simple по умолчанию работает на многие файлы услуг Systemd, он не работает, когда сценарий в ExecStart запускает другой процесс и завершается, как имеет место с углеродом-cache.py графита. В этих случаях необходимо явно указать Type=forking в разделе [Service] так, чтобы Systemd знал для рассмотрения порожденного процесса, а не начального.