我想在实例被要求关闭时运行一个 PHP 脚本,但当然是在它实际关闭之前。我的特定脚本只是希望将一些日志文件从本地分区推送到另一台服务器。
我了解这个过程的大概原理,但我需要一些澄清。
我是这样理解的。如果我错了,请纠正我。
- 在 /etc/init.d 中创建一个可执行脚本(我们称之为 /etc/init.d/push-logs)
- 从 /etc/rc0.d(关机)和 /etc/rc6.d(重启)创建到 /etc/init.d/push-logs 的符号链接。名称应为 KXXpush-logs
这是我的问题:
- 当然——我的理解正确吗?
- 对于上面的 #2 - 听起来 XX 越低越好 - 我可以使用的数字是否太低了?如果它与另一个脚本共享一个数字有关系吗?
- /etc/init.d/push-logs 中的脚本是否必须遵循标准 init.d 模板(支持启动/停止等命令)?这并不适用于我的用例。如果可能的话,我只希望脚本如下:
#!/bin/sh # # Run PHP file prior to shutdown # /usr/bin/php /path/to/php_file.php
答案1
- 是的,但是符号链接名称应该以
S
- 开头(表示 Start,K
表示 Kill) - 两位数字指定脚本的执行顺序,数字最小的优先执行。
service push-logs start
是的,因为 Linux 将执行与符号链接等效的操作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
考虑到这一点,制作一个虚假服务可能会更容易,它在启动时触及该文件但对状态不执行任何操作......