2

我创建了脚本文件 -

#!/bin/sh
echo "my application is here"
./helloworld  # helloworld is our application
  1. 创建脚本文件后,我将其复制到init.d
  2. 我给出了命令chmod +x /etc/init.d/vcc_app (vcc_app 是我创建的脚本的名称)
  3. 然后我给了命令ln -s /etc/init.d/vcc_app /etc/rc.d/vcc_app(rc.d是运行级目录)

但是当我重新启动板时,我的应用程序不会自动执行。谁能帮我吗?

4

2 回答 2

1

/etc/init.d需要符合 LSB 的脚本。

如果您只是想在引导过程结束时自动运行命令,请尝试将它们放入/etc/rc.local

于 2012-05-25T09:34:56.747 回答
1

并非所有 linux 系统都使用相同的init守护进程(ubuntu 使用 upstart:http ://upstart.ubuntu.com/getting-started.html ),但它们都在脚本中使用start和函数。stop其他常见功能是statusand restart,但同样,没有真正的全面标准。例如:

!#/bin/sh

start () {
    echo "application started";
    ./helloworld  # you should use an absolute path here instead of ./
}

stop () {

}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    *)
        echo "Usage start|stop";
esac

exit $?

最后一位是基于第一个命令行参数的开关,因为 init 将调用脚本myrcscript start

为了使用stop()(也经常有用restart()),您需要保留或能够获取由start();启动的进程的 pid 有时这是通过 /tmp 中的一个小“pid 文件”(包含 pid 的文本文件,例如,在 start() 中创建的/tmp/myscript.pid )完成的。

Ubuntu 上使用的“upstart”初始化守护进程有其自己的特定功能,但除非您需要使用它们,否则只需将其停止/启动保持在最低限度,它就会(可能)在任何地方工作。

于 2012-05-25T09:55:51.743 回答