手把手教你从安装CentOS7.4镜像开始,搭建IoT视频监控系统( 四 )

3.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镜像开始,搭建IoT视频监控系统

文章插图
我当前使用的是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]#

经验总结扩展阅读