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

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

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

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

重启后指令无法生效

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

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)文件的执行权限。

查看软连接文件:

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

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

三、解决办法

(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文件中的注释


人家已经说得明白的啦。

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

原文地址:http://blog.51cto.com/12332766/2331012

时间: 2024-09-30 21:09:51

CentOS7中rc.local中的指令不能生效问题。的相关文章

rc.local中的memcached命令不执行

碰到了个问题, rc.local 中启动memcached 的命令没有执行, 手动输入却可以. memcached 改成绝对路径之后就好了. 究其原因在于: rc.local 在PATH环境变量指示的路径中寻找 memcached. 在rc.local 执行时, PATH 中还不包括 /usr/local/bin. 手动输入可以, 是因为PATH 中已经包含 /usr/local/bin/ 了. 请写绝对路径. rc.local中的memcached命令不执行,布布扣,bubuko.com

解决centos系统自定义在rc.local中的脚本不能执行问题小记

时间:2015.8.27 困扰了一下午的问题,晚上终于搞定,把他记录在这里 出现centos中rc.local不能自行启动的问题,大概有这么几种情况: rc.local文件没有可执行权限:添加可执行权限  (备注:/etc/rc.d/rc.local为源文件,/etc/rc.local /etc/rc3.d/S99lcoal等均为软连接文件) 缺少环境变量,因为系统启动后最后执行rc.local,但是一些系统或者用户的环境变量没有加载:解决办法:(1)在执行脚本之前添加sleep 10延迟10秒

Centos7系统rc.local不起作用问题

Centos7系统rc.local不起作用问题 来源 https://www.cnblogs.com/xjz00/p/7729405.html Centos7已经写了要chmod +x /etc/rc.d/rc.local 授权一下才会起作用 当然有的时候也可能不成功,比如: /etc/rc.d/rc.local 文件中的内容格式不正确: 开头少了#!/bin/bash,也是执行不成功的,会提示你格式不对. 此外还可能是没有启动此项服务: #systemctl list-units --type

centos7的rc.local

centos7的rc.local默认是不开启的,如果需要开启则chmod +x /etc/rc.d/rc.local,是以记之.

centos7 /etc/rc.local需要chmod +x /etc/rc.d/rc.local

Centos 7.0设置/etc/rc.local无效问题解决 安装centos7以后按照以往习惯修改rc.local添加开机启动命令,但重启后发现无效,再次重启发现依然如故 检查系统rc.local服务运行情况 systemctl | grep "rc.local" # rc-local.service loaded active running /etc/rc.d/rc.local Compatibility 发现运行正常 随后查看rc.local文件 vim /etc/rc.lo

centos7设置rc.local文件使用

给 /etc/rc.d/rc.local 可执行权限: chmod +x /etc/rc.d/rc.local 开启 rc-local.service 服务: systemctl   enable   rc-local.service systemctl   start  rc-local.service

linux中一次非常有意思的/etc/rc.local不运行任何脚本故障排查

最近在运维公司一台恒生行情服务器过程中,突然某周一发现之前配置/etc/rc.local中能随机器启动脚本没有随机器启动,但手动执行均正常.根据网上各种眼花缭乱资料,核查相关执行权限都有,但就是不执行,连touch /var/lock/subsys/local都不执行.没办法,想过重装,虽然是虚拟机,克隆安装简单,但感觉如果是物理服务器,那是非常麻烦,故还是希望找到原因.中途考虑过做成服务,在rc5.d中重建链接,都失败了.最后,通过对/var/lock/subsys/随机启动服务进行分析,对比

/etc/rc.local /etc/init.d

1. /etc/rc.local    这是使用者自订开机启动程序,把需要开机自动运行的程序写在这个脚本里   --------引用----------------------  在完成 run level 3 的服务启动后,如果我还有其他的动作想要完成时,举例来说, 我还想要寄一封 mail 给某个系统管理帐号,通知他,系统刚刚重新开机完毕,那么,是否应该要制作一个 shell script 放置在 /etc/rc.d/init.d/ 里面,然后再以连结方式连结到 /etc/rc.d/rc3.

关于/etc/rc.local以及/etc/init.d

1. /etc/rc.local    这是使用者自订开机启动程序,把需要开机自动运行的程序写在这个脚本里   --------引用----------------------  在完成 run level 3 的服务启动后,如果我还有其他的动作想要完成时,举例来说, 我还想要寄一封 mail 给某个系统管理帐号,通知他,系统刚刚重新开机完毕,那么,是否应该要制作一个 shell script 放置在 /etc/rc.d/init.d/ 里面,然后再以连结方式连结到 /etc/rc.d/rc3.