You are here: Home » Справка и подсказки » Как в Arch Linux / BlackArch добавить программу в автозагрузку

Как в Arch Linux / BlackArch добавить программу в автозагрузку

Если вы хотите, чтобы какая-то программа или скрипт запускались вместе со стартом системы, то это можно реализовать с помощью systemctl. Этот метод универсален – автозапуск срабатывает и на безголовых серверах, а не только при входе в графическое окружение рабочего стола.

Чтобы добавить скрипт в автозагрузку в Arch Linux и его производных, вам нужно создать в каталоге /etc/systemd/system/ файл определённого содержания. Название файла выберите своё. К примеру, я хочу, чтобы при запуске запускался скрипт, который содержит несколько правил для затруднения DOS-атак. Этот файл размещён по пути /root/firewall.sh

Начинаем с того, что файлу присвоены надлежащие права:

chmod 755 /root/firewall.sh

Убедитесь, что у файла присутствует шебанг #!/bin/bash (или другой соответствующий содержимому файла).

02

Я создаю файл anti-dos.service (название вы можете выбрать своё):

vim /etc/systemd/system/anti-dos.service

Содержимое моего файла

[Unit]
Description=Начальная анти DOS-защита.

[Service]
ExecStart=/root/firewall.sh

[Install]
WantedBy=multi-user.target

03

Здесь

  • 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

Создание ссылки говорит о том, что добавление в автозапуск сработало:

04

Для проверки давайте перезагрузим сервер ))

05

Скриншот выше показывает, что всё отработало штатно. Тот факт, что процесс показан как умерший, в моём случае, является нормальным. Поскольку я добавил в автозапуск не службу, а одноразовый скрипт.

Чтобы уже совсем убедиться, что настройки файервола вступили в силу, я набираю:

iptables --list

06

Да, мои правила файервола на месте.

Также можно найти свой автозапускаемый файл в списке всего, что добавлено в автозагрузку:

systemctl list-unit-files

После редактирования файлов с расширением .service, чтобы изменения вступили в силу, вам нужно выполнить команду:

systemctl daemon-reload

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

wp-puzzle.com logo