, включая команды Execstop, производит сервис (консул), не может начать должным образом

bzgrep "1675391601497" ts3events.csv.bz2 > /path/to/file.csv

или если вы хотите посмотреть вывод, а также сохранить его в файл

bzgrep "1675391601497" ts3events. csv.bz2 | tee /path/to/file.csv | less

2
22.10.2018, 00:08
1 ответ

Проблема (или по крайней мере одна проблема )заключается в том, что вы используете флаг докера -d(для "отсоединенного" )в вашем ExecStart=.

systemd ожидает, что выполняемая им команда будет продолжать выполняться, пока служба работает, другими словами, будет выполняться на переднем плане. По крайней мере, при настройке служб Type=simple, которые являются типом по умолчанию и относятся к вашему устройству.

Когда вы запускаете команду, которая немедленно завершает работу (, как это делает docker run -d), systemd предполагает, что ваша служба запущена, и продолжает работать только мгновение, пока не завершится. Поэтому, пока ваш контейнер все еще работает, служба systemd будет думать, что это не так. Вы можете подтвердить это командой вроде systemctl status consul.service. (Почаще проверяйте эту команду, чтобы понять, что systemd считает состоянием вашей службы. Опубликуйте его вывод здесь, чтобы помочь нам диагностировать любые другие проблемы, которые у вас возникают.)

Что вызывает у вас проблемы, когда у вас есть некоторые ExecStopPost=команды, так это то, что systemd будет выполнять эти команды, поскольку предполагает, что служба завершена, поэтому ваш контейнер уничтожается.

Простого удаления -dиз вашего docker runв команде ExecStart=может быть достаточно, чтобы решить вашу проблему.

2
27.01.2020, 22:08

Теги

Похожие вопросы