Системный сервис
Системный сервис, я хочу создать, но это не удается. Это мой сервис, который я создал.
[Unit]
Description=rqworker daemon
After=network.target
[Service]
Type=simple
WorkingDirectory=/home/ubuntu/mamster
User=ubuntu
Group=ubuntu
#EnvironmentFile=/etc/sysconfig/master.env
#Environment="PYTHONPATH=/home/ubuntu/venv"
ExecStart=/home/ubuntu/venv /venv/bin/rqworker master
StandardOutput=/home/ubuntu/logs/icengine/std_out.log
StandardError=/home/ubuntu/logs/icengine/std_err/log
#SyslogIdentifier=icengin
KillMode=process
Restart=always
TimeoutSec=infinity
RestartPreventExitStatus=255
Type=notify
[Install]
WantedBy=multi-user.target
Alias=master.service
Первоначально эта услуга Actiating(Start)
но не было Active
Но после того, как я сделал некоторые изменения, и теперь он показывает ошибку:
После запуска sudo systemctl start rq
(venv) ubuntu@ubuntucalc:~$ sudo systemctl status rq
● rq.service - rqworker daemon
Loaded: loaded (/etc/systemd/system/rq.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Tue 2019-01-15 06:53:20 UTC; 4s ago
Process: 18537 ExecStart=/home/ubuntu/venv /venv/bin/rqworker master (code=exited, status=200/CHDIR)
Main PID: 18537 (code=exited, status=200/CHDIR)
Jan 15 06:53:20 ubuntucalc systemd[1]: rq.service: Main process exited, code=exited, status=200/CHDIR
Jan 15 06:53:20 ubuntucalc systemd[1]: rq.service: Failed with result 'exit-code'.
Jan 15 06:53:20 ubuntucalc systemd[1]: Failed to start rqworker daemon.
Jan 15 06:53:20 ubuntucalc systemd[1]: rq.service: Service hold-off time over, scheduling restart.
Jan 15 06:53:20 ubuntucalc systemd[1]: rq.service: Scheduled restart job, restart counter is at 5.
Jan 15 06:53:20 ubuntucalc systemd[1]: Stopped rqworker daemon.
Jan 15 06:53:20 ubuntucalc systemd[1]: rq.service: Start request repeated too quickly.
Jan 15 06:53:20 ubuntucalc systemd[1]: rq.service: Failed with result 'exit-code'.
Jan 15 06:53:20 ubuntucalc systemd[1]: Failed to start rqworker daemon.
Это вывод, который я получил. Спасибо
1 ответ
Решение
В этом модульном файле есть некоторые проблемы:
- Файл содержит два экземпляра
Type=
один сsimple
и один сnotify
, Она должна содержать только одну такую строку, и она должна иметь правильный тип, который, в свою очередь, зависит от того, как исполняемый файл/home/ubuntu/venv
ведет себя. Для демонов, частоforking
используется. - Имя файла для
StandardError
должно быть/home/ubuntu/logs/icengine/std_err.log
и не/home/ubuntu/logs/icengine/std_err/log
, Убедитесь, что пользовательubuntu
может написать в это место, и каталоги существуют. я считаюsystemd
не будет создавать путь, если он не существует (хотя он создаст файл). - Синтаксис
StandardOutput=
а такжеStandardError=
неправильно. Согласно документам системный синтаксисStandardOutput=file:/home/ubuntu/logs/icengine/std_out.log
, То же самое дляStandardError
,