Centos 7 - служба из /etc/systemd/system/san.service не запускается с запуском systemctl san.service - PullRequest
0 голосов
/ 02 апреля 2019

Я следовал инструкциям по этой ссылке: https://www.thegeekdiary.com/centos-rhel-7-how-to-make-custom-script-to-run-automatically-during-boot/

Но у меня проблема, потому что мой сервис не запускается.

Я создал один скрипт startSanic2.sh, который вызывает скрипт startSanic.sh (мне это нужно, потому что когда я запускаю его вручную с помощью & только в этом случае сеанс не истекает)

Это мой скрипт startSanic2.sh

# cat /opt/horses/startSanic2.sh 
#!/bin/bash
cd /opt/horses
./startSanic.sh &

Это мой скрипт startSanic.sh

# cat /opt/horses/startSanic.sh 
#!/bin/bash
gunicorn horses.server:app --bind 0.0.0.0:9000 --worker-class sanic.worker.GunicornWorker --reload

После запуска (./startSanic2.sh) он успешно выполняется на порту 9000.

startSanic.sh и startSanic2.sh имеют разрешения 755

Затем я создал новый san.service

[root@testnn2 system]# cat /etc/systemd/system/san.service
[Unit]
Description=Description for sample script goes here
After=network.target

[Service]
Type=simple
ExecStart=/opt/horses/startSanic2.sh
TimeoutStartSec=0

[Install]
WantedBy=default.target

Я запускаю эту команду:

systemctl daemon-reload

И я запускаю эту команду

# systemctl enable san.service
Created symlink from /etc/systemd/system/default.target.wants/san.service to /etc/systemd/system/san.service

Когда я запускаю его - ничего не происходит :(

systemctl start san.service

Я проверил и в /etc/systemd/system мой san.service выглядит так:

-rw-r--r--  1 root root  193 Apr  2 18:07 san.service

Пожалуйста, помогите мне в этом вопросе, почему ничего не запускается.

Обновление: переменные среды

Содержимое /etc/systemd/system/san.service:

[Unit]
Description=Description for sample script goes here
After=network.target

[Service]
Type=simple
ExecStart=/opt/horses/startSanic2.sh
TimeoutStartSec=0
Environment="var1=value1"

[Install]
WantedBy=default.target

1 Ответ

1 голос
/ 02 апреля 2019

Изменить startSanic2.sh на:

#!/bin/bash

/opt/horses/startSanic.sh

Убедитесь, что это исполняемый файл:

$ sudo chmod +x /opt/horses/startSanic2.sh

Также убедитесь, что startSanic.sh является исполняемым:

$ sudo chmod +x /opt/horses/startSanic.sh

Перезагрузите демон и включите его:

$ sudo systemctl daemon-reload
$ sudo systemctl enable san.service
$ sudo systemctl start san.service

Перезагрузить машину.

Обновление:

Установить переменные окружения в san.service:

[Unit]
Description=Description for sample script goes here
After=network.target

[Service]
Type=simple
ExecStart=/opt/horses/startSanic2.sh
TimeoutStartSec=0
Environment="REDIS_HOST=192.168.150.220"
Environment="REDIS_PORT=6379"

[Install]
WantedBy=default.target
...