首页 > 系统相关 >Linux开机启动方案

Linux开机启动方案

时间:2023-09-04 10:23:29浏览次数:38  
标签:启动 Linux etc systemctl usr rc 开机 local

Linux系统-部署-运维系列导航

一.系统服务

如果组件已经安装为系统服务,默认服务文件为 xxx.service,存储在 /usr/lib/systemd/system 可以使用以下2种方式设置开机启动 systemctl方式
systemctl enable/disable xxx 指令设置/取消开机启动

--查看是否开机启动
[root@localhost system]# systemctl status chronyd.service
● chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2022-07-28 18:33:39 CST; 4 months 4 days ago
     Docs: man:chronyd(8)
           man:chrony.conf(5)
 Main PID: 790 (chronyd)
   Memory: 1.0M
   CGroup: /system.slice/chronyd.service
           └─790 /usr/sbin/chronyd

systemctl list-unit-files
# 查看服务的自启动状态以list-unit-files为准
# 但是系统服务太多,我想分类查看该如何做?
# 查看系统中已经enable的服务
systemctl list-unit-files --state=enabled
或 systemctl is-enabled
# 查看系统中已经disable的服务
systemctl list-unit-files --state=disabled
或 systemctl is-enabled

# --state还可以与list-units结合使用,具体可使用以下命令查询用法
systemctl --state=help
  chkconfig方式(较复杂)
chkconfig --add xxx && chkconfig --level 3 xxx on/off,本方式要求服务脚本文件必须在 /etc/init.d/ 目录下,且结合 /etc/rc.d/rc0.d~rc6.d目录实现,同时服务脚本文件必须包含必要的头部脚本代码,较复杂

--查看是否开机启动
chkconfig --list network
注:该输出结果只显示 SysV 服务,并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。 

要列出 systemd 服务,请执行 'systemctl list-unit-files'
查看在具体 target 启用的服务请执行 'systemctl list-dependencies [target]'

network         0:关    1:关    2:开    3:开    4:开    5:开    6:关
  特别关注:systemctl方式实际效果 该方式实际是在 /etc/systemd/system/xxx/ 或 /etc/systemd/user/下创建 .service文件 的软连接,分别代表系统服务与用户服务。 其中,xxx为该服务的适用模式,如网络服务network-online.target.wants、多用户服务multi-user.target.wants。
[root@localhost ~]# systemctl enable mysqld
Created symlink from /etc/systemd/system/multi-user.target.wants/mysqld.service to /usr/lib/systemd/system/mysqld.service.
该方式下,取消卡机启动,可以执行以下操作之一
  • systemctl disable xxx
  • 移除 /etc/systemd/system/xxx/ 或 /etc/systemd/user/ 下相应软连接或服务文件
 

二.通用方案

不管组件是否已经安装为系统服务,可以通过开机启动脚本实现 注意,以下操作,均需要设置相关脚本的可执行权限,即 chmod +x 启动脚本
  • 方法一:追加启动命令到默认启动脚本 /etc/rc.local,或/etc/rc.d/rc.local,前者是后者的软连接
  • 方法二:编写启动脚本.sh,放到目录 /etc/profile.d下
  • 方法三:编写启动脚本.sh,将脚本的执行指令追加到 /etc/rc.local,或/etc/rc.d/rc.local
 

三.crontab方案

crontab支持特殊关键字实现特定任务调度,代替 5个时间设置标识符(分 时 日 月 周),特殊语法以 @ 符号作为前缀 具体请参考:官方文档 语法:@xxx command
@reboot    :    Run once after reboot.      重启时执行一次,实测比 /etc/rc.d/rc.local 更早执行(提前1-2s),比默认1分钟定时提前30s左右
@yearly    :    Run once a year, ie.  "0 0 1 1 *".  一年执行一次,1月1号0点0分执行
@annually  :    Run once a year, ie.  "0 0 1 1 *". 一年执行一次,1月1号0点0分执行
@monthly   :    Run once a month, ie. "0 0 1 * *". 一月执行一次,每月1号0点0分执行
@weekly    :    Run once a week, ie.  "0 0 * * 0". 一周执行一次
@daily     :    Run once a day, ie.   "0 0 * * *".  一天执行一次
@hourly    :    Run once an hour, ie. "0 * * * *".  一小时执行一次
即,可以使用 @reboot 关键字实现开机启动功能,示例如下
[root@localhost daemonProcess]# crontab -e

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * command to be executed

#开机启动
@reboot /usr/local/daemonProcess/somescript.sh

#守护
* * * * * /usr/local/daemonProcess/somescript.sh
特别关注: 是否同时使用 @reboot 和 定时,需要根据实际业务需要来决定。 如果守护定时设置为1分钟,即 * * * * *,则建议不再设置 @reboot,因为两者在开机启动后的1分钟内,都会执行,可能会造成重复执行,如果所守护的应用服务兼容重复启动,没有问题,如果不兼容,建议使用一种方案。 如果守护定时间隔比较大,还是建议同时使用 @reboot,保证应用服务及时启动。  

四.生产环境开机启动方案建议

以上3种方案,建议在生产环境只采用一种,所有组件、服务统一,便于服务较多时快速运维。 比如,有些服务默认安装时不会自动生成 系统服务,所以方案一的方式不能适用生产环境中所有组件、服务,如果此时按照各组件、服务分别制定开机启动方案,则在后续如果服务启动异常 或 服务发版时,就需要明确识别各服务的开机启动方案,然后做相应的操作,提高运维成本,增加出错概率。  

