一、概念介绍

1.1 开机启动脚本存放目录

通常开机启动脚本都在/etc/init.d 目录,如下图:

/etc/init.d # ls -al
total 328
drwxr-xr-x    2 1023     1023          5792 Apr 12  2022 .
drwxr-xr-x   27 1023     1023          5800 Apr 12  2022 ..
-rwxr-xr-x    1 1023     1023          3340 Apr 12  2022 adbd
-rwxr-xr-x    1 1023     1023           250 Apr 12  2022 alignment.sh
-rwxr-xr-x    1 1023     1023           492 Apr 12  2022 banner.sh
-rwxr-xr-x    1 1023     1023          1997 Apr 12  2022 bootlogd
-rwxr-xr-x    1 1023     1023          1922 Apr 12  2022 bootmisc.sh
-rwxr-xr-x    1 1023     1023           189 Apr 12  2022 bsp_paths.sh
-rwxr-xr-x    1 1023     1023           681 Apr 12  2022 busybox-cron
-rwxr-xr-x    1 1023     1023          3637 Apr 12  2022 checkroot.sh
-rwxr-xr-x    1 1023     1023           203 Apr 12  2022 chgrp-diag
-rwxr-xr-x    1 1023     1023           982 Apr 12  2022 data-init
-rwxr-xr-x    1 1023     1023          2887 Apr 12  2022 dbus-1
-rwxr-xr-x    1 1023     1023           587 Apr 12  2022 devpts.sh
-rwxr-xr-x    1 1023     1023           353 Apr 12  2022 dmesg.sh
-rwxr-xr-x    1 1023     1023           933 Apr 12  2022 dnsmasq
-rwxr-xr-x    1 1023     1023          3474 Apr 12  2022 find_partitions.sh
-rwxr-xr-x    1 1023     1023          1732 Apr 12  2022 firmware-links.sh
lrwxrwxrwx    1 1023     1023            33 Apr 12  2022 functions -> /etc/init.d/functions.initscripts
-rw-r--r--    1 1023     1023          2141 Apr 12  2022 functions.initscripts
-rwxr-xr-x    1 1023     1023           510 Apr 12  2022 halt
-rwxr-xr-x    1 1023     1023           580 Apr 12  2022 hostname.sh
-rwxr-xr-x    1 1023     1023          2541 Apr 12  2022 hwclock.sh
-rwxr-xr-x    1 1023     1023           579 Apr 12  2022 inetd.busybox
-rwxr-xr-x    1 1023     1023           295 Apr 12  2022 init_irsc_util
-rwxr-xr-x    1 1023     1023           348 Apr 12  2022 keymap.sh
-rwxr-xr-x    1 1023     1023           168 Apr 12  2022 modem-shutdown
-rwxr-xr-x    1 1023     1023          1223 Apr 12  2022 modutils.sh
-rwxr-xr-x    1 1023     1023           859 Apr 12  2022 mountall.sh
-rwxr-xr-x    1 1023     1023          1522 Apr 12  2022 mountnfs.sh
-rwxr-xr-x    1 1023     1023           845 Apr 12  2022 mssboot
-rwxr-xr-x    1 1023     1023           632 Apr 12  2022 netmgrd
-rwxr-xr-x    1 1023     1023          1956 Apr 12  2022 networking
-rwxr-xr-x    1 1023     1023           390 Apr 12  2022 notifymgr
-rwxr-xr-x    1 1023     1023          1931 Apr 12  2022 odm_upgrader
-rwxr-xr-x    1 1023     1023          6470 Apr 12  2022 populate-volatile.sh
-rwxr-xr-x    1 1023     1023           724 Apr 12  2022 port_bridge
-rwxr-xr-x    1 1023     1023         23056 Apr 12  2022 power_config
-rwxr-xr-x    1 1023     1023          1036 Apr 12  2022 psmd
-rwxr-xr-x    1 1023     1023           985 Apr 12  2022 qmi_shutdown_modemd
-rwxr-xr-x    1 1023     1023          4457 Apr 12  2022 rc
-rwxr-xr-x    1 1023     1023           525 Apr 12  2022 rcS
-rwxr-xr-x    1 1023     1023           968 Apr 12  2022 read-only-rootfs-hook.sh
-rwxr-xr-x    1 1023     1023           289 Apr 12  2022 reboot
-rwxr-xr-x    1 1023     1023           160 Apr 12  2022 reset_reboot_cookie
-rwxr-xr-x    1 1023     1023           585 Apr 12  2022 rmnologin.sh
-rwxr-xr-x    1 1023     1023           324 Apr 12  2022 save-rtc.sh
-rwxr-xr-x    1 1023     1023           438 Apr 12  2022 sendsigs
-rwxr-xr-x    1 1023     1023            67 Apr 12  2022 set_core_pattern.sh
-rwxr-xr-x    1 1023     1023          1141 Apr 12  2022 sfs_config
-rwxr-xr-x    1 1023     1023          1836 Apr 12  2022 shutdown
-rwxr-xr-x    1 1023     1023           578 Apr 12  2022 single
lrwxrwxrwx    1 1023     1023             8 Apr 12  2022 stop-bootlogd -> bootlogd
-rwxr-xr-x    1 1023     1023           782 Apr 12  2022 sysfs.sh
lrwxrwxrwx    1 1023     1023            26 Apr 12  2022 syslog -> /etc/init.d/syslog.busybox
-rwxr-xr-x    1 1023     1023          1703 Apr 12  2022 syslog.busybox
-rwxr-xr-x    1 1023     1023           659 Apr 12  2022 thermal-engine
-rwxr-xr-x    1 1023     1023           939 Apr 12  2022 umountfs
-rwxr-xr-x    1 1023     1023           711 Apr 12  2022 umountnfs.sh
-rwxr-xr-x    1 1023     1023          1473 Apr 12  2022 urandom
-rwxr-xr-x    1 1023     1023          5540 Apr 12  2022 usb
-rwxrwxr-x    1 1023     1023          2426 Apr 12  2022 wlan
/etc/init.d #

