Linux系统下简单设置脚本开机启动
分类:内容分享技术相关 阅读量: 339 次

Linux系统下简单设置脚本开机启动

分类:内容分享技术相关 阅读量: 339 次

简明扼要,了解Linux系统的人应该都知道Linux系统的6个运行级别

20190615093510.jpg


下面简单的说一下如何在Centos 7系统下用chkconfig实现开机自动启动脚本的功能。

脚本示例

先在路径"/etc/init.d/"下创建一个脚本Test,内容如下

#!/bin/bash
# chkconfig: 2345 90 10
# description: Some description

do_start(){
    echo "star script."
}

do_stop(){
    echo "stop script."
}

do_restart(){
    do_stop
    do_start
}

case "$1" in
  start|stop|restart)
    do_$1
    ;;
    *)
    echo "Usage: $0 { start | stop | restart }"
    exit 1
    ;;
esac

脚本解释

解释下脚本,第一行没什么说的。
第二行表示此脚本在2345运行级别运行,开机start优先级为90(貌似范围1—100之间),关机stop优先级为10。优先级就是执行顺序,越小越优先执行。此行须加#注释且不可省略该行。
第三行是描述,给人看的,此行须加#注释且不可省略该行。
最下面是一个case语句,$1代表传进去的参数传进去的是start或者stop或者restart,然后他就执行do_start或者do_stop或者do_restart,比如 ./Test start 这样就传进去参数start。,也就执行了do_start

do_start(){
    echo "star script."
}

输出star script.

传入其他的,就直接输出Usage: /etc/init.d/Test { start | stop | restart },$0 代表当前脚本名与路径(如果你是在/etc/init.d/目录下通过./Test 这样执行的,那么$0就是./Test,如果是通过绝对路径/etc/init.d/Test,那么$0就是/etc/init.d/Test)。

20190615102215.jpg

chkconfig

使用chkconfig命令:

chmod +x Test  赋予执行权限
chkconfig --add Test  添加进去系统服务
chkconfig Test on  开启这个系统服务

这样就行了,Test脚本在开机时就会被系统执行并传入start参数,关机也会执行并传入stop参数。

那这个restart有什么用呢?这个并不是给系统重启的时候用的(!汗)。

当我们执行了上面的命令后,Test这个脚本已经添加到系统服务里面了。可以使用service命令来操作了。
比如service Test start,service Test stop,service Test restart,来快捷操作。

还有更快捷的,执行ln -s /etc/init.d/Test /usr/bin

这样就可以更快捷的执行脚本直接"Test start"就可以执行了。

当你不需要开机自动启动这个脚本的时候执行chkconfig --del Test就可以删除了。

原理介绍

你会在目录/etc下看到几个目录"rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d"
这就是Linux系统的几个状态

20190615110804.jpg

我们上面设置的Test脚本是2345级别90优先级启动,10优先级关闭,所以在"rc2.d rc3.d rc4.d rc5.d"这几个目录都有S90Test这个文件,而其他的"rc0.d rc1.d rc6.d"这几个目录会有K10Test这个文件,这些文件的内容都一样是我们创建的那个Test文件的内容,因为这些文件都是/etc/init.d/Test这个文件的链接文件,也就是说修改/etc/init.d/Test这个文件,这些全部也都会变。

每当系统到一个新的运行级别,他就会查看级别相对应的目录下的文件,并根据文件名来判断执行的优先级和传入的参数,K代表kill,会传入stop。S代表start,传入start参数。

所以chkconfig这个命令其实就是通过创建链接来实现开机启动脚本。

注:当切换运行级别的时候,比如2级到3或4或5级,并不会再执行一次Test start,切换到1或0或6级时才会执行Test stop。也就是说不会重新启动已经启动的服务,也不会再次去停止已经停止的服务。

评论
  1. sagiri

    现在大多数的发行版都使用system初始化进程了

    回复