首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

编写linux启动脚本

Linux启动脚本基础概念

Linux启动脚本是一种自动化脚本,用于在系统启动时执行一系列命令。这些脚本通常位于 /etc/init.d//etc/rc.d/ 目录下,根据不同的Linux发行版和初始化系统(如Systemd、SysVinit等),脚本的位置和命名可能会有所不同。

启动脚本的优势

  1. 自动化:减少手动操作,提高效率。
  2. 可维护性:集中管理启动过程,便于维护和更新。
  3. 灵活性:可以根据需要添加或删除启动项。

启动脚本的类型

  1. SysVinit脚本:传统的初始化系统,脚本通常以 S 开头,表示启动顺序。
  2. Systemd服务文件:现代Linux发行版常用的初始化系统,服务文件通常位于 /etc/systemd/system/ 目录下。

应用场景

  • 服务启动:如Web服务器、数据库服务器等。
  • 系统配置:如网络配置、安全设置等。
  • 日志记录:启动过程中的日志记录。

示例:编写一个简单的SysVinit启动脚本

假设我们要编写一个启动脚本,用于启动一个名为 my_service 的服务。

代码语言:txt
复制
#!/bin/bash
# /etc/init.d/my_service

### BEGIN INIT INFO
# Provides:          my_service
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start and stop the my_service daemon
# Description:       Enable service provided by my_service.
### END INIT INFO

DAEMON=/usr/local/bin/my_service
NAME=my_service
DESC="My Service"

test -x $DAEMON || exit 0

set -e

case "$1" in
  start)
    echo -n "Starting $DESC: "
    start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON
    echo "$NAME."
    ;;
  stop)
    echo -n "Stopping $DESC: "
    start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid
    echo "$NAME."
    ;;
  restart|force-reload)
    echo -n "Restarting $DESC: "
    start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid
    sleep 1
    start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid --exec $DAEMON
    echo "$NAME."
    ;;
  *)
    N=/etc/init.d/$NAME
    echo "Usage: $N {start|stop|restart|force-reflow}" >&2
    exit 1
    ;;
esac

exit 0

解释

  1. Shebang#!/bin/bash 指定脚本解释器为Bash。
  2. INIT INFO:提供脚本的元数据,如提供的服务、依赖项、默认启动和停止级别等。
  3. DAEMON:指定要启动的服务的可执行文件路径。
  4. CASE语句:根据传入的参数(如 startstoprestart)执行相应的操作。

如何使脚本生效

  1. 赋予执行权限
  2. 赋予执行权限
  3. 添加到启动列表
  4. 添加到启动列表
  5. 启动和停止服务
  6. 启动和停止服务

参考链接

