Если вы хотите, чтобы какая-то программа или скрипт запускались вместе со стартом системы, то это можно реализовать с помощью systemctl. Этот метод универсален – автозапуск срабатывает и на безголовых серверах, а не только при входе в графическое окружение рабочего стола.
Чтобы добавить скрипт в автозагрузку в Arch Linux и его производных, вам нужно создать в каталоге /etc/systemd/system/ файл определённого содержания. Название файла выберите своё. К примеру, я хочу, чтобы при запуске запускался скрипт, который содержит несколько правил для затруднения DOS-атак. Этот файл размещён по пути /root/firewall.sh
Начинаем с того, что файлу присвоены надлежащие права:
chmod 755 /root/firewall.sh
Убедитесь, что у файла присутствует шебанг #!/bin/bash (или другой соответствующий содержимому файла).
Я создаю файл anti-dos.service (название вы можете выбрать своё):
vim /etc/systemd/system/anti-dos.service
Содержимое моего файла
[Unit] Description=Начальная анти DOS-защита. [Service] ExecStart=/root/firewall.sh [Install] WantedBy=multi-user.target
Здесь
- Description=Начальная анти DOS-защита. – это описание, замените описание на своё.
- ExecStart=/root/firewall.sh – указан полный путь до файла, который я хочу добавить в автозагрузку.
Не пишите что-то вроде ExecStart=/bin/sh /path/to/script.sh, поскольку это не будет работать. Если вы действительно хотите указать интерпретатор и скрипт, то используйте конструкцию вида:
/usr/bin/bash -c 'ИНТЕРПРЕТАТОР /ПУТЬ/ДО/СКРИПТА'
Например:
/usr/bin/bash -c 'php /root/bin/translator.php'
Пример файла с использованием этой конструкции
[Unit] Description=Запуск переводчика. [Service] ExecStart=/usr/bin/bash -c 'php /root/bin/translator.php' [Install] WantedBy=multi-user.target
- WantedBy=multi-user.target – означает, что автозапуск сделан для всех пользователей.
Чтобы запустить службу выполните команду (название anti-dos.service поменяйте на название своего файла):
systemctl start anti-dos.service
Для проверки статуса службы:
systemctl status anti-dos.service
Чтобы включить автозапуск нужно сделать так (название anti-dos.service поменяйте на название своего файла):
systemctl enable anti-dos.service
Создание ссылки говорит о том, что добавление в автозапуск сработало:
Для проверки давайте перезагрузим сервер ))
Скриншот выше показывает, что всё отработало штатно. Тот факт, что процесс показан как умерший, в моём случае, является нормальным. Поскольку я добавил в автозапуск не службу, а одноразовый скрипт.
Чтобы уже совсем убедиться, что настройки файервола вступили в силу, я набираю:
iptables --list
Да, мои правила файервола на месте.
Также можно найти свой автозапускаемый файл в списке всего, что добавлено в автозагрузку:
systemctl list-unit-files
После редактирования файлов с расширением .service, чтобы изменения вступили в силу, вам нужно выполнить команду:
systemctl daemon-reload
Близкие статьи
- Включение функциональности /etc/rc.local в Arch Linux (75.9%)
- Работа с дисками в BlackArch (монтирование, решение проблем) (51.8%)
- Графический интерфейс и цветной вывод pacman (51.8%)
- Как настроить Bluetooth на Arch Linux / BlackArch (51.8%)
- Решение проблемы с отсутствие сети из-за Dependency failed (51.8%)
- Ошибка «Your Ruby version is 2.6.6, but your Gemfile specified 2.7.2» (РЕШЕНО) (RANDOM - 50%)