Linux(CentOS7)配置系统服务以及开机自启动

目录

前言

两种方式

/etc/systemd/system/ 

进入 /etc/systemd/system/ 文件夹

创建 nginx.service 文件

重新加载 systemd 配置文件

​编辑 配置开机自启

/etc/init.d/

进入 /etc/init.d/ 文件夹

创建 mysql 文件

编写脚本内容

添加/删除系统服务

配置开机自启

查看 chkconfig 下的开机自启动服务

​编辑总结

文件模板

脚本模板


前言

在服务器上安装各种软件,比如 nginx,mysql,redis 等等,如果没有配置环境变量,每次启动都需要进入到对应的安装目录下执行命令来启动。即使配置了环境变量,在启动时可能也需要指定某些启动参数,需要额外得输入,相对麻烦。

针对以上的问题,可以将制作成系统服务,通过 service 命令 或者 systemctl 命令来启动

service 服务名称 start

systemctl start 服务名称

两种方式

  1. /etc/systemd/system/ 
  2. /etc/init.d/

第一种即是在 /etc/systemd/system/ 文件夹下创建服务文件

第二种即是在 /etc/init.d/ 文件夹下创建服务文件

详情如下

/etc/systemd/system/ 

以创建 nginx 系统服务为例子

进入 /etc/systemd/system/ 文件夹

cd /etc/systemd/system/

创建 nginx.service 文件

vim nginx.service

写入以下内容

注意:路径需要替换成自己的安装路径

[Unit]
Description=Nginx HTTP Server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload -c /usr/local/nginx/conf/nginx.conf
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target

重新加载 systemd 配置文件

systemctl daemon-reload

重新加载后,就能通过 service 或者 systemctl 来启动服务了

#启动服务
systemctl start nginx
#停止服务
systemctl stop nginx
#重启服务
systemctl restart nginx
#查看服务状态
systemctl status nginx

 配置开机自启

#开启开机自启动
systemctl enable nginx
#关闭开机自启动
systemctl disable nginx

/etc/init.d/

以创建 mysql 系统服务为例子

进入 /etc/init.d/ 文件夹

cd /etc/init.d/

创建 mysql 文件

vim mysql

编写脚本内容

脚本可以自己写,在此例中用的mysql,mysql 有提供一个启动脚本,直接复制即可

官方下载 mysql 包下,安装目录下的 support-files 下有一个 mysql.server 脚本

复制 mysql.server 内容到 /etc/init.d/mysql 

cp -a /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

授权

chmod +x /etc/init.d/mysql

添加/删除系统服务

#添加系统服务
chkconfig --add mysql
#删除系统服务
chkconfig --del mysql

添加服务后,就能通过 service 或者 systemctl 名来来启动服务了 

配置开机自启

#开启开机自启动
chkconfig mysql on
#关闭开机自启动
chkconfig mysql off

查看 chkconfig 下的开机自启动服务

chkconfig --list

总结

两种方式都可以配置服务

第一种配置方式相对简单,只需在 /etc/systemd/system/ 文件夹下创建文件,复制模板后修改下命令,写入文件后重新加载下就行了

文件模板

[Unit]
Description=服务名称
After=network.target

[Service]
Type=forking
ExecStart=启动命令
ExecReload=重启命令
ExecStop=停止命令
PrivateTmp=true

[Install]
WantedBy=multi-user.target

第二种配置方式大同小异,在 /etc/init.d/ 文件夹下创建脚本,需要自己写启动脚本,更加地灵活,如果启动服务需要用到动态的启动参数,那么就可以用第二种方式来配置

脚本模板

#!/bin/bash

case $1 in
        start)
            #启动命令
            echo "service is started"
            ;;
        stop)
            #关闭命令
            echo "service is stop"
            ;;
        restart)
            #重启命令
            echo "service is started"
            ;;
        *)
            echo "start|stop|restart"
            ;;  
esac
exit 0

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-01 10:38:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-01 10:38:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-01 10:38:02       82 阅读
  4. Python语言-面向对象

    2024-04-01 10:38:02       91 阅读

热门阅读

  1. Meme币如何赋能Web3社交?

    2024-04-01 10:38:02       38 阅读
  2. 价值投资已死,MEME币永生?

    2024-04-01 10:38:02       38 阅读
  3. 证券市场概述

    2024-04-01 10:38:02       36 阅读
  4. ctf题目

    ctf题目

    2024-04-01 10:38:02      37 阅读
  5. TS全栈开发(React+Next.js+Nest.js+UniApp/Vue)项目

    2024-04-01 10:38:02       33 阅读
  6. 【Linux的进程篇章 - 冯诺依曼的体系结构】

    2024-04-01 10:38:02       51 阅读