1.2、开机启动脚本配置目录

启动配置目录为/etc/rcX.d, 这里的 rcX.d 是指 rc0.d~rc6.d 文件夹,这些文件夹在 Linux 系统中存放于/etc 目录下,如下图:

/etc # ls -al | grep rc
drwxr-xr-x    2 1023     1023          2088 Apr 12  2022 rc0.d
drwxr-xr-x    2 1023     1023          1656 Apr 12  2022 rc1.d
drwxr-xr-x    2 1023     1023          1728 Apr 12  2022 rc2.d
drwxr-xr-x    2 1023     1023          1728 Apr 12  2022 rc3.d
drwxr-xr-x    2 1023     1023          1656 Apr 12  2022 rc4.d
drwxr-xr-x    2 1023     1023          1952 Apr 12  2022 rc5.d
drwxr-xr-x    2 1023     1023          2024 Apr 12  2022 rc6.d
drwxr-xr-x    2 1023     1023          1584 Apr 12  2022 rcS.d

1.3、rc启动级别

rc0.d~rc6.d 名称里面的数字代表的是 Linux 系统的启动级别。 Linux 通常会以一个启动级别来运行的。Linux 系统里面,我们可以通过 runlevel 这个命令来查看当前系统的启动级别。
启动级别所代表的含义如下:

0 停机(不能使用)
1 单用户模式
2 多用户模式,但不能使用 NFS 等
3 完整的多用户模式
4 系统保留(未使用)
5 图形化界面模式
6 重启模式(不能使用)

例如,获取到的当前运行的 Linux 系统的启动级别是 5, 如果想要在这个启动级别里面实现开机自动执行特定脚本,那么需要在/etc/rc5.d 中进行配置。 我们通过 ls /etc/rc5.d 可以看到/etc/rc5.d 下有很多链接文件,如下图:

