linux修改rc.local权限,CentOS7中rc.local中的指令不能生效问题。

问题:

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

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

查看文件,文件的命令也是正确的

82fcf8aaf0cba370a160b9f2f5951e7e.png

重启后指令无法生效

一、在总结问题之前,先要搞明白几个文件的作用。

rc.local

路径/etc/rc.d/rc.local或/etc/rc.local(软连接文件)

作用:用来开机自启动一些指定指令。

./.bash_profile:

路径:每个用户的根目录下的隐藏文件;

作用,用来设置该用户的环境变量,个人设置,设置之后只能自己使用。

/etc/profile:

路径:/etc/profile

作用:用来设置所有用户的环境变量,整体设置,设置完成后,所有用户皆可以使用

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

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

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

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

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

(2)文件的执行权限。

查看软连接文件:

9cf05257ec736999ce860c0d3f1be2cc.png

大多数人会在这里出现问题,因为这里显示的是拥有可执行权限的。这个文件的最终执行还是要到/etc/rc.d/rc.local文件那里执行,所以我们需要看的文件权限应该是源文件。

b7a32d2a4aa1ef629d1fb893f4ecb844.png

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

三、解决办法

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

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

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

完成之后重启就可以了。

四、总结

这个问题的出现,一是因为/etc/rc.d/rc.local没有了执行权限(版本问题,看情况以后可能会舍去这个文件)。二是没有认清/etc/rc.d/rc.local文件和/etc/profile文件的执行先后。通过修改文件权限和指令执行方法即可解决。

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

9fba88e9fcc77eec0a26f489a5b268ed.png

人家已经说得明白的啦。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值