Linux开机自启动——busybos init介绍

Linux系统启动之后,会执行/sbin/init进程,init进程会调用启动脚本/etc/init.d/rcS。这里我们看一下该文件的内容:

#!/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

可以看到里面就一个for循环,遍历每一个/etc/init.d/S??*的文件,这些文件会按顺序排列,例如:

# /etc/init.d$ ls S??*
S01syslogd  S02klogd  S02sysctl  S10udev  S11adb_server  S20urandom  S30dbus  S40bluetooth  S40network  S50sshd  S80dnsmasq  S80swupdate

可以看到S后面的两位数决定了文件的顺序。rcS文件会依次启动每一个文件,以此达到开机自启动的效果。

自己添加一个新的自启动项

我们需要创建类似S??*文件名的文件,例如S50lvgl,然后里面的内容要如下所示:

  1 #!/bin/sh
  2 #
  3 # Start lvgl....
  4 #
  5 
  6 
  7 export $(dbus-launch)
  8 
  9 start() {
 10         printf "Starting 100ask lvgl: "
 11         echo -e "\033[9;0]"  >  /dev/tty0   # 此行请自己手敲,直接复制可能会出错
 12         echo -e "\033[?25l"  > /dev/tty1    # 此行请自己手敲,直接复制可能会出错,其中 25l 是 L 的小写
 13         export $(dbus-launch)
 14         cd /usr/share/100ask_desktop/
 15         ./100ask_lvgl_Main &
 16         [ $? = 0 ] && echo "OK" || echo "FAIL"
 17 }
 18 
 19 stop() {
 20         printf "Stopping lvgl: "
 21 }
 22 
 23 case "$1" in
 24     start)
 25         start
 26         ;;
 27     stop)
 28         stop
 29         ;;
 30     restart|reload)
 31         stop
 32         start
 33         ;;
 34   *)
 35         echo "Usage: $0 {start|stop|restart}"
 36         exit 1
 37 esac
 38 
 39 exit $?

一定要有startstop两个函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值