Linux 开机启动脚本

有两种方法可以用来实现:
●如果所做的修改只在引导开机的时候起作用,并且改动不大的话,可以简单地编辑一下/etc/rc.local脚本。这个命令脚本程序是在引导过程的最后一步被执行的。
●如果所做的修改比较细致,或者还要求关闭进程使之明确地停止运行,则需要在/etc/init.d子目录中添加一个命令脚本程序。这个命令脚本程序必须可以接受Start和Stop参数并完成相应的操作。

作者值尝试了方法1,因此只详细介绍方法1,方法2只简单描述下概念,可自行百度具体实现,如果带来不便还请见谅。推荐一个博客:http://blog.csdn.net/zhengshifeng123/article/details/52708596

1:修改/etc/rc.local文件

step1. 先修改好脚本,使其所有模块都能在任意目录启动时正常执行;
step2. 再在/etc/rc.local的末尾添加一行以绝对路径启动脚本的行;

主要描述下我遇到的问题

注意:在rc.local中不可写死循环,否则会无法开机;最好不要添加大面积的代码,尽量用一句两句程序写清楚,真正执行的程序体放在其他目录中

比如:在exit 0 上面添加一句:
/bin/bash /*/A.sh

在A.sh中可以写死循环,这个跟shell程序的执行相关,执行shell是采用创建进程的方式,因此不会导致无法开机问题,这是关键,如果在rc.local中直接写死循环,那么系统挂了~

在尝试过程中,出现一个问题,有些shell命令无法运行,比如echo,原因是执行到rc.local时,系统环境变量还没有准备OK。如果程序本身较小,则都换成绝对路径,如echo换成/bin/echo,但如果程序本身较大,如果将echo写成/bin/echo,会耗费很长时间,则可以采用:
export PATH=/home/××××××/Android/android-sdk-linux/platform-tools:/bin:$PATH

2:/etc/rc*.d/init.d子目录中添加一个命令脚本程序

对每一个运行级别来说,命名方式是/etc/rcX.d,其中的X就是代表运行级别的数字。比如说,运行级别3的全部命令脚本程序都保存在/etc/rc.d/rc3.d子目录中。在各个运行级别的子目录中,都建立有到/etc/rc.d/init.d子目录中命令脚本程序的符号链接,但是,这些符号链接并不使用命令脚本程序在/etc/rc.d/init.d子目录中原来的名字。如果命令脚本程序是用来启动一个服务的,其符号链接的名字就以字母S打头;如果命令脚本程序是用来关闭一个服务的,其符号链接的名字就以字母K打头。

补充:在尝试过程中,尝试过~/.bashrc,尝试过~/.bash_profile,主要考虑跟当前用户相关,但都有局限性(登出bash时进程被杀)没有考虑
1:修改~/.bashrc文件
每次打开bash时都会读取~/.bashrc文件,如果你的程序是创建进程来执行,那么随着终端的数量增多,新建的进程会很多。
2:修改~/.bash_profile
记得是打开bash后,会读取一次,新建一次进程,但当关闭bash时,新建的进程会随之被销毁,因此也不是良方,废弃。

猜你喜欢

转载自blog.csdn.net/longlong2015/article/details/69296990
今日推荐