/etc/rc5.d # ls -al
total 0
drwxr-xr-x    2 1023     1023          1952 Apr 12  2022 .
drwxr-xr-x   27 1023     1023          5800 Apr 12  2022 ..
lrwxrwxrwx    1 1023     1023            20 Apr 12  2022 S01networking -> ../init.d/networking
lrwxrwxrwx    1 1023     1023            29 Apr 12  2022 S01set_core_pattern.sh -> ../init.d/set_core_pattern.sh
lrwxrwxrwx    1 1023     1023            22 Apr 12  2022 S15bsp_paths.sh -> ../init.d/bsp_paths.sh
lrwxrwxrwx    1 1023     1023            20 Apr 12  2022 S15chgrp-diag -> ../init.d/chgrp-diag
lrwxrwxrwx    1 1023     1023            20 Apr 12  2022 S20hwclock.sh -> ../init.d/hwclock.sh
lrwxrwxrwx    1 1023     1023            16 Apr 12  2022 S20syslog -> ../init.d/syslog
lrwxrwxrwx    1 1023     1023            13 Apr 12  2022 S20usb -> ../init.d/usb
lrwxrwxrwx    1 1023     1023            24 Apr 12  2022 S29init_irsc_util -> ../init.d/init_irsc_util
lrwxrwxrwx    1 1023     1023            17 Apr 12  2022 S30mssboot -> ../init.d/mssboot
lrwxrwxrwx    1 1023     1023            24 Apr 12  2022 S35start_embms_le -> ../init.d/start_embms_le
lrwxrwxrwx    1 1023     1023            17 Apr 12  2022 S45netmgrd -> ../init.d/netmgrd
lrwxrwxrwx    1 1023     1023            29 Apr 12  2022 S55reset_reboot_cookie -> ../init.d/reset_reboot_cookie
lrwxrwxrwx    1 1023     1023            20 Apr 12  2022 S80sfs_config -> ../init.d/sfs_config
lrwxrwxrwx    1 1023     1023            33 Apr 12  2022 S90start_subsystem_ramdump -> ../init.d/start_subsystem_ramdump
lrwxrwxrwx    1 1023     1023            19 Apr 12  2022 S97data-init -> ../init.d/data-init
lrwxrwxrwx    1 1023     1023            16 Apr 12  2022 S98dbus-1 -> ../init.d/dbus-1
lrwxrwxrwx    1 1023     1023            22 Apr 12  2022 S99power_config -> ../init.d/power_config
lrwxrwxrwx    1 1023     1023            22 Apr 12  2022 S99rmnologin.sh -> ../init.d/rmnologin.sh
lrwxrwxrwx    1 1023     1023            23 Apr 12  2022 S99stop-bootlogd -> ../init.d/stop-bootlogd
/etc/rc5.d #

这些链接文件指向/etc/init.d 中的 shell 脚本或者其他可执行文件,它们的命名方式基本都是以“S”或者“K”开头,其后紧跟一个数字,数字后则是链接文件的名字。“S”传入的参数是“start” ,“K”传入的参数是“stop”, 紧跟后的数字是执行优先级, 数值越小, 优先级越高。
例如: 链接文件的命名为“S99test”,那么开机执行该链接时就等同于执行“/etc/init.d/test start”, 执行优先级为 99
链接文件的命名为“K99test”,那么开机执行该链接时就等同于执行“/etc/init.d/test stop”,执行优先级为99

二、应用自启动添加

2.1、添加启动脚本

进入 /etc/init.d/目录,
添加启动脚本, 以 start_test 为例。
如果脚本里面需要调用应用执行,可按照如下图所示格式填写:

#! /bin/shset -ecase "$1" in
start)echo -n "Starting test: "start-stop-daemon -S -b -a /usr/bin/testecho "done";;stop)echo -n "Stopping test: "start-stop-daemon -K -n testecho "done";;restart)$0 stop$0 start;;*)echo "Usage test{ start | stop | restart }" >&2exit 1;;
esacexit 0

2.2、获取运行级别

在系统中执行runlevel指令:

/ # runlevel
N 5

