Назад | Перейти на главную страницу

Запускать скрипт перед выключением / перезапуском

Я бы хотел запустить PHP-скрипт, когда экземпляру приказывают выключиться, но, конечно, до того, как он действительно завершит выключение. Мой конкретный сценарий просто пытается переместить некоторые файлы журнала из локального раздела на другой сервер.

Я понял, как работает этот процесс, но мне нужно пояснение.

Насколько я понимаю. Пожалуйста, поправьте меня, если я ошибаюсь.

  1. Создайте исполняемый скрипт в /etc/init.d (назовем его /etc/init.d/push-logs)
  2. Создайте символическую ссылку на /etc/init.d/push-logs из /etc/rc0.d (выключение) и /etc/rc6.d (перезагрузка). Имя должно быть KXXpush-logs

Вот мои вопросы:

  1. Конечно - правильно ли я понимаю?
  2. Для пункта 2 выше - похоже, чем меньше XX, тем лучше - есть ли слишком маленькое число, которое я могу использовать? Имеет ли значение, если он разделяет номер с другим скриптом?
  3. ДОЛЖЕН ли сценарий в /etc/init.d/push-logs следовать стандартному шаблону init.d (поддерживая команды start / stop и т. Д.)? На самом деле это не относится к моему варианту использования. Если возможно, я просто хочу, чтобы сценарий был следующим:
#!/bin/sh
#
# Run PHP file prior to shutdown
#

/usr/bin/php /path/to/php_file.php
  1. Да, но имя символической ссылки должно начинаться с S - для начала (K для убийства)
  2. Двузначное число определяет порядок выполнения вашего скрипта, причем младший номер выполняется первым.
  3. Да, потому что Linux выполнит эквивалент service push-logs start для S символическая ссылка.

В CentOS вам также понадобится соответствующий файл в /var/lock/subsys/

/var/lock/subsys/push-logs

https://unix.stackexchange.com/questions/114274/an-init-script-does-not-get-called-on-shutdown

Имея это в виду, может быть проще создать поддельный сервис, который затрагивает этот файл при запуске и ничего не делает с статусом ...