Ubuntu 启动脚本

2 scripting 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&
Run Code Online (Sandbox Code Playgroud)

我也尝试过 #!/bin/sh,但它似乎有同样的问题。

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

ubuntuUser@ubuntu:~$ sudo update-rc.d test defaults
Run Code Online (Sandbox Code Playgroud)

但我收到此错误:

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.
Run Code Online (Sandbox Code Playgroud)

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

ubuntuUser@ubuntu:~$ sudo chmod +x /etc/init.d/test
Run Code Online (Sandbox Code Playgroud)

之后,我重新启动了计算机,但它不起作用。

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

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

the*_*ive 12

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

#!/bin/bash
# All other lines should follow this one.
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

我以前没有使用过 update-rc.d,但快速查看手册页表明默认值为 S20 - 这是脚本将运行的引导序列(其中 1 最早,99 最高)。作为一般经验法则,除非您知道其他情况,否则这应该是 99,因为您开始的内容可能取决于其他服务 - 邮件、网络、系统日志等。

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

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