目录
一:创建脚本
服务脚本要包括start,stop,restart这些方法,示例FileBackup.sh
#!/bin/bash
### BEGIN INIT INFO
# Provides: airven
# Required-Start: $local_fs $network
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: FileBackup service
# Description: FileBackup service
### END INIT INFO
workdir=$(cd $(dirname $0); pwd)
#filepath="/home/ldh/work_space/FileBackup/FileBackup.py"
scriptpath="/FileBackup.py"
filepath=$workdir$scriptpath
start(){
echo $filepath
###输出到log文件中
#nohup ./xxx.sh >/dev/null 2>log &
nohup python3 $filepath >/dev/null 2>&1 &
echo 'FileBackup service OK'
}
stop(){
serverpid=`ps -aux|grep "$filepath"|grep -v grep|awk '{print $2}'`
kill -9 $serverpid
echo 'FileBackup stop OK'
}
restart(){
stop
echo 'FileBackup stop OK'
start
echo 'FileBackup service OK'
}
case $1 in
"start")
start
;;
"stop")
stop
;;
"restart")
restart
;;
*)
start
esac
创建完服务脚本后,给脚本添加执行权限并放到/etc/init.d目录下
chmod +x FileBackup.sh
cp FileBackup.sh /etc/init.d/FileBackup
二:通过/etc/rc.local 实现开机启动
或者/etc/rc.d/rc.local,在exit 0 之前添加需要执行的程序
vim /etc/rc.local
#!/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.
/etc/init.d/FileBackup start
exit 0
说明:在一些linux发行版本中,例如ubuntu操作系统不存在 /etc/rc.local文件,则可以手动创建
然后执行以下命令:
chmod +x /etc/rc.local
systemctl is-enabled rc-local
systemctl enable rc-local
systemctl start rc-local.service
systemctl status rc-local.service
三:通过update-rc.d 实现开机启动
update-rc.d是一个Perl脚本,是用来自动升级System V类型初始化脚本,简单来说就是哪些东西是你想要在系统引导初始化的时候运行的,哪些是希望在关机或重启时候停止的,你都可以用它来设置。这些脚本的链接位于/etc/rcN.d/下(N代表0~6),对应脚本位于/etc/init.d/下,通过 update-rc.d 管理ubuntu开机启动
cd /etc/init.d/
sudo update-rc.d FileBackup.sh defaults 90
更多脚本
update-rc.d <serviceName> start <order> <runlevel> #设置启动项
update-rc.d <serviceName> stop <order> <runlevel> #设置停止项
update-rc.d <serviceName> defaults NN #启动和关闭级别默认,顺序为指定值NN
update-rc.d -f <serviceName> remove #从所有的运行级别中删除指定的启动项
update-rc.d <serviceName> start|stop <order> <runlevels> #设置启动和停止可以写在一起
举例:update-rc.d apachectl start 20 2 3 4 5 . stop 20 0 1 6 .
解析:
表示在2、3、4、5这五个运行级别中,由小到大,第20个开始运行apachectl;在 0 1 6这三个运行级别中,第20个关闭apachectl。
这是合并起来的写法,注意它有2个点号,效果等于下面方法:update-rc.d apachectl defaults
说明:相关执行脚本需要有执行权限
chmod 755 xxxx.sh
#或者
chmod +x xxxx.sh
四:通过chkconfig实现开机启动
适用于yum,rqm安装的服务,一般在centos系统下用的较为普遍
chkconfig --add FileBackup
chkconfig --add serviceName #添加一个服务到chkconfig的管理中
chkconfig --del serviceName #删除一个服务到chkconfig的管理中
chkconfig serviceName on #将一个服务添加开机自启动
chkconfig serviceName off #将一个服务取消开机自启动
chkconfig --list #查看chkconfig管理的服务
chkconfig --level 0126 servicename off #将一个服务设置为在特定的运行级别下禁用。
chkconfig --level 345 servicename on #将一个服务设置为在特定的运行级别下启用。
chkconfig --list servicename #查看一个服务在各个运行级别下的启用状态。
chkconfig --help:#显示chkconfig命令的帮助信息
五:相关说明
位于/etc/init.d/目录下的脚本可以通过service命令来执行。具体来说:
使用service命令执行/etc/init.d/目录中的脚本:
例如,执行命令service yourservice start可以启动/etc/init.d/yourservice
同样,执行命令service yourservice start或service yourservice stop会分别启动或停止/etc/init.d/yourservice脚本