通过以上步骤,你可以编写一个基本的Linux启动脚本,并使其在系统启动时自动执行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Linux中编写Shell脚本

    Linux中编写Shell脚本 目录 Shell Shell脚本的执行 Shell脚本编写规范 Shell 中的变量 变量的算术运算 双小括号 (()) 数值运算命令的用法 let 运算命令的用法 expr...Shell脚本语言很适合用于处理纯文本型的数据,而Linux系统中几乎所有的配置文件、日志文件,以及绝大对数的启动文件都是纯文本类型的文件。...Shell脚本编写规范 Shell脚本的开发规范及习惯非常重要,虽然这些规范不是必须要遵守的,但有了好的规范和习惯,可以大大提升开发效率,并能在后期降低对脚本的维护成本。...1、一个规范的Shell脚本在第一行会指出由哪个程序(解释器)来执行脚本中的内容,这一行内容在Linux bash的编程一般为:#!/bin/bash 或 #!...命令 fi if语句对于字符串的匹配 case 条件判断语句 case条件语句相当于多分支的if/elif/ellse条件语句,但是它比这些条件语句看起来更规范更工整,常被应用于实现系统服务启动脚本等企业应用场景中

    7.2K10

    Linux如何快速编写重启动脚本避免入坑

    本人在写脚本重启动过程遇到坑,分享给大家,避免大家误入同样的坑。 需求:编写Squid重启动脚本。...每天夜间12定时重启动 重启脚本思路:1、停止服务进程,kill 可以搞定 2、启动进程,知道服务如何启动即可 问题现象(坑):执行任务并不能重启动。kill 进程后,直接停止了。...不执行后续启动服务命令 脚本: [root@test scripts]# more squid.sh #!...造成后续启动服务命令没有执行。 解决方法 方法一:更换脚本名称,将squid.sh 修改为test.sh 。...程序运行正常(能够正常启动) 主要是因为上面脚本,查找关键字"squid"时,直接将脚本自身也kill掉了。 方法二:修改脚本 #!

    82630

    编写Linux Shell脚本的最佳实践

    虽然绝大部分命令自己平时也经常使用,但是在写成脚本的时候总觉得写的很难看。而且当我在看其他人写的脚本的时候,总觉得难以阅读。...具体的来说,对于shell脚本,注释一般包括下面几个部分: shebang 脚本的参数 脚本的用途 脚本的注意事项 脚本的写作时间,作者,版权等 各个函数前的说明注释 一些较复杂的单行命令注释 参数要规范...默认情况下windows判断utf-8格式是通过在文件开头加上三个EF BB BF字节来判断的,但是在Linux中默认是无BOM的。...否则,在Linux下运行的时候就会识别到开头的三个字符,从而报一些无法识别命令的错。 当然,对于跨平台写脚本还有一个比较常见的问题就是换行符不同。windows默认是 而unix下是 。...密码要移除 不要把密码硬编码在脚本里,不要把密码硬编码在脚本里,不要把密码硬编码在脚本里。 重要的事情说三遍,尤其是当脚本托管在类似Github这类平台中时。。。

    1.1K30

    编写Linux Shell脚本的最佳实践

    虽然绝大部分命令自己平时也经常使用,但是在写成脚本的时候总觉得写的很难看。而且当我在看其他人写的脚本的时候,总觉得难以阅读。...具体的来说,对于shell脚本,注释一般包括下面几个部分: shebang 脚本的参数 脚本的用途 脚本的注意事项 脚本的写作时间,作者,版权等 各个函数前的说明注释 一些较复杂的单行命令注释 参数要规范...默认情况下windows判断utf-8格式是通过在文件开头加上三个EF BB BF字节来判断的,但是在Linux中默认是无BOM的。...否则,在Linux下运行的时候就会识别到开头的三个字符,从而报一些无法识别命令的错。 权限记得加 这一点虽然很小,但是我个人却经常忘记,不加执行权限会导致无法直接执行,有点讨厌。。。...密码要移除 不要把密码硬编码在脚本里,不要把密码硬编码在脚本里,不要把密码硬编码在脚本里。 重要的事情说三遍,尤其是当脚本托管在类似Github这类平台中时。。。

    76920

    linux中编写同步文件的脚本

    搭集群最麻烦的就是修改配置文件,如果只用修改一个机器上的配置文件,然后用一个脚本就可以把配置文件同步到其他机器上,岂不快哉!...编写一个名为xsync的脚本文件: 作用: 将当前机器的文件,同步到集群所有机器的相同路径下!...hadoop102:/A/a , 执行脚本后,将此文件同步到集群中所有机器的 /A/a 用户在使用xsync时,只需要传入要同步的文件即可 xysnc a 不管a是一个相对路径还是绝对路径,都需要将...hostname$i:$dirpath done 最后别忘了把xcall文件放进家目录下的bin目录,如果没有就新建一个bin目录,因为这目录是在全局环境变量中,放进去后无论在哪个目录下都可以执行这个脚本文件

    2.3K10

    编写Linux Shell脚本的最佳实践

    虽然绝大部分命令自己平时也经常使用,但是在写成脚本的时候总觉得写的很难看。而且当我在看其他人写的脚本的时候,总觉得难以阅读。...具体的来说,对于shell脚本,注释一般包括下面几个部分: shebang 脚本的参数 脚本的用途 脚本的注意事项 脚本的写作时间,作者,版权等 各个函数前的说明注释 一些较复杂的单行命令注释 参数要规范...默认情况下windows判断utf-8格式是通过在文件开头加上三个EF BB BF字节来判断的,但是在Linux中默认是无BOM的。...否则,在Linux下运行的时候就会识别到开头的三个字符,从而报一些无法识别命令的错。 权限记得加 这一点虽然很小,但是我个人却经常忘记,不加执行权限会导致无法直接执行,有点讨厌。。。...密码要移除 不要把密码硬编码在脚本里,不要把密码硬编码在脚本里,不要把密码硬编码在脚本里。 重要的事情说三遍,尤其是当脚本托管在类似Github这类平台中时。。。

    1.1K90

    使用bash编写Linux shell脚本--复合命令

    除了最简单的脚本,你很少想要执行每一个命令。执行一组命令或者重复执行一组命令若干次比执行单个命令更加有助。复合命令是将命令封装在一组其他命令中。...命令状态码 每一个 Linux 命令都返回一个状态码(退出状态),他是一个 0~255 之间的数字,用来表示该命令遇到的问题。...非官方的 Linux 惯例使用状态码 127 并且比标准的错误代码要小。例如: ls 返回了状态码 9 ,它表示“ bad file number ”。完整的错误代码列在附录 D :“错误代码”中。...printf “$SCRIPT:$LINENO: the command $who is not available – “/ “ aborting/n “ >&2 exit 192 fi 一般,大部分 Linux...2>& fi 在 if 命令中嵌入复杂的命令会使脚本语言难读且难以调试。你应该避免这样做。在这个例子中,如果 rm 命令运行失败,则它先显示自己的提示信息,接着显示脚本中的信息。

    2.4K101
    领券