Ubuntu 启动脚本

Ubuntu 启动脚本

我在 Ubuntu 9.04 中尝试创建启动脚本时遇到了问题。我按照此指南操作,但没有成功: http://embraceubuntu.com/2005/09/07/adding-a-startup-script-to-be-run-at-bootup/

我按照指南创建了一个脚本来查看它是否有效:

#This script is called test    
#!/bin/bash
#Startup Firefox
firefox&

我也尝试使用#!/bin/sh,但似乎存在同样的问题。

在 /etc/init.d 中创建文件“test”后,我在终端中输入了以下内容:

ubuntuUser@ubuntu:~$ sudo update-rc.d test defaults

但我收到此错误:

ubuntuUser@ubuntu:~$ sudo update-rc.d test defaults
update-rc.d: warning: /etc/init.d/test missing LSB information
update-rc.d: see <http://wiki.debian.org/LSBInitScripts>
 System startup links for /etc/init.d/test already exist.

我不知道什么是 LSB,所以忽略了它并输入了以下行:

ubuntuUser@ubuntu:~$ sudo chmod +x /etc/init.d/test

此后,我重新启动了电脑,但是没有作用。

问题是我不知道是否是“缺少 LSB 信息”阻止我的脚本在启动时启动,是否是我编写启动脚本的方式,或者我是否完全做错了。

我想主要的问题是,我是否使用了错误的指南,以及如何制作启动脚本?

答案1

首先,脚本应该以 hashbang 行开始:

#!/bin/bash
# All other lines should follow this one.

LSB 错误与所有系统初始化脚本上的这个块有关

### BEGIN INIT INFO
# Provides:          defaultdaemon
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INF

我以前没有使用过 update-rc.d,但快速浏览一下手册页,就会发现默认值是 S20 - 这是启动时脚本运行的顺序(其中 1 最早,99 最高)。一般来说,除非您另有说明,否则应该是 99,因为您启动的内容可能依赖于其他服务 - 邮件、网络、系统日志等。

当您说脚本不起作用时,您期望什么行为?此脚本试图在机器启动时启动 Firefox,但它不会在用户登录时启动它。

您可以将 Firefox 等应用程序设置为在登录时运行启动应用程序在菜单中。

答案2

我按照指南创建了一个脚本来查看它是否有效:

#该脚本名为test
#!/bin/bash

“hashbang”行必须是任何脚本的第一行。如果指南另有建议,请选择其他指南。

我不知道什么是 LSB,所以忽略了它

那么,当您阅读并理解文档所update-rc.d指向的内容时,发生了什么?

答案3

听起来您想在登录后启动程序。您可能应该使用这个:

http://www.linuxscrew.com/2007/08/09/autostart-programs-in-ubuntu/

否则,脚本将会尝试在 X 启动之前运行,并且不会起作用。

有关 Linux 启动方式的更多信息,请查阅:http://www.losurs.org/docs/linuxinit

答案4

LSB 是Linux 标准库。 看一眼Debian 维基页面警告中建议的。上面有很多有用的信息。

相关内容