Linux bash script to service

Содержание
  1. How to run my looping Bash script as a service?
  2. Как запустить bash скрипт как systemd сервис
  3. Создание bash скрипта
  4. Создание systemd сервиса
  5. Запуск сервиса и добавление в автозагрузку
  6. Как сделать в линукс Ubuntu из Bash скрипта сервис?
  7. 1 ответ 1
  8. 📜 Как запустить shell скрипт как службу SystemD на Linux
  9. Шаг 1 – Создайте скрипт
  10. Шаг 2 – Создайте файл SystemD
  11. Шаг 3 – Включите новую службу
  12. Заключение
  13. You may also like
  14. 📜 Чтение файла построчно на Bash
  15. 📧 В чем разница между IMAP и POP3
  16. ✔️ Как управлять контейнерами LXD от имени обычного.
  17. 📜 Руководство для начинающих по созданию первого пакета.
  18. Феноменальная популярность электроники Xiaomi: основные причины
  19. 📜 Получение вчерашней даты в Bash: Практическое руководство
  20. Использование специальных гелей при мышечных болях
  21. 📦 Как расширить/увеличить файловую систему VxFS на Linux
  22. Услуги по размещению серверного оборудования в ЦОД
  23. Для чего выполняется ИТ консалтинг на предприятиях?
  24. 2 комментария
  25. Leave a Comment Cancel Reply
  26. • Свежие записи
  27. • Категории
  28. • Теги
  29. • itsecforu.ru
  30. • Страны посетителей
  31. IT is good

How to run my looping Bash script as a service?

I have 2 Amazon Linux EC2 instances that are running HAProxy. I want to monitor each instance from the other instance and if a instance becomes unavailable, the other instance will issue a API command to move the elastic IP to the active server. I created a Bash script to do the monitoring every XX seconds. I need to set the script to run as a service so I created a service wrapper and placed in /etc/init.d based on a template that I found and registered as a service. The problem is when I issue command #service hamonitor start, it says «Starting hamonitor. «, but I never see the OK message and if I issue the stop command, it fails and if I issue the status command, it says it is not running. But, if I check the logs, it shows that the script is in fact running. I assume that I need a proper PID file and/or since the script runs in a infinite loop, it never completes so the OK does not get issued. Service Wrapper:

#!/bin/sh # # /etc/init.d/hamonitor # Subsystem file for "hamonitor" server # # chkconfig: 2345 95 05 (1) # description: hamonitor server daemon # # processname: hamonitor ### BEGIN INIT INFO # Provides: # Required-Start: # Required-Stop: # Should-Start: # Should-Stop: # Default-Start: # Default-Stop: # Short-Description: # Description: ### END INIT INFO # source function library . /etc/rc.d/init.d/functions PROG=hamonitor EXEC=/etc/haproxy/hamonitor LOCKFILE=/var/lock/subsys/$prog PIDFILE=/var/run/$prog.pid RETVAL=0 start() < echo -n $"Starting $PROG:" echo #daemon $EXEC & /etc/haproxy/hamonitor & RETVAL=$? if [ $RETVAL -eq 0 ]; then touch LOCKFILE touch PIDFILE echo "[ OK ]" else echo "[ FAIL: $]" fi return $RETVAL > stop() < echo -n $"Stopping $PROG:" echo killproc $PROG -TERM RETVAL=$? if [ $RETVAL -eq 0 ]; then rm -f LOCKFILE rm -f PIDFILE echo "[ OK ]" else echo "[ FAIL: $]" fi return $RETVAL > case "$1" in start) start ;; stop) stop ;; status) status $PROG RETVAL=$? ;; restart) stop start ;; *) echo $"Usage: $0 " RETVAL=1 esac exit $RETVAL 
#!/usr/bin/env bash export EC2_HOME=/opt/aws/apitools/ec2 export JAVA_HOME=/usr/lib/jvm/jre AWS_ACCESS_KEY="XXXXXXXXXXXXXXXXXXXXXXXXX" AWS_SECRET_KEY="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" VIP1="1.2.3.4" VIP1_ALLOCATIONID="eipalloc-XXXXXXX" THIS_NODE_EC2_ID="i-XXXXXXX" THIS_NODE_PRIVATE_IPADDRESS1="10.60.0.11" THIS_NODE_HEALTHCHECK_URL="http://10.60.0.10/haproxy?monitor" OTHER_NODE_HEALTHCHECK_URL="http://10.60.49.50/haproxy?monitor" CHECK_OTHER_INTERVAL=5 CHECK_OTHER_FAIL_COUNT=0 CHECK_OTHER_RUN_COUNT=0 AFTER_TAKEOVER_WAIT=30 function takeover_vips < /opt/aws/bin/ec2-associate-address -aws-access-key $-aws-secret-key $ -a $ -i $ -private-ip-address $ -allow-reassociation > /dev/null > function does_this_node_have_ips < is_active=$(/opt/aws/bin/ec2-describe-addresses -aws-access-key $-aws-secret-key $ | grep $ | grep $) if [ "$is_active" = "" ]; then echo "no" else echo "yes" fi > function log_msg < msg=$1 msg="$(date) -- $" echo $ >> /var/log/hamonitorlog > while [ . ]; do healthcheck_response=$(curl -sL -w "%" $ -o /dev/null) if [ "$healthcheck_response" != "200" ]; then CHECK_OTHER_FAIL_COUNT=$((CHECK_OTHER_FAIL_COUNT+1)) if [ "$CHECK_OTHER_FAIL_COUNT" -gt 2 ]; then takeover_vips CHECK_OTHER_FAIL_COUNT=0 sleep $ fi sleep $ done 

