您现在的位置是:首页 > 技术人生 > 服务器相关服务器相关
centos7 添加开机启动项
高晓波2020-06-18【服务器相关】人已围观
简介之前用dq77kb+蜗牛星际+E3 1265L组装了个server,同时用PVE(Proxmox VE)做虚拟化,好是好,但是没有配UPS,夏天到了,时不时来个停电,确实蛋疼,停电重启后,一大票服务需要手动去启动,很麻烦。
之前用dq77kb+蜗牛星际+E3 1265L组装了个server,同时用PVE(Proxmox VE)做虚拟化
制作pve引导盘---U盘安装Proxmox VE(一)
1、这个自启动文件的存在仅仅是为了系统兼容性;
2、最好去创建自己的systemd services或者利用udev实现开机启动脚本;
3、此文件会在引导期间运行,所以不能保证此文件内的命令在其他服务之后运行;
4、如果真的要用此文件实现开机启动,必须给此文件赋与执行权限。
行吧?也是一种解决方案,但官方不建议使用此种方法。
先说方法:
1、编辑自己的脚本,脚本前添加注释:
2、将自己的脚本移动到/etc/rc.d/init.d目录下
3、通过chkconfig命令将脚本添加到开机启动项中
上述第一步,自己脚本中添加的注释意义:
每个被chkconfig管理的服务需要在对应的init.d下的脚本加上两行或者更多行的注释。
第一行告诉chkconfig缺省启动的运行级、启动优先级、停止优先级。如果某服务缺省不在任何运行级启动,那么使用 - 代替运行级。
第二行对服务进行描述,可以用\ 跨行注释。
运行级解释:
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动
启动、停止优先级解释:
优先级范围是0-100,数字越大,优先级越低。
PLAN C:创建自己的systemd services,也就是plan A中推荐的一中
1、在/usr/lib/systemd/system目录下创建自己的service文件,如:myShell.service,我们拿apache的httpd.service一起学习一下.service文件规范
/usr/lib/systemd/system/httpd.service
[Unit]部分主要是对这个服务的说明,内容包括Description和After,Description 用于描述服务,After用于描述服务类别
[Service]部分是服务的关键,是服务的一些具体运行参数的设置.
Type=forking是后台运行的形式,
User=users是设置服务运行的用户,
Group=users是设置服务运行的用户组,
PIDFile为存放PID的文件路径,
ExecStart为服务的具体运行命令,
ExecReload为重启命令,
ExecStop为停止命令,
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]部分的启动、重启、停止命令全部要求使用绝对路径,使用相对路径则会报错!
[Install]部分是服务安装的相关设置,可设置为多用户的
2、添加至开机启动项中
参考资料:
制作pve引导盘---U盘安装Proxmox VE(一)
PVE添加cpu温度显示---U盘安装Proxmox VE(三)
好是好,但是没有配UPS,夏天到了,时不时来个停电,确实蛋疼,真怕硬盘扛不住。
停电重启后,一大票服务需要手动去启动,很麻烦。Centos7 如何添加开机启动项呢?
PLAN A:添加启动脚本至/etc/rc.d/rc.local
先说方法:
#1、赋权
chmod +x /etc/rc.d/rc.local
#2、/etc/rc.d/rc.local文末添加你自己的脚本路径
/opt/script/yourShell.sh #注意确保此脚本要有可执行权限
vi 打开/etc/rc.d/rc.local我们发现如下注释说明:
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.
啥意思呢?1、这个自启动文件的存在仅仅是为了系统兼容性;
2、最好去创建自己的systemd services或者利用udev实现开机启动脚本;
3、此文件会在引导期间运行,所以不能保证此文件内的命令在其他服务之后运行;
4、如果真的要用此文件实现开机启动,必须给此文件赋与执行权限。
行吧?也是一种解决方案,但官方不建议使用此种方法。
PLAN B:通过chkconfig命令
先说方法:1、编辑自己的脚本,脚本前添加注释:
#!/bin/bash
# chkconfig: 2345 90 10
# description: my service
2、将自己的脚本移动到/etc/rc.d/init.d目录下
mv /opt/script/myShell.sh /etc/rc.d/init.d
3、通过chkconfig命令将脚本添加到开机启动项中
cd /etc/rc.d/init.d
chkconfig --add myShell.sh
chkconfig myShell.sh on
上述第一步,自己脚本中添加的注释意义:
每个被chkconfig管理的服务需要在对应的init.d下的脚本加上两行或者更多行的注释。
第一行告诉chkconfig缺省启动的运行级、启动优先级、停止优先级。如果某服务缺省不在任何运行级启动,那么使用 - 代替运行级。
第二行对服务进行描述,可以用\ 跨行注释。
运行级解释:
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动
启动、停止优先级解释:
优先级范围是0-100,数字越大,优先级越低。
PLAN C:创建自己的systemd services,也就是plan A中推荐的一中
1、在/usr/lib/systemd/system目录下创建自己的service文件,如:myShell.service,我们拿apache的httpd.service一起学习一下.service文件规范
/usr/lib/systemd/system/httpd.service
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
Documentation=man:httpd(8)
Documentation=man:apachectl(8)
[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/httpd
ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND
ExecReload=/usr/sbin/httpd $OPTIONS -k graceful
ExecStop=/bin/kill -WINCH ${MAINPID}
# We want systemd to give httpd some time to finish gracefully, but still want
# it to kill httpd after TimeoutStopSec if something went wrong during the
# graceful stop. Normally, Systemd sends SIGTERM signal right after the
# ExecStop, which would kill httpd. We are sending useless SIGCONT here to give
# httpd time to finish.
KillSignal=SIGCONT
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[Unit]部分主要是对这个服务的说明,内容包括Description和After,Description 用于描述服务,After用于描述服务类别
[Service]部分是服务的关键,是服务的一些具体运行参数的设置.
Type=forking是后台运行的形式,
User=users是设置服务运行的用户,
Group=users是设置服务运行的用户组,
PIDFile为存放PID的文件路径,
ExecStart为服务的具体运行命令,
ExecReload为重启命令,
ExecStop为停止命令,
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]部分的启动、重启、停止命令全部要求使用绝对路径,使用相对路径则会报错!
[Install]部分是服务安装的相关设置,可设置为多用户的
2、添加至开机启动项中
$ sudo systemctl enable myShell
参考资料:
《linux中chkconfig 启动程序顺序介绍》
《Linux下chkconfig命令详解》
《Centos7之Systemd(Service文件)详解》
很赞哦! ()
相关文章
随机图文
-
PVE添加cpu温度显示---U盘安装Proxmox VE(三)
作为放家里的小Server,对整个服务器的温度监控还是很有必要的,当初选择pve也是因为pve可diy程度比较高。 -
centos7 手动编译安装 Nginx 1.18.0
工作中经常使用到nginx,本篇记录一下手工编译安装nginx过程 -
Centos7 安装Jenkins--Jenkins使用(一)
本文介绍了centos7环境下通过yum方式安装Jenkins过程 -
创建redis集群,第二次踩坑,Sorry, can't connect to node
这已经是第二次遇到这个问题,只记得第一次花了很长时间才解决,却忘了怎么解决的,悲催! 网上找的答案都是各种复制,千篇一律。 现在记下来,防止忘记! 第一次是因为redis设置了密码,单机连接都OK,但是创建集群就报错Sorry, can't connect to node