仅在启动时运行级别

仅在启动时运行级别

我发现运行级别的概念非常令人困惑。目前,我试图仅在启动时运行脚本。但如下所示的配置会导致它在停机时也能运行。

我正在以这种方式编写守护进程:

update.rc-d script.sh defaults 100

我也尝试过

update-rc-d script.sh start 100

但这也不起作用。

答案1

运行级别是任务的逻辑组。传统上,有五个运行级别。

0 boot
1 single user 
2 not used
3 multiuser
4 not used 
5 gui
6 reboot 

每个运行级别都定义了一组或多或少静态的任务要运行。运行级别 1 可能没有网络,而运行级别 3 可能没有 GUI 登录屏幕。系统在到达运行级别 1 之前会先经过所有较低的运行级别。默认运行级别对于典型的 Ubuntu 系统,传统的运行级别是 5:GUI,而其他发行版(例如 Debian 或 Gentoo)可能配置为以 3:多用户作为默认运行级别运行。

在最近的 ubuntu 版本中,这个模型有所改变,因为以前的系统启动方式不允许多个服务(程序)并行运行。毫无疑问,还有其他原因。


如果我理解你的目的正确的话,你需要运行一个命令。你可以将它与你可能拥有的任何其他命令放在一起/etc/rc.local文件:

$ chmod 755 /etc/rc.local 

如果没有执行位,Init 系统将不会运行此文件

$ cat /etc/rc.local
#!/bin/sh -e
# This script is executed at the end of each multiuser runlevel.

loadkeys  /root/jolemak.iso15.kmap
exit 0

任何多用户运行级别都意味着任何高于 3 的运行级别。在此示例中,运行单个命令来为虚拟控制台加载备用键盘布局。在我弄清楚如何正确安装和配置其他布局之前,这是一种快速修复布局的方法。


如果你需要做更高级的事情,可以编写传统的 /etc/init.d/foo 脚本或新的暴发户(Ubuntu 专用)/etc/init/moo.conf。研究该文件夹中的示例并阅读 wiki 以获取更多信息。

https://help.ubuntu.com/community/UbuntuBootupHowto
http://upstart.ubuntu.com/getting-started.html
http://upstart.ubuntu.com/cookbook/

您的问题也在这里得到回答:http://upstart.ubuntu.com/cookbook/#single-job和这里http://www.debuntu.org/how-to-managing-services-with-update-rc-d/

答案2

http://www.netbsd.org/docs/guide/en/chap-rc.html#chap-rc-scripts记录脚本的工作方式。脚本将在启动时、关机时以及用户运行“service yourscriptname”时运行。您需要告诉脚本检查其第一个也是唯一的参数。如果该参数是“start”,则启动服务或执行脚本执行的其他任何操作。如果该参数是“stop”,则停止服务或不执行任何操作。如何处理“restart”和“status”由您决定。目前,脚本忽略了该参数,因此在启动时调用“script.sh start”时一切正常,但在停止时调用“script.sh stop”时,整个过程将再次运行。

相关内容