Источник

Как запустить bash скрипт как systemd сервис

Иногда требуется запустить произвольный скрипт и держать его запущенным постоянно. Раньше для этого часто использовали Supervisor, но в современных ОС есть встроенное средство (а точнее сервисы это часть довольно большого комплекса) — systemd.

В это статье я расскажу, как запустить произвольный bash скрипт в качестве systemd сервиса

Создание bash скрипта

Создадим с помощью любого текстового редактора простой bash скрипт, я буду использовать vi:

В качестве содержимого возьмем бесконечный цикл:

#!/bin/bash while true do // Как-то действия sleep 10 done

Сохраним его и дадим права на запуск:

Создание systemd сервиса

systemd сервисы должны иметь расширение .service и должны быть расположены в /lib/systemd/system/

Создадим сервис с именем testservice.service:

vi /lib/systemd/system/testservice.service

В качестве содержимого укажем:

[Unit] Description=Test Script [Service] ExecStart=/usr/bin/script.sh [Install] WantedBy=multi-user.target

Запуск сервиса и добавление в автозагрузку

Т.к. мы добавили новый сервис, то нужно перестроить список сервисов:

Для запуска сервиса используется команда опция start, а для добавления в автозагрузку — enable:

systemctl enable testservice.service systemctl start testservice.service

Либо вы можете добавить сервис в автозагрузку и сразу запустить его командой:

systemctl enable testservice.service --now

Теперь проверим статус сервиса:

systemctl status testservice.service

Сервис будет запущен и успешно работать.

Источник

Как сделать в линукс Ubuntu из Bash скрипта сервис?

Собственно вопрос, как сделать из Bash скрипта в Linux сервис (демон), с возможностью проверки его на работоспособность перезапуском в случаи сбоя или зависания?

1 ответ 1

Для этой цели можно создать юнит systemd. Для начала нужно создать файл с названием my.service и поместим его в /etc/systemd/system.

[Unit] Description = My demon [Service] RemainAfterExit=true ExecStop=/usr/local/bin/my Type=oneshot [Install] WantedBy=multi-user.target 

Раздел [Unit] хранит общие сведения о юните. В данном случае он содержит только описание (Description).

Раздел [Service] объединяет сведения, необходимые для выполнения юнитом его задач. Type определяет тип сервиса (не путайте его с разновидностями юнитов), oneshot означает, что сервис должен выполнить разовую задачу и завершиться. ExecStop указывает скрипт, который должен быть выполнен перед остановкой сервиса. Есть еще ExecStart, этот параметр используется чаще и определяет команду, которая должна быть выполнена сразу после запуска сервиса. RemainAfterExit=true предписывает systemd считать процесс активным после его завершения.