附录:开机启动脚本示例

1.追加启动命令到 /etc/rc.local,或/etc/rc.d/rc.local,前者是后者的软连接
2.编写启动脚本.sh,放到目录 /etc/profile.d下

---
chmod +x /etc/rc.d/rc.local         
         
#开机启动脚本
/usr/local/AutoStartOnBoot.sh

chmod +x /usr/local/AutoStartOnBoot.sh

#本脚本需要依赖 /etc/rc.d/rc.local
#rc.local在加载环境变量之前执行,所以此处需要人工加载
source /etc/profile

#redis
/usr/local/redis/redis-5.0.13/bin/redis-server /usr/local/redis/redis-5.0.13/conf/redis.conf 

#zk
#zk pid文件必须先删除后重启
rm -f /data/zookeeper/data/zookeeper_server.pid;
/usr/local/apache-zookeeper-3.6.3-bin/bin/zkServer.sh start

#kafka
JMX_PORT=9999 /usr/local/kafka_2.13-2.7.1/bin/kafka-server-start.sh -daemon /usr/local/kafka_2.13-2.7.1/config/server.properties

#kafka-manager
#kafka-manager pid文件必须先删除后重启
rm -f /usr/local/kafka-manager-2.0.0.2/RUNNING_PID
nohup /usr/local/kafka-manager-2.0.0.2/bin/kafka-manager -Dconfig.file=/usr/local/kafka-manager-2.0.0.2/conf/application.conf -Dhttp.port=9002 >/dev/null 2>&1 &

#mysql
service mysqld start

 

 

标签:启动,Linux,etc,systemctl,usr,rc,开机,local
From: https://www.cnblogs.com/xiaoyaozhe/p/17671260.html

相关文章

  • Linux系统screen命令的用法
    1、https://www.cnblogs.com/watson04/p/16950232.html多窗口screen,像许多的窗口管理器一样,能支持多窗口。这个功能在处理多个任务且同时没有打开新的会话时很有用。作为一个系统管理员,我常常要同时开四五个SSH会话。在每个shell下,我可能要处理两三个任务。不使用screen的话,......
  • Tenable Nessus 10.6.0 (Unix, Linux, Windows) - #1 漏洞评估解决方案
    TenableNessus10.6.0(Unix,Linux,Windows)-#1漏洞评估解决方案发布Nessus试用版自动化安装程序,支持macOSVentura、RHEL9和Ubuntu22.04请访问原文链接:https://sysin.org/blog/nessus-10/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgNessus漏洞评......
  • Linux基本命令(2)
    ls-列出当前目录下的文件和文件夹示例:ls-l显示详细的文件列表注释:ls命令用于列出当前目录下的文件和文件夹。使用-l选项可以显示更详细的信息。cd-切换目录示例:cd/path/to/directory切换到指定路径的目录注释:cd命令用于切换当前工作目录到指定的路径。pwd-显示当......
  • 轻松浏览Linux文件系统:ls命令的实用指南
    当谈到Linux命令行操作时,ls是一个非常基础但又非常重要的命令。它用于列出文件和目录,帮助您浏览和了解当前工作目录的内容。在这篇博客文章中,我们将介绍ls命令的基本用法和一些常见的使用示例。什么是ls命令?ls是"list"的缩写,是Linux和Unix操作系统中的一个命令行工具,用于列出文件和......
  • QQ for Linux 正式发布 3.2.0
    QQforLinux正式发布3.2.0来源:OSCHINA编辑: 局2023-09-0215:57:28 8Linux版QQ正式发布了3.2.0。QQLinux版3.2.0(2023.09.01)1、新增夜间模式并支持跟随系统,享受更沉浸的聊天体验;2、新增QQ截图能力,快捷方便,提升办公效率;3、新增群应用功能,图片......
  • linux查看平均cpu占用率
    如果想要获取平均占用率,可以在top命令后添加"-d"参数,指定刷新时间间隔(单位为秒),例如top-d1这样会每隔1秒更新一次CPU的占用率信息。请注意,top命令会实时显示系统状态,您可以按下键盘上的"q"来退出top命令。......
  • Linux的常用命令
    Linux常用命令名称作用和用法说明ls查看目录与文件#显示当前目录下所有文件的详尽信息:ls-lamkdir创建目录#在当前目录下创建test目录:mkdirtest#在/opt/test目录下创建目录img,若无test目录,先创建test目录:mkdir-p/opt/test/imgcat查看文件内容#查看desc.txt的内容:catdesc......
  • linux IP地址原理,分类,子网划分,VLAN,TRUNK详解
    鱼弦:全栈领域创作新星创作者、51CTO(Top红人+专家博主)、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen) LinuxIP地址原理和分类在计算机网络中,IP地址是用于唯一标识网络中的主机的一组数字,它由32位二进制数表示,通常采用点分十进制表示法。IP......
  • linux常用命令
    1、基本命令   ipaddr:查看ip   pwd:查看当前所在目录   shutdown-hnow:立即关机   reboot:重启   pingip或域名:查看网络是否ok   ctrl+c:强制结束占用窗口命令   top:查看内存情况   kill-9pid:强制杀死指定进程  ......
  • Linux常用命令
    ipaddr:查看IPshutdown-hnow:立即关机 reboot:重启Pingip或域名:查看网络是否OKctrl+c:强制结束占用窗口的命令top:查看内存情况kill-9pid:强制杀死指定进程ps-ef|grep-i进程名字:查看进程运行信息(|管道命令)clear:清屏history:查看历史命令ls:列出目录内容示例:ls-......