• Linux 系统如何设置开机程序自启动


    1. Linux 系统如何设置开机程序自启动

    核心提示: 系统的服务在开机时一般都可以自动启动, 那在 Linux 系统下如果想要程序在开机时自动启动怎么办? 我们知道在 Windows 系统"开始"–>“所有程序”–>"启动"里面放个快捷方式就行, 那 Linux 系统下呢?

    这也是一个比较简单的问题, 有不少的方法可以解决, 这里介绍三种方法。因为是简单介绍, 所以具体细节不是很详细, 可以通过 man 看看相关手册。

    1.1. /etc/rc.local

    这是一个最简单的方法, 编辑 “/etc/rc.local”, 把启动程序的 shell 命令输入进去即可(要输入命令的全路径), 类似于 Windows 下的"启动"。

    使用命令:

    vi  /etc/rc.local   
    
    • 1

    然后在文件最后一行添加要执行程序的全路径。

    例如, 每次开机时要执行一个 haha.sh, 这个脚本放在 /opt 下面, 那就可以在 “/etc/rc.local” 中加一行 “/opt/./haha.sh”, 或者两行 “cd /opt” 和 “./haha.sh”。

    1.2. crontab(类似于 Windows 的任务计划服务)

    通过 crontab 可以设定程序的执行时间表, 例如让程序在每天的 8 点, 或者每个星期一的 10 点执行一次。

    crontab -l 列出时间表; 
    crontab -e 编辑时间表; 
    crontab -d 删除时间表; 
    
    • 1
    • 2
    • 3
    • “-l” 没什么可说的, 就是一个查看而已;
    • “-e” 是编辑, 和 vi 没什么差别(其实就是用 vi 编辑一个特定文件);
    • “-d” 基本不用, 因为它把该用户所有的时间表都删除了, 一般都是用 “-e” 编辑把不要了的时间表逐行删除;

    那到底该如何编辑呢?

    crontab 文件的格式是: M H D m d CMD
    一个 6 个字段, 其中最后一个 CMD 就是所要执行的程序, 如 haha.sh

    • M: 分钟(0-59)
    • H: 小时(0-23)
    • D: 日期(1-31)
    • m: 月份(1-12)
    • d: 一个星期中的某天(0-6, 0 代表周日)

    这 5 个时间字段用空格隔开, 其值可以是一个数字, 也可以用逗号隔开的多个数字(或其他) , 如果不需设置, 则默认为 “*”。

    例如, 每天的 8 点 5 分执行 haha.sh, 就是 “5 8 * * * /opt/./haha.sh”。

    好像和 “开机程序自动启动” 扯远了, 现在回归正题。其实上面介绍的 crontab 的功能已经具备了开机自动启动的能力, 可以写一个监测脚本, 每 5 分钟执行一次(*/5 * * * * ./haha.sh), 如果程序不在了就重新启动一次。

    1.3. 注册系统服务

    操作系统自带的服务, 如 ssh, ftp 等等, 开机都是自动启动的, 我们也可以通过这种方式让自己开发的程序提高"身价"。

    比如我想把某个已经安装了的服务添加为系统服务, 可以执行以下命令:

    chkconfig --add 服务名称          (首先, 添加为系统服务, 注意 add 前面有两个横杠)
    chkconfig -leve 启动级别 服务名 on         
    
    • 1
    • 2

    (说明, 3 级别代表在命令行模式启动, 5 级别代表在图形界面启动, on 表示开启)

    chkconfig -leve 启动级别 服务名 off

    (说明, off 表示关闭自启动)

    例如: chkconfig -level 3 mysql on (说明: 让 mysql 服务在命令行模式, 随系统启动)

    也可以使用 chkconfig --add 服务名称 来删除系统服务


    如果要查看哪些服务被添加为系统服务可以使用命令 :

    ntsysv  或者 chkconfig --list
    
    • 1

    如果要查看哪些程序被添加为自启动, 可以使用命令 :

    cat   /etc/rc.local    (查看这个文件中添加了哪些程序路径)
    
    • 1

    下面举例说说, 如何把一个 shell 脚本添加为系统服务, 并跟随系统启动:

    可以看到 “/etc/rc.d/init.d” 下有很多的文件, 每个文件都是可以看到内容的, 其实都是一些 shell 脚本。
    系统服务的启动就是通过 “/etc/rc.d/init.d” 中的脚本文件实现的。我们也可以写一个自己的脚本放在这里。
    脚本文件的内容也很简单, 类似于这个样子(例如起个名字叫做 “hahad”):

    . /etc/init.d/functions
    start() {
            echo "Starting my process "
            cd /opt
            ./haha.sh
    }
    stop() {
            killall haha.sh
            echo "Stoped"
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    写了脚本文件之后事情还没有完, 继续完成以下几个步骤:

    chmod +x hahad         #增加执行权限
    chkconfig --add hahad  #把 hahad 添加到系统服务列表
    chkconfig hahad on     #设定 hahad 的开关(on/off)
    chkconfig --list hahad #就可以看到已经注册了 hahad 的服务
    
    • 1
    • 2
    • 3
    • 4

    这时候才完成了全部工作。

  • 相关阅读:
    基于C#+MySQL的停车场管理系统设计与实现
    泰勒公式理解
    数组的使用
    Win11关闭【显示更多选项】|【show more options】
    浅谈架构.补缺.V2
    双位置继电器DLS-42/6-4/DC110V
    Java 8 之 Optional
    自动化测试在 Kubernetes Operator 开发中的应用:以 OpenTelemetry 为例
    人类高质量代码—Golang标准库net/rpc
    发起网络请求的方式
  • 原文地址:https://blog.csdn.net/wan212000/article/details/128006514