Как запустить мой скрипт после завершения загрузки SuSE?

Как запустить мой скрипт после завершения загрузки SuSE?

Я хочу, чтобы мой сервер уведомил меня (через рычание), что (пере)загрузка завершена. У меня есть готовый файл php, который отправляет рычание, но я не знаю, в какой файл добавить строку.

В какой файл мне нужно добавить мой код, чтобы он запускался только после завершения загрузки SuSE?

решение1

(open)SUSE использует /etc/init.d/after.localдля этой цели. Просто добавьте команды, которые вам нужно выполнить, в этот файл. Обратите внимание, что это отлично работает с SystemV init, но с systemd это нужно было бы AFAIK решать по-другому.

решение2

Более новый синтаксис для Suse Linux Enterprise 11 SP2 (и openSUSE ?)

Лучшим способом будет создание скрипта оболочки, который будет вызывать ваш скрипт PHP. Этот скрипт оболочки должен иметь в заголовке следующий комментарий:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          nothing
# Required-Start:    $all
# Default-Start:     3 5
# Default-Stop:      4
# Short-Description: single_line_description
# Description:       multiline_description
### END INIT INFO

Типичный шаблон (с множеством пояснительных комментариев) можно найти в /etc/init.d/skeleton. Этот шаблон включает необходимый код для подключения вашего PHP-скрипта. Вы увидите начальный случай, в котором вам нужно будет вызвать ваш PHP-скрипт.
Я отбросил ряд необязательных параметров в заголовке, поскольку, по-видимому, они вам не понадобятся.

Важный
Важно использовать скелет, по крайней мере, в операторе case (см.действия скриптов инициализации), и реализовать хотя бы начальный случай. В начальном случае это то, где нужно вызывать ваш скрипт.

Здесь вы можете найти небольшой пример скрипта, который будет вызван в конце загрузки:см. мой Gist. Я установил недопустимый уровень запуска для Default-Stop, но каким-то образом скрипт все равно вызывается во время выключения. В любом случае, код в случае "stop" выполняется, а не в случае "start" во время выключения.

После того, как вы написали свой скрипт, скопируйте его. /etc/init.dПредположим, что ваш скрипт инициализации называется boot-notification. Тогда вам нужно сделать следующее (как пользователь root):

chown root:root boot-notification
chmod 0750 boot-notification
mv boot-notification /etc/init.d/

Затем вам нужно "зарегистрировать" скрипт в системе инициализации. Вы можете использовать команду insserv(снова как root) или использовать YaST:

insserv boot-notification

Затем вы можете дополнительно проверить, что скрипт является одним из последних, запущенных, просмотрев каждый уровень init. Если вы выбрали только уровень запуска 3, то вы можете сделать это:

ls -l /etc/init.d/rc3.d/S*

Это вернет список ссылок на скрипты инициализации. Ссылка на ваш скрипт должна быть в конце (или около него) списка.

Примечание: Если вы хотите поэкспериментировать с более динамичным способом написания скриптов инициализации, я бы посоветовал прочитать эти две страницы:

решение3

Для OpenSUSE 12.2 (Mantis)сценарийдля "after local" должно быть /etc/init.d/after-local, и вам может потребоваться включить его через systemctl, например так...

Кдавать возможность/etc/init.d/after-local,

systemctl enable after-local.service

КПроверь состояниеиз /etc/init.d/after-local,

systemctl status after-local.service

решение4

Я обнаружил, что есть два способа сделать это:

  1. Прежде всего, откройте терминал и введите:

sudo crontab -e

затем введите

@reboot sudo <command_to_execute_at_startup>

  1. Во-вторых, вы можете создать файл обслуживания.используя этот метод

Связанный контент