每次 Ubuntu 启动时,我都需要运行一个脚本,该脚本运行一些 SQL。所以我需要在MySQL启动后运行它。
我应该把这样的脚本放在哪里?
答案1
文件应放置在 中/etc/init.d
,并且链接应放在 中/etc/rc2.d
(假设您处于运行级别 2(请参阅who -r
)。
链接的形式应为S99sql
,rc2.d 中的所有文件均按字母顺序运行。
总结,
创建游览文件/etc/init.d/mysqlcmd.sh
然后将目录更改为/etc/rc2.d ansln -s ../init.d/mysqlcmd.sh S99mysql
答案2
系统
如果您使用的 Ubuntu 版本正在使用systemd
(14.04 及以上),那么您可以修改该文件并添加另一个要在准备就绪.service
时运行的脚本。MySQL
# vi /usr/lib/systemd/system/mysqld.service
添加另一个条目:
ExecStartPost=/usr/libexec/mysqld-wait-ready $MAINPID
通过附加分号和脚本名称:
ExecStartPost=/usr/libexec/mysqld-wait-ready $MAINPID ; <path to my script>
bash
请注意,这些脚本不是使用 shell 运行的,因此如果您需要重定向等,您需要将您的脚本包装起来或类似的脚本。
该mysqld-wait-ready
脚本完全按照它所说的进行操作,并等待直到mysqld
准备好接受连接。因此,您的脚本应该能够在服务器上运行 SQL。
暴发户
对于 Ubuntu 14.04 之前的版本,您可以创建一个upstart
conf 文件
description "My Post-MySQL Start Script"
author "Pavel Bernshtam"
start on started mysql
task
script
# do my stuff here
end script
将文件保存到/etc/init/<my script name>.conf
有关脚本的更多信息,upstart
请访问这里