rc.local не запускается в Fedora 23

У меня есть скрипт iptables, который я хочу запустить при загрузке.
Я создал файл /etc/rc.d/rc.local с разрешениями CHMOD 755, которые работали в предыдущих операционных системах.
Файл принадлежит корню.
У меня также есть #! / Bin / bash в качестве первой строки.
Я также пробовал #! / Bin / sh
Я также добавил 5 секунд сна, думая, что, может быть, что-то нужно закончить.
Я временно отключил selinux, чтобы устранить причину.
Файл rc.local выглядит так:

#!/bin/bash  
sleep 5  
/usr/local/sbin/miniptables 

Файл miniptables также принадлежит пользователю root, chmod 755, начинается с #! / Bin / bash, содержит несколько команд iptables и работал на сотнях серверов.
Что мне не хватает?
Заранее спасибо.

2
задан 28 December 2015 в 23:54
3 ответа

Файл /etc/rc.d/rc.local по умолчанию не имеет разрешений на выполнение, поэтому установите его как исполняемый:

# chmod +x /etc/rc.d/rc.local

Кроме того, файл не запускается, если не включена служба systemd rc-local , но по умолчанию она отключена. Поэтому вам нужно включить (и запустить) его:

# systemctl start rc-local
# systemctl enable rc-local

Для систем systemd обычно лучше написать свою собственную службу systemd .

2
ответ дан 3 December 2019 в 11:34

Создайте свой скрипт: vim /etc/rc.d/rc.local[129 visible Пример скрипта:

#!/bin/bash
echo "test script"

Сделайте скрипт исполняемым: chmod + x / etc / rc.d / rc.local
Исправить контекст SELinux: restorecon -v /etc/rc.d/rc.local

Включить и запустить службу:

systemctl enable rc-local.service
systemctl start rc-local.service
systemctl status rc-local.service
0
ответ дан 3 December 2019 в 11:34

TL;DR: Просто создайте /etc/rc.d/rc.local и сделайте его исполняемым. Вот и все.

Я понятия не имею, почему во многих статьях и блогах упоминается ненужный и неверный шаг по включению сервисного модуля rc-local. Он даже не будет работать, так как в файле rc.local по умолчанию нет инструкции WantedBy, потому что systemd содержит так называемый генератор, который проверяет наличие такого файла. существует и является исполняемым, он автоматически генерирует упомянутый rc-local.service. Нет необходимости включать его вручную, на самом деле вы не можете сделать это, пока systemd не загрузится и не сгенерирует его, или вы не запустите генератор вручную:

# systemctl enable --now rc-local
The unit files have no installation config (WantedBy=, RequiredBy=, Also=,
Alias= settings in the [Install] section, and DefaultInstance= for template
units). This means they are not meant to be enabled using systemctl.

Possible reasons for having this kind of units are:
• A unit may be statically enabled by being symlinked from another unit's
  .wants/ or .requires/ directory.
• A unit's purpose may be to act as a helper for some other unit which has
  a requirement dependency on it.
• A unit may be started when needed via activation (socket, path, timer,
  D-Bus, udev, scripted systemctl call, ...).
• In case of template units, the unit is meant to be enabled with some
  instance name specified.
1
ответ дан 18 August 2021 в 09:07

Теги

Похожие вопросы