Секция [Install] содержит сведения о том, при каких обстоятельствах должен быть запущен сервис. WantedBy=multi-user.target устанавливает запуск при обычной загрузке компьютера.

Далее нужно поместить ваш скрипт (my) в /usr/local/bin/ . Командами:

sudo systemctl enable my sudo systemctl start my 

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

Более подробно можете ознакомиться в этой статье и в man. Также может быть полезна статья с хабра.

Источник

📜 Как запустить shell скрипт как службу SystemD на Linux

Systemd – это программное приложение, которое предоставляет набор системных компонентов для операционных систем Linux.

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

Она всегда работает с pid 1.

Она также помогает управлять системой и сервисом приложений в нашей операционной системе Linux.

Мы также можем запустить любой пользовательский скрипт как службу systemd.

Это помогает скрипту запускаться при загрузке системы.

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

В этом руководстве рассматривается запуск bash скрипта как службы Systemd.

Шаг 1 – Создайте скрипт

Прежде всего, создайте образец скрипта, который будет запускаться при запуске системы.

#!/bin/bash while true do //Your statements here sleep 10 done

Сохраните скрипт и установите права на выполнение.

sudo chmod +x /usr/bin/script.sh 

Для однократного запуска скрипта во время загрузки системы не требуется бесконечного цикла.

Вместо приведенного выше скрита вы можете использовать свой скрипт для запуска в качестве службы Systemd.

Шаг 2 – Создайте файл SystemD

Затем создайте служебный файл для systemd в вашей системе.

Этот файл должен иметь расширение .service и храниться в каталоге /lib/systemd/system/.

sudo vi /lib/systemd/system/shellscript.service 
[Unit] Description=My Shell Script [Service] ExecStart=/usr/bin/script.sh [Install] WantedBy=multi-user.target

Шаг 3 – Включите новую службу

Ваша системная служба добавлена.

Давайте перезагрузим демон systemctl, чтобы система прочитала новый файл.

Вам необходимо перезагружать этот демон каждый раз после внесения каких-либо изменений в файл .service.

sudo systemctl daemon-reload 

Теперь разрешите запуск службы при загрузке системы, а также запустите службу с помощью следующих команд.

sudo systemctl enable shellscript.service sudo systemctl start shellscript.service 
sudo systemctl status shellscript.service 

Заключение

itisgood
📜 Shell скрипты – удаление двойных кавычек (“”) из строки
🍓 Как записать операционную систему на карту microSD с помощью графического пользовательского интерфейса

You may also like

📜 Чтение файла построчно на Bash

📧 В чем разница между IMAP и POP3

✔️ Как управлять контейнерами LXD от имени обычного.

📜 Руководство для начинающих по созданию первого пакета.

Феноменальная популярность электроники Xiaomi: основные причины

📜 Получение вчерашней даты в Bash: Практическое руководство

Использование специальных гелей при мышечных болях

📦 Как расширить/увеличить файловую систему VxFS на Linux

Услуги по размещению серверного оборудования в ЦОД

Для чего выполняется ИТ консалтинг на предприятиях?

2 комментария

Leave a Comment Cancel Reply

• Свежие записи

• Категории

• Теги

• itsecforu.ru

• Страны посетителей

IT is good

В этой статье вы узнаете, как удалить удаленный Git-репозиторий. Процесс прост, но его полезно запомнить, чтобы избежать неожиданностей в будущем. Git – это…

В 11-й версии своей операционной системы Microsoft серьезно переработала интерфейс и убрала несколько привычных функций. Нововведения не всем пришлись по душе. Мы дадим…

Продажа ноутбука нередко становится хлопотным занятием. Кроме поиска покупателя, продавцу необходимо подготовить устройство перед проведением сделки. Но если последовательно выполнить все шаги, ничего…

Вы можете оказаться в ситуации, когда вам нужно использовать скрипт шелла для чтения файлов построчно. В этом руководстве я расскажу о нескольких способах…

Вторичное жильё выгоднее для молодых семей, желающих приобрести свою первую квартиру. Сталкиваясь с ипотечным кредитованием, можно избежать много лишней суеты и проблем, если…

Источник

Читайте также:  Linux create file with file size
Оцените статью
Adblock
detector