Службе systemd не удалось запустить сценарий bash

Я запускаю скрипт bash в качестве службы systemd, но он дает мне эту ошибку

Failed at step EXEC spawning /home/pipeline/entity-extraction/start_consumer.sh: Permission denied Feb 8 11:59:58 irum systemd[1]: ee-consumer.service: main process exited, code=exited, status=203/EXEC Feb 8 11:59:58 irum systemd[1]: Unit ee-consumer.service entered failed state. Мой скрипт bash запускает 2 скрипта Python, и он отлично работает, когда я запускаю его из терминала как
sudo bash start_consumer.sh
start_consumer.sh

while true
do
    echo "starting FIRST Consumer.py : $(date +"%T")"
    python3 /home/irum/Desktop/Marketsyc/Consumer.py &
    pid=$!
    echo "pid:$pid"
    sleep 60

    echo "starting SECOND Consumer.py : $(date +"%T")"
    python3 /home/irum/Desktop/Marketsyc/Consumer.py &
    new_pid=$!
    echo "new_pid:$new_pid"
    # Here I want to kill FIRST Consumer.py
    echo "killing first consumer"
    kill "$pid"
    sleep 60

    # Here I want to kill SECOND Consumer.py
    echo "killing second consumer"
    kill "$new_pid"
done

код моей службы systemd ee-consumer.service

[Unit]
Description=Entity extraction - consumer
After=default.target
[Service]
Type=simple
Restart=always
User=pipeline
ExecStart=/home/pipeline/entity-extraction/start_consumer.sh

как я могу решить эту проблему?

Возможный дубликат Сценарий запуска Linux в systemd

jww 08.02.2019 13:26

@jww Нет, это не так. Я столкнулся с другой проблемой. Пожалуйста, перечитайте мой вопрос.

irum zahra 12.02.2019 08:07
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
3 592
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны установить строку shebang и permission в скрипт для выполнения systemd.

Добавьте #!/bin/bash в начало сценария bash. И сделайте следующее,

chmod 755 /home/pipeline/entity-extraction/start_consumer.sh
PermissionError: [Errno 13] Permission denied: '/data/runtime/run/ee-consumer-B.pid' Теперь я получаю эту ошибку. Это файл, в котором мой скрипт Consumer.py записывает PID
irum zahra 12.02.2019 08:05

Проверьте persmission в каталоге /data/runtime/run/. ls -l /data/runtime/run/

han solo 12.02.2019 08:18
-rw-r--r-- 1 pipeline pipeline 5 Feb 8 12:23 ee-aggregator.pid -rwxr-xr-x 1 root root 6 Feb 8 10:32 ee-consumer-B.pid -rw-r--r-- 1 root root 6 Feb 8 09:03 ee-consumer.pid -rw-r--r-- 1 pipeline pipeline 6 Feb 8 12:26 ee-dbwriter.pid оба pid-файла потребителя имеют root-права
irum zahra 12.02.2019 08:24

Хорошо. Проблема в том, что вы не указали, какой пользователь должен использоваться для запуска этого скрипта bash. Поместите User=root после строки [Service] в файле ee-consumer.service.

han solo 12.02.2019 08:27

Другие вопросы по теме