查看当前系统的启动级别, 如果获取的运行级别为 5, 则在/etc/rc5.d 中进行配置。
进入 /etc/rc5.d/目录,执行:ln -s /etc/init.d/start_test S99start_test,如果没有启动要求的话,建议将启动优先级设置大一些, 这里设置的启动优先级为 99,如下图:

/etc/rc5.d # ln -s ../init.d/start_test S99start_test
/etc/rc5.d # ls -al
total 0
drwxr-xr-x    2 1023     1023          2024 Jan  1 01:24 .
drwxr-xr-x   27 1023     1023          5800 Apr 12  2022 ..
lrwxrwxrwx    1 1023     1023            20 Apr 12  2022 S01networking -> ../init.d/networking
lrwxrwxrwx    1 1023     1023            29 Apr 12  2022 S01set_core_pattern.sh -> ../init.d/set_core_pattern.sh
lrwxrwxrwx    1 1023     1023            22 Apr 12  2022 S15bsp_paths.sh -> ../init.d/bsp_paths.sh
lrwxrwxrwx    1 1023     1023            20 Apr 12  2022 S15chgrp-diag -> ../init.d/chgrp-diag
lrwxrwxrwx    1 1023     1023            20 Apr 12  2022 S20hwclock.sh -> ../init.d/hwclock.sh
lrwxrwxrwx    1 1023     1023            16 Apr 12  2022 S20syslog -> ../init.d/syslog
lrwxrwxrwx    1 1023     1023            13 Apr 12  2022 S20usb -> ../init.d/usb
lrwxrwxrwx    1 1023     1023            24 Apr 12  2022 S29init_irsc_util -> ../init.d/init_irsc_util
lrwxrwxrwx    1 1023     1023            17 Apr 12  2022 S30mssboot -> ../init.d/mssboot
lrwxrwxrwx    1 1023     1023            24 Apr 12  2022 S35start_embms_le -> ../init.d/start_embms_le
lrwxrwxrwx    1 1023     1023            17 Apr 12  2022 S45netmgrd -> ../init.d/netmgrd
lrwxrwxrwx    1 1023     1023            29 Apr 12  2022 S55reset_reboot_cookie -> ../init.d/reset_reboot_cookie
lrwxrwxrwx    1 1023     1023            20 Apr 12  2022 S80sfs_config -> ../init.d/sfs_config
lrwxrwxrwx    1 1023     1023            33 Apr 12  2022 S90start_subsystem_ramdump -> ../init.d/start_subsystem_ramdump
lrwxrwxrwx    1 1023     1023            19 Apr 12  2022 S97data-init -> ../init.d/data-init
lrwxrwxrwx    1 1023     1023            16 Apr 12  2022 S98dbus-1 -> ../init.d/dbus-1
lrwxrwxrwx    1 1023     1023            22 Apr 12  2022 S99power_config -> ../init.d/power_config
lrwxrwxrwx    1 1023     1023            22 Apr 12  2022 S99rmnologin.sh -> ../init.d/rmnologin.sh
lrwxrwxrwx    1 root     root            20 Jan  1 01:24 S99start_test -> ../init.d/start_test
lrwxrwxrwx    1 1023     1023            23 Apr 12  2022 S99stop-bootlogd -> ../init.d/stop-bootlogd

2.3、开机自启动验证

重启单板,进入文件系统执行 ps | grep “test”
如果看到 test 进程,说明 test 已经启动成功。

