Автозапуск скрипта (.sh) в CentOS 7.x

baltun

Администратор
Сообщения
10.908
Реакции
2.597
Баллы
2.003
Для запуска скрипта при загрузке раньше использовался /etc/rc.d/rc.local. В CentOS 7 в этом файле стоит прямое указание, что это - прошлый день и данный метод оставлен для обратной совместимости. Продвинутые же парни должны создавать свои собственные "сервисы" systemd.

Задача:
запускать скрипт /usr/local/template.sh при каждой загрузке в CentOS 7 с помощью systemd.
Создаем файл нашей службы:
Код:
touch /etc/systemd/system/template-settings.service
chmod 664 /etc/systemd/system/template-settings.service
nano /etc/systemd/system/template-settings.service

Содержимое файла:
Код:
[Unit]
Description=Template Settings Service
After=network.target

[Service]
Type=oneshot
User=root
ExecStart=/usr/local/template.sh

[Install]
WantedBy=multi-user.target
User=root - запуск от имени root! Указывайте (или не указывайте) того пользователя, от имени которого должен выполняться ваш скрипт.
Type=oneshot означает, что процесс будет завершен до запуска дальнейших юнитов.
Также может быть более развернутый вид файла:
Код:
[Unit]
Description=Slurm controller daemon
After=network.target
ConditionPathExists=/etc/slurm/slurm.conf

[Service]
Type=forking
EnvironmentFile=-/etc/sysconfig/slurmctld
ExecStart=/usr/sbin/slurmctld $SLURMCTLD_OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
PIDFile=/var/run/slurmctld.pid

[Install]
WantedBy=multi-user.target
# /etc/systemd/system/slurmctld.service.d/after.conf
[Unit]
After=nss-user-lookup.target munge.service

Проверяем и перезапускаем:
Код:
systemctl daemon-reload
systemctl start template-settings.service

Если после выполнения скрипта мы увидели ожидаемый результат, то разрешим этот "сервис" для автозапуска:
Код:
systemctl enable template-settings.service

Пробуем перезагрузиться. Должно все работать.
Смотрим, когда наша служба была запущена:
Код:
systemctl status template-settings.service
 
Последнее редактирование:
Назад
Верх Низ