Linux 重启过程-no limit

Linux 在重启过程某些任务因默认超时策略为 “no limit”,导致重启时间过长。
以下是启动示例:

[  ***  ] A start job is running for /etc/rc.local Compatibili...(20min 30s / no limit)

优化方式是定位自己环境中长时间运行的任务。修改启动配置
如上图的 “/etc/rc.local” 任务


[Unit]
Description=/etc/rc.d/rc.local Compatibility
ConditionFileIsExecutable=/etc/rc.d/rc.local
After=network.target

[Service]
Type=forking
ExecStart=/etc/rc.d/rc.local start
TimeoutSec=0     "# 单位是秒,0为不限制。添加该值,控制systemd 风格的启动程序超时时长"
RemainAfterExit=yes
SysVStartPriority=99  "#添加这个配置 控制sysv 风格的启动程序或脚本超时时长"

另外一种优化方式使用延时启动的方式,修改启动文件。

[Unit]
Description=/etc/rc.d/rc.local Compatibility
ConditionFileIsExecutable=/etc/rc.d/rc.local
After=network.target

[Service]
Type=forking
ExecStart=/etc/rc.d/rc.local start  
ExecStartPre=/bin/sleep 30  "# 设定预启动指令进行延时,规避该服务堵塞系统启动”

第三种方式,如果你足够了解systemd.service.Type服务类型,可以为长时间运行的任务选择合适的类型,进行规避

simple:
默认值,如果设置了 ExecStart= 但没有设置 Type=,则默认为此类型。
ExecStart= 指定的进程是服务的主进程。
systemd 认为在创建了该服务的主服务进程之后,该服务就已经启动完成。
适用于大多数前台或后台运行的服务。
forking:
服务进程会在启动过程中使用 fork() 系统调用。
父进程在启动成功并创建好所有通信渠道后退出,子进程作为主服务进程继续运行。
systemd 认为在父进程退出之后,该服务就已经启动完成。
适合传统的守护进程,因为这些进程在启动时会自行 fork 一个子进程到后台,然后父进程退出。
oneshot:
类似于 simple,但只会执行一次 ExecStart= 指定的进程。
不会一直监控这个进程是否正常,进程执行完成退出后,不会重新启动这个进程。
适用于一次性任务,如初始化脚本。
通常需要设置 RemainAfterExit= 选项,以指示进程退出后服务仍然保持执行状态。
dbus:
服务通过 D-Bus 启动。
类似于 simple,但会等待 D-Bus 信号后启动。
该服务只有获得了 BusName= 指定的 D-Bus 名称之后,systemd 才会认为该服务启动完成。
适用于需要通过 D-Bus 进行通信的服务。
notify:
服务启动完毕后,会发出通知信号通知 systemd。
systemd 收到通知信号后,才会认为服务启动完成。
适用于那些进程启动后需要一段时间进行初始化的服务,如数据库服务。
要求服务进程具有发送通知信号的能力。
idle:
类似于 simple,但会延迟启动 ExecStart= 指定的进程。
systemd 会等待所有其他初始化任务完成后,再执行 ExecStart= 指定的进程。
适用于那些需要在系统空闲时运行的服务,以减少启动过程中的拥堵。
每种启动类型都有其特定的使用场景和适用条件。在选择启动类型时,需要根据服务的实际需求和运行特性进行综合考虑。同时,还需要注意其他相关配置选项的设置,以确保服务的正确启动和稳定运行。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Firewall 工作于网络(网络防火墙)或主机(主机防火墙)的边缘(通信报文的进出口),对于进出本网络或主机的报...
    SRE1阅读 1,397评论 0 0
  • 一、整体过程 先通过一张图来简单了解下整个系统启动的流程,整个过程基本可以分为POST-->BIOS-->MB...
    ftd2021阅读 369评论 0 0
  • 一、目录结构 目录说明/binBinary的缩写,这个目录存放最经常使用的命令;/sbins就是Super Use...
    CJ21阅读 1,732评论 0 15
  • 1、简述linux操作系统启动流程 1.1 Centos5、Centos6系统启动过程 CentOS的启动流程总体...
    沐熙一叶_Leaf阅读 865评论 1 1
  • 大家好我是猪猪!今天给大家说一下linux启动流程,linux系统启动开机过程指的是从打开计算机电源直到LINUX...
    俗人_0342阅读 1,076评论 0 1