【buildroot】初始化脚本后台运行, 解决启动时间过长

文章讲述了如何优化Linux系统的初始化流程,特别是针对启动时间过长的问题。通过修改/etc/init.d/rcS文件,添加循环条件检查脚本是否带有-bg后缀。如果带有该后缀,脚本将在后台运行,从而加快登陆速度并提高用户体验。这一改动使得系统能够更高效地初始化组件,特别是对于那些执行时间较长的服务。

在使用buildroot勾选组件时, 在生成文件系统时会增加组件的初始化脚本.

由于初始化脚本是在登陆前运行的, 某些初始化脚本过慢导致登陆时间过长, 影响体验

初始化运行流程

#!/bin/sh
# Start all init scripts in /etc/init.d
# executing them in numerical order.
#
for i in /etc/init.d/S??* ;do

     # Ignore dangling symlinks (if any).
     [ ! -f "$i" ] && continue

     case "$i" in
	*.sh)
	    # Source shell script for speed.
	    (
		trap - INT QUIT TSTP
		set start
		. $i
	    )
	    ;;
	*)
	    # No sh extension, so fork subprocess.
	    $i start
	    ;;
    esac
done
Created with Raphaël 2.2.0 /etc/init.d/rcS 循环查找/etc/inid.d/的文件 前台运行

添加循环条件, 指定后台运行

  • /etc/init.d/中, 在想要后台运行的脚本文件名后添加-bg后缀, 例如S50sshd-bg
  • 修改/etc/init.d/rcS文件, 添加条件, 当有-bg后缀则转入后台运行
for i in /etc/init.d/S??* ;do

     # Ignore dangling symlinks (if any).
     [ ! -f "$i" ] && continue


#!/bin/sh
# Start all init scripts in /etc/init.d
# executing them in numerical order.
#
for i in /etc/init.d/S??* ;do

     # Ignore dangling symlinks (if any).
     [ ! -f "$i" ] && continue

     case "$i" in
# 新增代码段-------------------开始
    *-bg)
        (
            echo $i "run it background"
            trap - INT QUIT TSTP
            . $i start &
        )
        ;;
# 新增代码段-------------------终止
	*.sh)
	    # Source shell script for speed.
	    (
		trap - INT QUIT TSTP
		set start
		. $i
	    )
	    ;;
	*)
	    # No sh extension, so fork subprocess.
	    $i start
	    ;;
    esac
done

修改后的流程如下

Created with Raphaël 2.2.0 /etc/init.d/rcS 循环查找/etc/inid.d/的文件 -bg后缀 后台执行 前台执行 yes no
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值