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

摘要:
Ubuntu 16.04设置rc的方法。本地启动命令/Script Ubuntu 16.04设置rc的方法。本地启动命令/脚本注意:用户在rc中启动。本地脚本默认为root/Bin/sh-e##rc。local##此脚本在每个多用户运行级别的末尾执行。#确保脚本将“退出”成功或错误#值。##为了启用或禁用脚本,只需更改执行#位。##默认情况下,此脚本不起作用。exit0注意:请确保在exit0/bin/sh-e##rc.local##之前添加命令。此脚本在每个多用户运行级别的结束时执行。#确保脚本在成功或无错误时“exit0”。##为了启用或禁用此脚本,只需更改执行#位。##默认情况下,此脚本没有任何作用。#logexec2˃/tmp/rc.local.log#sendstderrfromrc。localtoalogfileexec1˃&2#将stdout发送到相同的日志文件集-x#执行前的tellshtodisplay命令#Memcached/usr/local/memcache/bin/Memcached-p11211-m64mm-d-urootexit02、rc。本地文件头/bin/sh修改为/bin/bash3。如果执行了sh文件,则执行权限为sudochmod+xxxx。应该给出sh,然后是sudoshxxx。sh和update-rc应该在启动D期间添加。添加启动服务以向Ubuntu添加启动脚本。操作如下:1.创建一个新的脚本文件_service.sh#!
Ubuntu 16.04设置rc.local开机启动命令/脚本的方法
   
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 16.04设置rc.local开机启动命令/脚本的方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇centos 卸载vsftpd方法EF中的批量操作下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Mac下搭建php开发环境【转】

Mac OS X 内置了Apache 和 PHP,这样使用起来非常方便。本文以Mac OS X 10.6.3为例。主要内容包括: 启动Apache 运行PHP 安装MySQL 使用phpMyAdmin 配置PHP的MCrypt扩展库 设置虚拟主机 启动Apache   有两种方法: 打开“系统设置偏好(System Preferences)” ->...

iOS_网络_02_搭建本地Web服务器

搭建Apache(Web)服务器,在本地搭建开发用的网络测试环境 一、Web服务器   WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。Web服务器是可以向发出请求的浏览器提供文档的程序。   (1) 服务器是一种被动程序:只有当Internet上运行在其他计算机中的浏览器发出请求时,服务器才会响应   (...

MAC-下安装php-redis扩展

MAC下安装php-redis扩展 下载php-redis,地址:https://nodeload.github.com/nicolasff/phpredis/zip/master 下载完成得到phpredis-master.zip 移动到/usr/local/目录中 sudo cp phpredis-master/usr/local/ 进入/usr/l...

项目实战15.2—企业级堡垒机 jumpserver快速入门

本文收录在Linux运维企业架构实战系列 必备条件 硬件条件 ① 一台安装好 Jumpserver 系统的可用主机(堡垒机) ② 一台或多台可用的 Linux、Windows资产设备(被管理的资产) 服务条件 (1)coco服务 ① 鉴于心态检测存在延迟,也可以直接在 Jumpserver 主机上执行如下命令检测 Coco 是否存活,Coco 服务默认使...

在Delphi中高效执行JS代码

因为一些原因,需要进行encodeURIComponent和decodeURIComponent编码,在Delphi中找了一个,首先是发现不能正确编码+号,后面强制处理替换了,勉强可用。 后面发现多次使用后delphi自带的HttpEncode会报Out of Memory. 以上可能是我使用的不好,但没有找到解决办法。 后面想到直接采用运行JavaScr...

postgresql-锁相关

postgresql-并发控制 目录 postgresql-并发控制 显示锁定 表级锁八种表级锁的强度 行级锁四种行级锁的强度 页级锁 咨询锁 死锁 postgres中关于锁等待参数 总结 显示锁定 PostgreSQL提供了多种锁模式用于控制表中数据的并发访问。这些模式可以用于在mvcc无法给出期望行为的场合。同样,大多数Postg...