У меня есть следующая служба systemd для запуска моего флеш-приложения:
[Unit]
Description=My Flask server
After=network.target
[Service]
User=ubuntu
ExecStart=/home/ubuntu/my-server/script.py
WorkingDirectory=/home/ubuntu/my-server/
Restart=on-failure
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Однако, когда я запускаю
systemctl start my-server.service
, я получаю следующий статус
my-server.service - My Flask server
Loaded: loaded (/etc/systemd/system/my-server.service; enabled; vendor preset: enabled)
Active: active (exited) (Result: exit-code) since Wed 2017-06-21 22:24:18 UTC; 8min ago
Main PID: 8407
(code=exited, status=203/EXEC)
Как предотвратить выход из флеш-сервера? Когда я запускаю скрипт непосредственно с
/home/ubuntu/my-server/script.py
, он отлично работает. Но если я запустил его с помощью systemd, сервер немедленно выйдет.
Исправлена проблема. Мне пришлось изменить владельца файла, чтобы он соответствовал сценарию systemd, а затем сделать его исполняемым:
chown ubuntu /home/ubuntu/my-server/script.py
chmod +x /home/ubuntu/my-server/script.py
Исправлена проблема. Мне пришлось изменить владельца файла, чтобы он соответствовал сценарию systemd, а затем сделать его исполняемым:
chown ubuntu /home/ubuntu/my-server/script.py
chmod +x /home/ubuntu/my-server/script.py
Исправлена проблема. Мне пришлось изменить владельца файла, чтобы он соответствовал сценарию systemd, а затем сделать его исполняемым:
chown ubuntu /home/ubuntu/my-server/script.py
chmod +x /home/ubuntu/my-server/script.py
Не уверен, что это помогает, но это служебный файл, который я использую для управления фляжным приложением для личного проекта. Я думаю, что по умолчанию systemd запускает скрипт с оболочкой / bin / sh без персонализации. Возможно, вы захотите попробовать переключиться на оболочку / bin / sh и запустить свою команду. Может отсутствовать переменная среды.
Файл устройства из ссылки:
[Unit]
Description=Persistent Transactions API
After=syslog.target network.target electrum.service
[Service]
User=percy
Group=percy
ExecStart=/bin/bash -c "source /opt/persist_transaction/bin/activate ; /opt/persist_transaction/api.py -c /opt/persist_transaction/config.ini"
Restart=always
[Install]
WantedBy=multi-user.target
Не уверен, что это помогает, но это служебный файл, который я использую для управления фляжным приложением для личного проекта. Я думаю, что по умолчанию systemd запускает скрипт с оболочкой / bin / sh без персонализации. Возможно, вы захотите попробовать переключиться на оболочку / bin / sh и запустить свою команду. Может отсутствовать переменная среды.
Файл устройства из ссылки:
[Unit]
Description=Persistent Transactions API
After=syslog.target network.target electrum.service
[Service]
User=percy
Group=percy
ExecStart=/bin/bash -c "source /opt/persist_transaction/bin/activate ; /opt/persist_transaction/api.py -c /opt/persist_transaction/config.ini"
Restart=always
[Install]
WantedBy=multi-user.target
Не уверен, что это помогает, но это служебный файл, который я использую для управления фляжным приложением для личного проекта. Я думаю, что по умолчанию systemd запускает скрипт с оболочкой / bin / sh без персонализации. Возможно, вы захотите попробовать переключиться на оболочку / bin / sh и запустить свою команду. Может отсутствовать переменная среды.
Файл устройства из ссылки:
[Unit]
Description=Persistent Transactions API
After=syslog.target network.target electrum.service
[Service]
User=percy
Group=percy
ExecStart=/bin/bash -c "source /opt/persist_transaction/bin/activate ; /opt/persist_transaction/api.py -c /opt/persist_transaction/config.ini"
Restart=always
[Install]
WantedBy=multi-user.target