• [高清组图]环广西赛:参赛车队赛前适应训练 2018-08-31
  • [高清组图]特谢拉复出吴曦失单刀 苏宁0-0平斯威 2018-08-31
  • [高清组图]潜水偶遇座头鲸 亲密互动玩起“水中击掌” 2018-08-31
  • [高清组图]法拉利拍定妆照 维特尔KIMI准备好了 2018-08-31
  • [高清组图]毛剑卿伤退莫雷诺捅射 申花1-0一方 2018-08-31
  • [高清组图]比埃拉双响巴坎布建功 国安5-1富力 2018-08-31
  • [高清组图]武磊世界波胡尔克点射 上港2-0胜申花 2018-08-31
  • [高清组图]武磊2球吕文君建功 上港3-1富力 2018-08-31
  • [高清组图]欧超杯-科斯塔2球 皇马加时赛2-4马竞 2018-08-31
  • [高清组图]格里芬赤膊骑行 休赛期享受二人世界 2018-08-31
  • [视频]【深化改革 重在实效】精准扶贫 四川彝区要拔掉“穷根” 2018-08-31
  • [视频]【深化改革 重在实效】破藩篱促合力 体制创新粘合“两张皮” 2018-08-31
  • [视频]【深化改革 重在实效】激发活力 实现市场准入全程便利化 2018-08-31
  • [视频]【深化改革 重在实效】打通简政放权的“最后一公里” 2018-08-31
  • [视频]【深化改革 重在实效】广东:户籍改革为外来工打开一扇门 2018-08-31
  • 手机版
    你好,游客 登录 注册 搜索
    背景:
    阅读新闻

    Ubuntu 16.04设置rc.local开机启动命令/脚本的方法

    [日期:2017-09-29] 来源:Linux社区  作者:EasonJim [字体: ]

    奥门新萄京官方正版 www.arianalance.com Ubuntu 16.04设置rc.local开机启动命令/脚本的方法(通过update-rc.d管理Ubuntu开机启动程序/服务)

    注意:rc.local脚本里面启动的用户默认为root权限。

    一、rc.local脚本

    rc.local脚本是一个Ubuntu开机后会自动执行的脚本,我们可以在该脚本内添加命令行指令。该脚本位于/etc/路径下,需要root权限才能修改。

    该脚本具体格式如下:

    #!/bin/sh -e
    #
    # rc.local
    #
    # This script is executed at the end of each multiuser runlevel.
    # Make sure that the script will "exit 0" on success or any other
    # value on error.
    #
    # In order to enable or disable this script just change the execution
    # bits.
    #
    # By default this script does nothing.
      
    exit 0

    注意: 一定要将命令添加在exit 0之前。里面可以直接写命令或者执行Shell脚本文件sh。

    二、关于放在rc.local里面时不启动的问题:

    1、可以先增加日志输出功能,来查看最终为什么这个脚本不启动的原因,这个是Memcached启动时的样例文件:

    #!/bin/sh -e
    #
    # rc.local
    #
    # This script is executed at the end of each multiuser runlevel.
    # Make sure that the script will "exit 0" on success or any other
    # value on error.
    #
    # In order to enable or disable this script just change the execution
    # bits.
    #
    # By default this script does nothing.
    
    #log
    exec 2> /tmp/rc.local.log  # send stderr from rc.local to a log file  
    exec 1>&2                  # send stdout to the same log file  
    set -x                     # tell sh to display commands before execution 
    
    #Memcached
    /usr/local/memcache/bin/memcached -p 11211 -m 64m -d -u root
    
    exit 0

    2、rc.local文件头部/bin/sh修改为/bin/bash

    3、如果是执行sh文件,那么要赋予执行权限sudo chmod +x xxx.sh,然后启动时加上sudo sh xxx.sh

    三、 update-rc.d增加开机启动服务

    给Ubuntu添加一个开机启动脚本,操作如下:

    1、新建个脚本文件new_service.sh

    #!/bin/bash
    # command content
      
    exit 0

    2、设置权限

    sudo chmod 755 new_service.sh
    #或者
    sudo chmod +x new_service.sh

    3、把脚本放置到启动目录下

    sudo mv new_service.sh /etc/init.d/

    4、将脚本添加到启动脚本

    执行如下指令,在这里90表明一个优先级,越高表示执行的越晚

    cd /etc/init.d/
    sudo update-rc.d new_service.sh defaults 90

    5、移除Ubuntu开机脚本

    sudo update-rc.d -f new_service.sh remove

    6、通过sysv-rc-conf来管理上面启动服务的启动级别等,还是开机不启动

    sudo sysv-rc-conf 

    7、update-rc.d的详细参数

    使用update-rc.d命令需要指定脚本名称和一些参数,它的格式看起来是这样的(需要在 root 权限下):

    update-rc.d [-n] [-f] <basename> remove
    update-rc.d [-n] <basename> defaults
    update-rc.d [-n] <basename> disable|enable [S|2|3|4|5]
    update-rc.d <basename> start|stop <NN> <runlevels>
    -n: not really
    -f: force

    其中:

    • disable|enable:代表脚本还在/etc/init.d中,并设置当前状态是手动启动还是自动启动。
    • start|stop:代表脚本还在/etc/init.d中,开机,并设置当前状态是开始运行还是停止运行。(启用后可配置开始运行与否)
    • NN:是一个决定启动顺序的两位数字值。(例如90大于80,因此80对应的脚本先启动或先停止)
    • runlevels:则指定了运行级别。

    实例:

    (1)、添加一个新的启动脚本sample_init_script,并且指定为默认启动顺序、默认运行级别(还记得前面说的吗,首先要有实际的文件存在于/etc/init.d,即若文件/etc/init.d/sample_init_script不存在,则该命令不会执行):

    update-rc.d sample_init_script defaults

    上一条命令等效于(中间是一个英文句点符号):

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

    (2)、安装一个启动脚本sample_init_script,指定默认运行级别,但启动顺序为50

    update-rc.d sample_init_script defaults 50

    (3)、安装两个启动脚本AB,让A先于B启动,后于B停止:

    update-rc.d A 10 40
    update-rc.d B 20 30

    (4)、删除一个启动脚本sample_init_script,如果脚本不存在则直接跳过:

    update-rc.d -f sample_init_script remove

    这一条命令实际上做的就是一一删除所有位于/etc/rcX.d目录下指向/etc/init.dsample_init_script的链接(可能存在多个链接文件),update-rc.d只不过简化了这一步骤。

    (5)禁止Apache/MySQL相关组件开机自启:

    update-rc.d -f apache2 remove
    update-rc.d -f mysql remove

    8、服务的启动停止状态

    #通过service,比如
    sudo service xxx status
    sudo service xxx start
    sudo service xxx stop
    sudo service xxx restart

    9、查看全部服务列表

    sudo service --status-all

    更多Ubuntu相关信息见Ubuntu 专题页面 http://www.arianalance.com/topicnews.aspx?tid=2

    本文永久更新链接地址http://www.arianalance.com/Linux/2017-09/147166.htm

    linux
    本文评论   查看全部评论 (0)
    表情: 表情 姓名: 字数

           

    评论声明
    • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
    • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
    • 本站管理人员有权保留或删除其管辖留言中的任意内容
    • 本站有权在网站内转载或引用您的评论
    • 参与本评论即表明您已经阅读并接受上述条款