札记

  博客园  :: 首页  :: 新随笔  ::  :: 订阅 订阅  :: 管理

一:创建脚本

服务脚本要包括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脚本

posted on 2024-04-12 11:36  小泥巴2008  阅读(373)  评论(0编辑  收藏  举报