访问文件测试: http://127.0.0.1:8090
三、Linux下开机启动的执行流程3.1 开机执行脚本顺序第一步:init /etc/inittab第二步:启动相应的脚本,并且打开终端rc.sysinitrc.d(里面的脚本)rc.local第三步:启动login登录界面 login第四步:在用户登录的时候执行sh脚本的顺序,每次登录的时候都会完全执行的/etc/profile.d/file/etc/profile/etc/bashrc/root/.bashrc/root/.bash_profile3.2 Linux中修改环境变量及生效方法修改/etc/profile 或者 /etc/bashrc 可以让环境变量全部用户全局生效(需要重启系统) 。修改~/.bash_profile 或~/.bashrc对当前用户全局有效(需要重启系统) 。
如果需要立即生效,修改完之后用source命令执行 , 如:source .bash_profile
3.3 rcX.d的启动级别一般有开机自启动的需求时,一般会在/etc/rc.local文件中写命令行或脚本执行命令的方式来实现 。也可以在/etc/profile文件里实现(不建议) 。
现在很多Linux发行版,默认是没有/etc/rc.local这个文件或者没有去执行,而使用的是/etc/rcX.d 。
rcX.d并不是指这个目录或者文件就是叫rcX.d , 这其中的X对应是0~6这7个数字,不同的数字对应着不同的级别
查看当前系统/etc/rcX.d目录:
[root@ecs-c687-ecrs work]# ls /etc/ | grep rcbashrccsh.cshrcinputrcmail.rcrc0.drc1.drc2.drc3.drc4.drc5.drc6.drc.drc.localvimrcvircwgetrc通过runlevel命令查看当前系统的启动级别:
文章插图
我当前使用的是CentOS7.4服务器版本,启动级别如下:
[root@ecs-c687-ecrs ]# runlevelN 3查看/etc/rc3.d/目录下文件的详细信息:
[root@ecs-c687-ecrs ~]# ls /etc/rc3.d/ -ltotal 0lrwxrwxrwx. 1 root root 20 Feb 14 2022 K50netconsole -> ../init.d/netconsolelrwxrwxrwx. 1 root root 17 Feb 14 2022 K90network -> ../init.d/networklrwxrwxrwx 1 root root 19 Sep 15 22:07 S12hostguard -> ../init.d/hostguardlrwxrwxrwx 1 root root 24 Feb 14 2022 S50multi-queue-hw -> ../init.d/multi-queue-hw可以看到该目录下的文件都是链接文件,而且都是指向/etc/init.d中的shell脚本或者其他可执行文件 , 它们的命名方式基本都是以S或者K开头,其后紧跟一个数字,数字后则是链接文件的名字,这个名字可以自行定义 。
命名规则解释如下:
以K90network为例:K表示stop,S表示start 。(表示需要传入参数) , 也就是说开机自启动命令会向脚本传入start或者stop,在脚本里可以收到参数$1进行一些判断,完成一些不同情况下的逻辑处理 。比如:开机执行什么代码,关机执行什么代码 。90 表示脚本执行等级 。(通常越小越优先)network与/etc/init.d下的脚本文件名称保持一致 。3.4 利用rcX.d实现开机自动执行脚本比如:需求是开机之后创建一个文件,并向文件里存放一些数据 。
(1)先在/etc/init.d目录下创建一个up_demo.sh脚本,编写脚本代码:
#!/bin/bashecho $0 $1 >> /home/up_test.txt修改脚本权限:
[root@ecs-c687-ecrs init.d]# chmod 777 /etc/init.d/up_demo.sh[root@ecs-c687-ecrs init.d]# ls up_demo.sh -l-rwxrwxrwx 1 root root 76 Sep 16 14:13 up_demo.sh(2) 在/etc/rc3.d目录里,创建软连接 。(因为我的系统启动级别为3)
[root@ecs-c687-ecrs rc3.d]# ln -s /etc/init.d/up_demo.sh S10up_demo[root@ecs-c687-ecrs rc3.d]# ls -ltotal 0lrwxrwxrwx. 1 root root 20 Feb 14 2022 K50netconsole -> ../init.d/netconsolelrwxrwxrwx. 1 root root 17 Feb 14 2022 K90network -> ../init.d/networklrwxrwxrwx 1 root root 22 Sep 16 14:17 S10up_demo -> /etc/init.d/up_demo.shlrwxrwxrwx 1 root root 19 Sep 15 22:07 S12hostguard -> ../init.d/hostguardlrwxrwxrwx 1 root root 24 Feb 14 2022 S50multi-queue-hw -> ../init.d/multi-queue-hw(3)重启系统 , 进入到/home目录下查看文件内容,可以看到开机启动成功,内容已经写到up_test.txt文件里了 。
Welcome to Huawei Cloud Service[root@ecs-c687-ecrs ~]# cd /home/[root@ecs-c687-ecrs home]# lslib_run.shup_test.txtvideoworkwork_pcwork.tar.gz[root@ecs-c687-ecrs home]# cat up_test.txt/etc/rc.d/init.d/up_demo.sh start[root@ecs-c687-ecrs home]# 点击关注,第一时间了解华为云新鲜技术~
【手把手教你从安装CentOS7.4镜像开始,搭建IoT视频监控系统】
推荐阅读
- 从源码入手探究一个因useImperativeHandle引起的Bug
- 如何把螃蟹杀掉(如何将螃蟹从洞里赶出来)
- C# RulesEngine 规则引擎:从入门到看懵
- C++算法之旅、02 从木棒切割问题领悟二分法精髓
- 教你如何解决T+0的问题
- 3 Python全栈工程师之从网页搭建入门到Flask全栈项目实战 - 入门Flask微框架
- 机器学习实战-AdaBoost
- 从0搭建vue3组件库:自动化发布、管理版本号、生成 changelog、tag
- 从0搭建vue3组件库: 如何完整搭建一个前端脚手架?
- WiFi万能钥匙怎么用(教你一招wifi永不断网)