Хорошо известные сервисы на Linux могут быть добавлены на старт при загрузке системы без каких-либо проблем.
Например, если вы хотите добавить службу Apache Httpd при загрузке, вы можете сделать это с помощью команд chkconfig и systemctl.
Иногда вам нужно добавить собственный скрипт или команду или службу при загрузке, и как это сделать?
Вы можете сделать это, используя следующие три метода.
В этом руководстве мы покажем вам, как использовать эти методы на примерах.
- Метод 1: Как запустить скрипт или команду при перезагрузке или запуске системы с помощью файла /etc/rc.d/rc.local
- Способ 2: Как выполнить команду или скрипт при перезагрузке или запуске системы с помощью crontab
- Метод 3: Как запустить команду или скрипт при перезагрузке или запуске системы с помощью системного сервисного юнита
- Бонусные советы:
Метод 1: Как запустить скрипт или команду при перезагрузке или запуске системы с помощью файла /etc/rc.d/rc.local
Файл «/etc/rc.local» традиционно выполняется после того, как все обычные службы были запущены в конце процесса перехода в многопользовательский уровень выполнения.
Этот метод также работает в системе systemd.
Вам нужно добавить местоположение вашего скрипта в файл «/etc/rc.d/rc.local» для запуска при старте системы.
Убедитесь, что файл имеет права на запуск.
# chmod +x /etc/rc.d/rc.local
# vi /opt/scripts/run-script-on-boot.sh #!/bin/bash date > /root/on-boot-output.txt hostname > /root/on-boot-output.txt
# chmod +x /opt/scripts/run-script-on-boot.sh
Наконец добавьте скрипт в конец файла.
# vi /etc/rc.d/rc.local /opt/scripts/run-script-on-boot.sh
# reboot
Способ 2: Как выполнить команду или скрипт при перезагрузке или запуске системы с помощью crontab
cron автоматически выполняет запланированные задания в бэкэнде в определенное время.
@reboot – это специальная строка, которая позволяет пользователю запускать любую команду или скрипт при запуске ( во время загрузки).
В этом примере запускается файл «/opt/scripts/run-script-on-boot.sh» при перезагрузке системы.
Мы будем использовать тот же скрипт, что и выше.
Для этого просто добавьте следующую запись в файл crontab.
# crontab -e @reboot /opt/scripts/run-script-on-boot.sh
# reboot
Метод 3: Как запустить команду или скрипт при перезагрузке или запуске системы с помощью системного сервисного юнита
Этот метод работает только в системах systemd.
Этот метод очень прост.
Мы собираемся использовать тот же скрипт, показанный выше, чтобы продемонстрировать этот способ.
Для этого вам нужно создать скрипт запуска systemd и поместить его в каталог «/etc/systemd/system/».
Это наш пример скрипта запуска юнита systemd.
# vi sample-on-boot-script.service [Unit] Description=Run a Custom Script at Startup After=default.target [Service] ExecStart=/opt/scripts/run-script-on-boot.sh [Install] WantedBy=default.target
Как только вы поместите скрипт в расположение systemd, выполните следующую команду, чтобы обновить файлы конфигурации systemd и включить службу.
# systemctl daemon-reload # systemctl enable sample-on-boot-script.service
# reboot
Бонусные советы:
Если вы хотите запустить скрипт в фоновом режиме, вам нужно добавить амперсанд «&».
/Path/To/My_Script &
Если вы хотите выполнить команду от имени другого пользователя, используйте следующий формат.
su - $USER -c /Path/To/My_Script
Не получается разобраться с вторым вариантом. Хочу при запуске системы активировать команду “net.inet.ip.ttl=65”. Как её активировать при помощи crontab?