Запустите сценарий оболочки при запуске (не вход в систему) в Ubuntu 14.04 - PullRequest
0 голосов
/ 11 июня 2018

У меня есть сервер сборки.Я использую скрипт агента сборки Azure.Это сценарий оболочки, который будет работать непрерывно, пока сервер работает.Проблема в том, что я не могу заставить его работать при запуске.Я пробовал /etc/init.d и /etc/rc.local, и агент не запускается.Ничего не касается агента сборки в журналах загрузки.

Для /etc/init.d я создал скрипт agent.sh, который содержит:

#!/bin/bash

sh ~/agent/run.sh 

Дал ему необходимые разрешения chmod 755 agent.sh и переместил его в /etc/init.d.

а для /etc/rc.local я только что добавил

sh ~/agent/run.sh &

до exit 0.

Что я делаю не так?

РЕДАКТИРОВАТЬ: добавлены примеры.

РЕДАКТИРОВАТЬ 2: Только что заметил, что init.d README говорит, что сценарии оболочки должны начинаться с #!/bin/sh, а не #!/bin/bash.Также используется абсолютный путь, но без изменений.

ЗАКЛЮЧИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ: Как предложил @ewrammer, я использовал cron, и это сработало.crontab -e, а затем @reboot /home/user/agent/run.sh.

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

На всякий случай, использование супервизора может быть хорошей идеей. В Ubuntu 14 у вас нет systemd, но вы можете выбирать из других https://en.wikipedia.org/wiki/Process_supervision.

При использовании бессмертный , после его установки вам просто нужно создать run.yml файл в /etc/immortal с чем-то вроде:

cmd: /path/to/command
log:
    file: /var/log/command.log

Это будет запускать ваш скрипт / команду при каждом запуске, помимо обеспечения вашего скрипта / приложениявсегда включен и работает.

0 голосов
/ 11 июня 2018

Трудно понять, что не так, если вы не публикуете то, что сделали, но почему бы не добавить его в качестве задания cron с @reboot в качестве шаблона?Затем cron будет запускать скрипт при каждом запуске компьютера.

...