CentOS7中rc.local中的指令不能生效问题。

问题:
在系统中/etc/rc.local设置自启动命令的时候,重启计算机,文件中的指令没法生效。linux

我这里编译安装了一个mongodb数据库的服务,而后修改了环境变量。写入到了.bash_profile 文件中,在shell中能够直接执行命令。mongodb

查看文件,文件的命令也是正确的
CentOS7中rc.local中的指令不能生效问题。
重启后指令没法生效shell

1、在总结问题以前,先要搞明白几个文件的做用。

rc.local数据库

路径/etc/rc.d/rc.local或/etc/rc.local(软链接文件)
做用:用来开机自启动一些指定指令。bash

./.bash_profile:ide

路径:每一个用户的根目录下的隐藏文件;
做用,用来设置该用户的环境变量,我的设置,设置以后只能本身使用。blog

/etc/profile:it

路径:/etc/profile
做用:用来设置全部用户的环境变量,总体设置,设置完成后,全部用户皆可使用编译

2、查找产生问题的因素。

在linux中,一个文件出现了问题,首先应该查看文件的完整性和文件的权限。(我的习惯)。class

(1)启动时,文件的执行前后。

我这里虽然修改了环境变量,可是,当计算机启动的时候,/etc/rc.local文件是先于/etc/profile或.bash_profile文件执行的。

因此,我这里得命令应该使用绝对路径的形式。(which mongod)。

(2)文件的执行权限。

查看软链接文件:
CentOS7中rc.local中的指令不能生效问题。
大多数人会在这里出现问题,由于这里显示的是拥有可执行权限的。这个文件的最终执行仍是要到/etc/rc.d/rc.local文件那里执行,因此咱们须要看的文件权限应该是源文件。

CentOS7中rc.local中的指令不能生效问题。

从这里能够看出,文件根本就没有执行权限,因此说当计算机开机的时候,这个文件也不会去执行。

3、解决办法

(1)执行命令的时候,将命令写为执行文件的绝对路径

(2)给/etc/rc.d/rc.local文件附加上可执行权限

chmod +x /etc/rc.d/rc.local

完成以后重启就能够了。

4、总结

这个问题的出现,一是由于/etc/rc.d/rc.local没有了执行权限(版本问题,看状况之后可能会舍去这个文件)。二是没有认清/etc/rc.d/rc.local文件和/etc/profile文件的执行前后。经过修改文件权限和指令执行方法便可解决。

其实在这里,细心的同窗可能会注意到/etc/rc.d/rc/local文件中的注释

CentOS7中rc.local中的指令不能生效问题。
人家已经说得明白的啦。

都怪我英语太差啊,看到英语略过。。。。

相关文章
相关标签/搜索