Я хотел бы запустить PHP-скрипт, когда экземпляру говорят выключиться, но, конечно, до того, как он действительно завершит выключение. Мой конкретный скрипт просто пытается переместить некоторые файлы журналов из локального раздела на другой сервер.
Я понял суть этого процесса, но мне нужны некоторые пояснения.
Как я это понимаю. Поправьте меня, если я ошибаюсь.
- Создайте исполняемый скрипт в /etc/init.d (назовем его /etc/init.d/push-logs)
- Создайте символическую ссылку на /etc/init.d/push-logs из /etc/rc0.d (выключение) и /etc/rc6.d (перезагрузка). Имя должно быть KXXpush-logs
Вот мои вопросы:
- Конечно — я правильно понимаю?
- Для #2 выше - похоже, чем меньше XX, тем лучше - не слишком ли малое число я могу использовать? Имеет ли значение, если оно разделяет число с другим скриптом?
- ДОЛЖЕН ли скрипт в /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
- для Start (K
для Kill) - Две цифры определяют порядок выполнения вашего скрипта, причем меньший номер выполняется первым.
- Да, потому что 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
Учитывая это, может быть проще создать фальшивую службу, которая обращается к этому файлу при запуске и ничего не делает при его статусе...