Служба запуска / остановки systemctl: как настроить сценарий Upstart и процесс возрождения в Ubuntu, CentOS, Redhat Linux
Опубликовано: 2021-06-09Как написать сценарий запуска для systemd?
systemd
— это новейшая service management utility
во всех последних версиях дистрибутива Linux, таких как ОС Ubuntu, ОС Redhat, CentOS.
Вот почему версия Ubuntu 17.4 и Redhat 7.4 теперь поддерживает systemctl command
в качестве сценария выскочки. Если вы используете более старую версию ОС Linux, вам может потребоваться просмотреть нижнюю часть этой страницы, чтобы увидеть более старый init.d script
Мы собираемся обсудить следующие вещи в этом уроке
- Настройка сервисного модуля systemd
- Как
configure
системд? - Как
enable
это systemd? - Как запустить процесс автоматически с помощью systemd?
- Как остановить и
respawn
процесс с помощью systemd?
Шаги настройки для этого урока:
Prerequisite:
у нас есть скомпилированная версия программы CrunchifyAlwaysRunningProgram.java в папке /tmp/crunchify
. Этот процесс Java будет продолжать работать в фоновом режиме навсегда. Скачать программу можно отсюда.
Как только вы загрузите его, try to compile
его и запустить, чтобы убедиться, что он работает.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
root @ crunchify : / tmp / crunchify # ls -ltr - rw - r -- r -- 1 root root 120 Oct 6 17 : 57 crunchify . tar . gz drwxr - xr - x 2 root root 4096 Oct 6 18 : 01 tomcat drwxr - xr - x 2 root root 4096 Oct 6 18 : 02 java - rw - r -- r -- 1 root root 621 Oct 7 16 : 06 package - rwxrwxrwx 1 root root 838 Oct 7 16 : 07 CrunchifyAlwaysRunningProgram . java - rwxrwxrwx 1 root root 1295 Oct 8 14 : 38 CrunchifyAlwaysRunningProgram . class root @ crunchify : / tmp / crunchify # javac CrunchifyAlwaysRunningProgram.java root @ crunchify : / tmp / crunchify # java CrunchifyAlwaysRunningProgram always running program == > Sun Oct 08 14 : 39 : 14 UTC 2017 always running program == > Sun Oct 08 14 : 39 : 16 UTC 2017 . . . . . . . . . |
Вы можете CTRL + C
, чтобы выйти из программы.
Теперь давайте приступим к настройке сценария автоматического запуска systemd для вышеуказанной программы.
Шаг 1
- Перейдите в папку /lib/systemd/system
- Введите
cd /lib/systemd/system
Шаг 2
- создать файл
crunchify.service
(соответственно изменить имя файла) - поместите ниже содержание в него
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[ Unit ] Description = Crunchify Java Process Restart Upstart Script After = auditd . service systemd - user - sessions . service time - sync . target [ Service ] User = root TimeoutStartSec = 0 Type = simple KillMode = process export JAVA_HOME =/ opt / java / jdk - 9 export PATH = $ PATH : $ JAVA_HOME / bin WorkingDirectory =/ tmp / crunchify ExecStart =/ opt / java / jdk - 9 / bin / java - cp / tmp / crunchify CrunchifyAlwaysRunningProgram Restart = always RestartSec = 2 LimitNOFILE = 5555 [ Install ] WantedBy = multi - user . target |

Шаг 3
- Сохранить файл
- Предоставить разрешение на выполнение с помощью
chmod 755 crunchify.service
Шаг-4
- Загрузите crunchify.service с помощью команды
systemctl daemon-reload
- Включите crunchify.service с помощью команды
systemctl enable crunchify.service
- Запустите crunchify.service с помощью команды
systemctl start crunchify
- Проверьте статус crunchify.service с помощью команды
systemctl status crunchify
Шаг-5
- Теперь проверьте, запущен ли процесс или нет ??
- Введите команду
ps -few | grep java
ps -few | grep java
, чтобы увидеть все запущенные процессы Java - Вы должны увидеть что-то вроде этого
1 2 3 |
root @ crunchify : / lib / systemd / system # ps -few | grep java root 28631 1 0 14 : 02 ? 00 : 00 : 03 / opt / java / jdk - 9 / bin / java - cp / tmp / crunchify CrunchifyAlwaysRunningProgram root 28853 28226 0 14 : 46 pts / 0 00 : 00 : 00 grep java |
Это означает, что процесс 28631
с использованием вашего сценария выскочки. У вас может быть другой идентификатор процесса.
Как проверить, работает ли ваш systemd crunchify.service или нет?
- Попробуйте убить процесс, используя
kill -9 28631
, и вы увидите, что новый процесс должен быть создан автоматически. - В моем случае создан новый идентификатор процесса
28887
1 2 3 4 |
root @ crunchify : / lib / systemd / system # kill -9 28631 root @ crunchify : / lib / systemd / system # ps -few | grep java root 28887 1 17 14 : 48 ? 00 : 00 : 00 / opt / java / jdk - 9 / bin / java - cp / tmp / crunchify CrunchifyAlwaysRunningProgram root 28900 28226 0 14 : 48 pts / 0 00 : 00 : 00 grep java |
Видео: Полный пример установки скрипта upstart Live systemd:
Это видео содержит — Как настроить сценарий запуска / запуска systemd в ОС CentOS, Redhat, Ubuntu Linux?
- Как автоматически выполнять сценарий оболочки при загрузке при запуске
- Как создать службу systemd в Linux (CentOS 7)
- Как настроить службу Linux для автоматического запуска?
- Скрипт запуска Centos 7 systemd
- Сценарий запуска Ubuntu systemd
Хотите узнать больше о systemd? Вот шпаргалка для справки.
Надеюсь, вы узнали everything about systemd command
и настройке скрипта upstart для всех типов ОС Linux.
СТОП: ТОЛЬКО для более старых версий ОС
Если вы используете older version
Redhat, Ubuntu, CentOS, вам понадобится скрипт в этом формате.
- Перейдите в
/etc/init
- Создайте файл
crunchify.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# Run Crunchify's Java program indefinitely # description "Crunchify Java Process Restart Upstart Script" author "Crunchify.com (App Shah)" start on runlevel [ 2345 ] stop on runlevel [ ! 2345 ] respawn respawn limit 10 5 script su - root < < 'EOF' export JAVA_HOME =/ opt / java / jdk - 9 export PATH = $ PATH : $ JAVA_HOME / bin exec / opt / java / jdk - 9 / bin / java - cp / tmp / crunchify CrunchifyAlwaysRunningProgram EOF end script |
- Просто запустите сервис с помощью команды
service crunchify start
- Выполните те же шаги проверки, что и выше.
Дайте мне знать, если вы обнаружите какие-либо проблемы с запуском скрипта upstart в вашей среде. Приятного вам дня и счастливого кодирования.