Linux添加开机自启动应用相关推荐

  1. linux开发板开机自启动脚本,linux 添加开机自启动脚本

    Linux设置服务开机自动启动的方式有好多种,这里介绍一下通过chkconfig命令添加脚本为开机自动启动的方法. 1. 编写脚本autostart.sh(这里以开机启动redis服务为例),脚本内容 ...

  2. linux添加开机自启动脚本示例详解

    linux下(以RedHat为范本)添加开机自启动脚本有两种方法,先来简单的; 一.在/etc/rc.local中添加 如果不想将脚本粘来粘去,或创建链接什么的, 则: step1. 先修改好脚本,使 ...

  3. linux添加开机自启动脚本

    一.在/etc/rc.local中添加 如果不想将脚本粘来粘去,或创建链接什么的, 则: step1. 先修改好脚本,使其所有模块都能在任意目录启动时正常执行; step2. 再在/etc/rc.lo ...

  4. linux 添加开机自启动脚本

    将你自己的restart.sh脚本改造成如下: #!/bin/sh #chkconfig: 2345 80 90 #description:开机自动启动的脚本程序#下面是你的sh脚本,上面的是默认写法 ...

  5. rcs开机启动mysql_linux添加开机自启动脚本示例详解-阿里云开发者社区

    linux添加开机自启动脚本示例详解 double2li 2017-04-14 1652浏览量 简介: linux下(以RedHat为范本)添加开机自启动脚本有两种方法,先来简单的;一.在/etc/r ...

  6. Windows核心编程_添加开机自启动

    添加开机自启动的方式有很多种,这里以:startup方式为例,在Windows用户目录下有一个Startup目录,这个目录下的程序会被Windows登入之后所启动,但是启动级别属于较低的,这个目录适合 ...

  7. linux 添加开机启动项的三种方法。

    原文地址: https://blog.csdn.net/lylload/article/details/79488968 Shell环境变量配置文件:https://blog.csdn.net/yzs ...

  8. [513]linux设置开机自启动

    文章目录 自启动方法1 自启动方法2 方法3:在`/etc/rc.d/init.d`目录下添加自启动脚本 关机要执行的命令 自启动方法1 1.权限编辑/etc/rc.d/rc.local cd /et ...

  9. linux 设置开机自启动 文件配置开机自启动命令

    linux 设置开机自启动 文件配置开机自启动命令 在/etc/rc.local文件中添加自启动命令 执行命令 执行脚本 在/etc/init.d目录下添加自启动脚本 运行级别设置 在/etc/rc. ...

最新文章

  1. 安装flex4 plug-in插件的时候遇到老是在起始处安装不起
  2. 哪些电脑最适合做机器学习、数据科学和深度学习呢?这里有份调研报告
  3. nChain首席科学家CSW:闪电网络会把BCE变成空洞的幽灵
  4. 如何使用jQuery向asp.net Mvc传递复杂json数据
  5. 刚评上院士的马斯克就飘了,说要每天发射三次大火箭,向火星转移100万吨物资...
  6. 孙庆新:做产品,感觉从何而来
  7. datatables 无法 无法重新初始化datatable_伽巫塔罗:2020年9月运势占卜,摩羯没了热情,无法重新卡死...
  8. Flutter Mac下环境配置
  9. iOS sqlite
  10. 前端学习(477):前端简介1
  11. python设计一个动物类_我用Python实现了12500张猫狗图像的精准分类
  12. ES6(三)——回调地狱和promise异步任务顺序执行(传参、错误处理)
  13. [乐理知识] 第三章 拍子 节拍 节奏
  14. 如何编写完美的 Python 命令行程序?
  15. java cstring_CString and char *
  16. Maven--Cargo远程部署
  17. PHP发卡自动源码,PHP自动化售货发卡网源码
  18. webstorm破解版
  19. grads插值_GrADS中格点插值到站点(gr2stn)的详细方法
  20. 清华大学学术答辩通用PPT模板

热门文章

  1. Mac book笔记本输入法错乱
  2. 宝塔面板PM2 nodejs自动化部署
  3. 被言情小说泡大的人工智能,随便写几行字都是情诗
  4. 网页文件是用html语言创建的文本文件,把txt文件变成html网页文件
  5. 数字重复次数统计软件
  6. 使用 Cloud Insight SDK 监控北京空气质量!
  7. ServU 11 以上版本的数据库用户关联 密码加密原理
  8. 戴尔t7610服务器安装系统,Dell Poweredge R730服务器系统安装和配置详细教程
  9. Mac出现异常,如何在M1或Intel Mac上重置NVRAM
  10. 【数据结构+算法】浙传OJ Contest 2290:13信息1 Java 6 问题 F: Hexagon Game