Linux系统设置开机自动运行脚本的方法实例

一、Linux开机自动运行脚本的方法

在Linux系统中,我们可以通过编写脚本,实现系统开机自动运行一些指定的程序、服务等。以下是实现Linux开机自动运行脚本的方法:

  1. 将脚本文件复制到/etc/init.d/目录下,并加上可执行权限。
    例如,假设我们有一个脚本文件 test.sh,那么我们可以通过以下命令将其复制到 init.d 目录下:

    sudo cp test.sh /etc/init.d/

接着,我们需要添加可执行权限:

sudo chmod +x /etc/init.d/test.sh

在脚本文件中,我们需要添加以下内容,这个内容是标准的初始化脚本支持:

#!/bin/sh
# chkconfig: 2345 20 80
# description: <description>

其中,chkconfig 行指定了需要在哪些运行级别下启动脚本,20 表示在启动顺序中的序号,80 表示在关闭顺序中的序号。

  1. 使用 chkconfig 命令设置开机自动运行
    chkconfig 命令是一个用于管理服务的工具,它可以帮助我们管理哪些服务随系统启动而启动。
    以下是 chkconfig 命令的基本用法:

    sudo chkconfig --add test.sh # 添加脚本
    sudo chkconfig test.sh on # 设置脚本开机自启动
    sudo chkconfig test.sh off # 取消脚本开机自启动

以上命令中,“test.sh”是代替具体脚本文件名的占位符。

二、示例

假设我们要将一个 node.js 的程序作为一个服务在Linux系统开机后自动运行。以下是实现的步骤:

  1. 编写启动脚本
    在 /etc/init.d 目录下创建一个文件,例如 node_app,文件内容如下:

    !/bin/bash

    chkconfig: 2345 90 10

    description: node.js app

    APP_NAME='/path/to/app.js'
    PID_FILE='/var/run/node_app.pid'

    case "$1" in
    start)
    echo -n "Starting node.js app: "

        cd `dirname $APP_NAME`
        nohup node $APP_NAME >/dev/null 2>&1 &
        echo $! > $PID_FILE
    
        echo "OK"
        ;;
    stop)
        echo -n "Stopping node.js app: "
    
        if [ ! -f $PID_FILE ]; then
            echo "app not running"
            exit 0
        fi
    
        kill `cat $PID_FILE`
        while ps -p `cat $PID_FILE` > /dev/null 2>&1; do sleep 1; done
    
        rm -f $PID_FILE
    
        echo "OK"
        ;;
    *)
        echo "Usage: $0 {start|stop}"
        exit 1
        ;;
    

    esac

    exit 0

上述脚本内容比较通用,修改 APP_NAME 值为你的 node.js 程序路径即可。

  1. 添加可执行权限

    sudo chmod +x /etc/init.d/node_app

  2. 设置开机自动运行

    sudo chkconfig --add node_app
    sudo chkconfig node_app on

如果需要修改脚本内容,可以再运行一次 chmod 命令来更新脚本。如果需要关闭服务的开机自启动,可以运行以下命令:

sudo chkconfig node_app off

另外,如果要确定服务是否在运行,可以运行以下命令:

sudo service node_app status

上述方法同样适用于 Ubuntu 和 CentOS 等其它 Linux 发行版。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Linux系统设置开机自动运行脚本的方法实例 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • 浅谈mysql的timestamp存在的时区问题

    浅谈MySQL的timestamp存在的时区问题 什么是timestamp timestamp是MySQL中一种日期时间类型。它可以自动存储记录的插入时间和更新时间,通常用于记录数据的时间戳信息。 timestamp的时区问题 在MySQL中,timestamp类型是存储为时间戳的整数,它表示从1970年1月1日以来的秒数。但是,timestamp类型存在时…

    database 2023年5月22日
    00
  • vscode内网访问服务器的方法

    下面是详细的“vscode内网访问服务器的方法”的攻略。 什么是vscode内网访问服务器? 通常情况下,我们的电脑和服务器一般都处于同一个局域网,如果我们直接在vscode上连接服务器,即使服务器开了对外映射的端口,也无法直接连接,这就是内网访问。 解决方法 要解决这个问题,我们可以通过在本地电脑与服务器之间建立一个SSH隧道,来实现内网访问。下面我们将具…

    database 2023年5月22日
    00
  • mac下重置mysl8.0.11密码的方法

    下面是针对Mac下重置MySQL 8.0.11密码的方法完整攻略。步骤如下: 1. 停止MySQL服务 在终端中输入以下命令,停止MySQL服务。 sudo /usr/local/mysql/support-files/mysql.server stop 2. 以安全模式启动MySQL服务 在终端中输入以下命令,以安全模式启动MySQL服务。 sudo /u…

    database 2023年5月22日
    00
  • Navicat Premium 15 工具自动被杀毒防护软件删除的两种解决方法

    下面详细讲解“Navicat Premium 15 工具自动被杀毒防护软件删除的两种解决方法”。 问题描述 最近有用户反映,使用 Navicat Premium 15 工具时被杀毒防护软件自动删除了该工具。这可能影响用户的正常使用,因此我们需要解决该问题。 解决方法 方法一:添加信任项 一些杀毒防护软件会将一些软件当作病毒或威胁,因此将其删除。这时我们可以添…

    database 2023年5月18日
    00
  • SpringBoot事务不回滚的解决方案

    针对SpringBoot事务不回滚的问题,我们可以通过以下几个步骤来进行解决: 1.确认事务正常工作 首先,我们需要确认事务的确不会自动回滚。可以在事务中对一个数据库表进行操作,然后将该操作后面的代码注释掉,确保事务提交的同时没有任何异常抛出,这样可以验证事务框架是否生效。 2.添加事务管理器 如果事务确实没有通过Spring事务管理器自动回滚,那么需要手动…

    database 2023年5月21日
    00
  • MySQL mysqldump命令使用详解

    MySQL mysqldump命令使用详解 简介 MySQL mysqldump是MySQL关系型数据库管理系统中最常用的备份工具之一。使用mysqldump可以将MySQL数据库转储为SQL语句,从而将数据备份。mysqldump可以在单个数据库或整个数据库服务器上运行。 命令格式 $ mysqldump [OPTIONS] database [table…

    database 2023年5月22日
    00
  • MySQL千万级数据的大表优化解决方案

    让我来介绍一下“MySQL千万级数据的大表优化解决方案”。 1. 背景 当我们的MySQL表中数据量达到千万级别时,表的查询、修改等操作会变得十分缓慢。这时就需要对表进行优化,以提高数据库性能。 2. 解决方案 以下是对MySQL大表进行优化的几种方案: 2.1 分区 将一张大表按照一定的规则分成多张小表,可以使查询效率大大提高。MySQL提供了分区功能,可…

    database 2023年5月19日
    00
  • MySQL执行状态的查看与分析

    下面是关于“MySQL执行状态的查看与分析”的完整攻略。 概述 在MySQL数据库中,为了统计查询中语句的执行效率,可以通过查看和分析SQL执行状态来获取相应的信息。MySQL执行状态是一个可视化的记录工具,可以进行针对SQL语句的实时监控和查看。 MySQL执行状态的查看 查看MySQL执行状态可以使用命令:SHOW STATUS,该命令会列出MySQL服…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部