开发者社区 问答 正文

rc.local重启后不执行

使用ecs centos6.5
装redis后提示
WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
于是我在
/etc/rc.local中添加了如下一句
echo never > /sys/kernel/mm/transparent_hugepage/enabled
可是重启后任然无效,需要手动执行一次
怎么回事呢?

展开
收起
我不是照耀 2015-03-17 13:37:54 12268 分享 版权
阿里云 AI 助理回答

在CentOS 6.5中,有时直接修改/etc/rc.local可能不会按预期执行,这可能是由于权限、执行顺序或者该文件未被正确启用等原因导致的。为了解决这个问题,你可以尝试以下几种方法:

  1. 确保rc.local可执行:首先检查/etc/rc.local文件是否具有执行权限。可以使用命令chmod +x /etc/rc.local来添加执行权限。

  2. 检查rc.local是否被systemd管理:CentOS 7开始默认使用systemd,但CentOS 6.5使用的是Upstart或SysVinit。尽管如此,确认systemd是否存在以及它是否影响了rc.local的执行也是个好主意。如果存在systemd且影响了执行,你可能需要创建一个systemd服务单元来替代或额外配置。

  3. 使用sysvinit方式:确保SysV init脚本正确链接到启动目录。通常,通过运行chkconfig --add rc.localchkconfig rc.local on来实现。这会确保rc.local在系统启动时被执行。

  4. 直接编辑grub配置:为了更彻底地禁用THP,你也可以考虑直接编辑GRUB配置来禁止透明大页。编辑/etc/default/grub文件,找到GRUB_CMDLINE_LINUX这一行,加入transparent_hugepage=never参数,例如:

    GRUB_CMDLINE_LINUX="... crashkernel=auto rd.lvm.lv=vg_centos6/root rd.lvm.lv=vg_centos6/swap rhgb quiet transparent_hugepage=never"
    

    然后运行grub2-mkconfig -o /boot/grub2/grub.cfg更新GRUB配置,并重启系统。

  5. 临时解决:虽然这不是长久之计,但作为临时解决方案,可以在用户数据脚本或者其他开机启动的服务中加入执行禁用THP的命令,以确保每次系统启动后自动执行。

请按照上述步骤逐一尝试,直到问题得到解决。记得每次更改后测试Redis是否正常启动且THP已被正确禁用。您也可以通过ECS一键诊断全面排查并修复ECS问题。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答