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

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

Я хотел бы запустить 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

  1. Да, но имя символической ссылки должно начинаться с S- для Start ( K для Kill)
  2. Две цифры определяют порядок выполнения вашего скрипта, причем меньший номер выполняется первым.
  3. Да, потому что Linux выполнит эквивалент service push-logs startдля Sсимволической ссылки.

решение2

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

/var/lock/subsys/push-logs

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

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

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