• Ubuntu 创建开机自启动脚本的方法


    http://askubuntu.com/questions/9382/how-can-i-configure-a-service-to-run-at-startup
    http://stackoverflow.com/questions/7221757/run-automatically-program-on-startup-under-linux-ubuntu






    sudo mv /filename /etc/init.d/ sudo chmod +x /etc/init.d/filename sudo update-rc.d filename defaults

    Script should now start on boot. Note that this method also works with both hard links and symbolic links (ln).

    Edit

    At this point in the boot process PATH isn't set yet, so it is critical that absolute paths are used throughout. BUT, as pointed out in the comments by Steve HHH, explicitly declaring the full file path (/etc/init.d/filename) for the update-rc.d command is not valid in most versions of Linux. Per the manpage for update-rc.d, the second parameter is a script located in /etc/init.d/*. Updated above code to reflect this.

    Another Edit

    Also as pointed out in the comments (by Charles Brandt), /filename must be an init style script. A good template was also provided - https://github.com/fhd/init-script-template.

    Another link to another article just to avoid possible link rot (although it would be saddening if GitHub died) - http://www.linux.com/learn/tutorials/442412-managing-linux-daemons-with-init-scripts

    yetAnother Edit

    As pointed out in the comments (by Russell Yan), This works only on default mode of update-rc.d.

    According to manual of update-rc.d, it can run on two modes, "the machines using the legacy mode will have a file /etc/init.d/.legacy-bootordering", in which case you have to pass sequence and runlevel configuration through command line arguments.

    The equivalent argument set for the above example is

    sudo update-rc.d filename start 20 2 3 4 5 . stop 20 0 1 6 .

    • To start a daemon at startup:

      update-rc.d service_name defaults
      
    • To remove:

      update-rc.d -f service_name remove
      

    defaults => default run levels 2,3,4 and 5

    Example:

    update-rc.d tomcat7 defaults
    



    1) 将你的启动脚本复制到 /etc/init.d目录下
    以下假设你的脚本文件名为 test。
     
    2) 设置脚本文件的权限
    $ sudo chmod 755 /etc/init.d/test
     
    3) 执行如下命令将脚本放到启动脚本中去:
    $ cd /etc/init.d
    $ sudo update-rc.d example_name.sh defaults 95
    注:其中数字95是脚本启动的顺序号,按照自己的需要相应修改即可。在你有多个启动脚本,而它们之间又有先后启动的依赖关系时你就知道这个数字的具体作用了。该命令的输出信息参考如下:
    update-rc.d: warning: /etc/init.d/example_name.sh missing LSB information
    update-rc.d: see <http://wiki.debian.org/LSBInitScripts>
    Adding system startup for /etc/init.d/test ...
    /etc/rc0.d/K95example_name.sh -> ../init.d/example_name.sh
    /etc/rc1.d/K95example_name.sh -> ../init.d/example_name.sh
    /etc/rc6.d/K95example_name.sh -> ../init.d/example_name.sh
    /etc/rc2.d/S95example_name.sh -> ../init.d/example_name.sh
    /etc/rc3.d/S95example_name.sh -> ../init.d/example_name.sh
    /etc/rc4.d/S95example_name.sh -> ../init.d/example_name.sh
    /etc/rc5.d/S95example_name.sh -> ../init.d/example_name.sh
     
    卸载启动脚本的方法:
    $ cd /etc/init.d
     
    $ sudo update-rc.d -f example_name.sh remove
    命令输出的信息参考如下:
    Removing any system startup links for /etc/init.d/test ...
    /etc/rc0.d/K95example_name.sh
    /etc/rc1.d/K95example_name.sh
    /etc/rc2.d/S95example_name.sh
    /etc/rc3.d/S95example_name.sh
    /etc/rc4.d/S95example_name.sh
    /etc/rc5.d/S95example_name.sh
    /etc/rc6.d/K95example_name.sh


    按指定顺序、在指定运行级别中启动或关闭

    用法: update-rc.d <basename> start|stop <order> <runlevels>

    例:

    # update-rc.d ushare start 20 2 3 4 5 . stop 20 0 1 6 .

    解析:表示在2、3、4、5这五个运行级别中,由小到大,第20个开始运行ushare;在 0 1 6这3个运行级别中,第20个关闭apachectl。

    注意它有2个点号,其效果等于下面方法:

    # update-rc.d ushare defaults

    设置启动和关闭顺序为80,20, 级别为默认值:

    # update-rc.d <basename> defaults 80 20
  • 相关阅读:
    C语言 assert 函数
    C语言 exit 函数
    C语言 main 函数参数 main(int argc, char *argv[])
    《一线架构师实践指南》读后感(一)
    机器学习十讲第八讲
    机器学习十讲第七讲
    Python通过IMAP实现邮箱客户端
    ABAP-PS操作
    ABAP-AES加解密
    ABAP-HmacSHA256
  • 原文地址:https://www.cnblogs.com/welhzh/p/5725825.html
Copyright © 2020-2023  润新知