这应该很容易,因为这里面有很多问题,但是看起来我错过了一些东西。 我有一个脚本可以创build一些需要在启动时运行的目录。 这样做太简单了,不必费心去搞定新贵或什么东西 – 这不是服务,不需要监控,它只需要在启动时运行,具有超级用户权限。 我已经尝试将脚本直接放在/etc/rc2.d中 – 它只运行一次,一次启动,而不再运行。 系统是否记得它运行,没有closures或什么? 我还以root身份添加了一个cron作业,并将该脚本添加为@reboot任务,但仍然没有任何骰子。 这是在s3的Ubuntu实例 – s3实例有一些奇怪的启动方式导致这些简单的事情不工作?
编辑 :我应该提到,我需要在启动时尽早运行这个脚本,因为除此之外,它还会设置/ tmp,这对于系统的许多部分都是非常重要的。
/etc/rc3.d/或从其他位置创build一个符号链接。 /etc/rc3.d/的脚本或链接/etc/rc3.d/为S50myscript 。 (数字对起始订单影响,资本S是必需的。) chmod +x script.sh ) #!/bin/sh如果它是一个shell脚本的话。 echo "step1" >/script.log echo "step2" >>/script.log等 希望这有助于:-)
一个简单的解决scheme是将你的代码添加到/etc/rc.local 。 然后它作为最后的脚本执行。
rc.local是一个古老的 BSD风格的启动脚本,在我所知道的大部分linux风格上都是很荣幸的。
如果您希望在引导过程中更多地控制其他调用时间,请查看man update-rc.d,以pipe理从技术/etc/rc?.d/目录到正确的一组符号链接到/etc/init.d/你的启动脚本的/etc/init.d/目录。 在这里您可以定义启动过程中脚本调用的顺序。
PS:我在启动脚本中进行便携式日志的build议是使用logger命令。 这使您的shell脚本能够将消息发送到syslog守护进程。
PS: 缺lessLSB信息
update-rc.d的LSB信息的例子是这样的注释部分:
### BEGIN INIT INFO # Provides: tomcat7 # Required-Start: $local_fs $remote_fs $network # Required-Stop: $local_fs $remote_fs $network # Should-Start: $named # Should-Stop: $named # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start Tomcat (c42Cfg user instance) # Description: Start the Tomcat servlet engine (c42Cfg user instance). ### END INIT INFO