今夜IT网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 222|回复: 0

[Linux相关] Linux开机启动rc.local不执行分析

[复制链接]

68

主题

68

帖子

312

积分

骑士

积分
312
发表于 2017-2-16 15:47:19 | 显示全部楼层 |阅读模式
linux中我们常常在/etc/rc.local写入执行命令或脚本,来实现系统开机启动功能。但偶尔也会遇到没有执行的情况,这时候就要来进行调试了。
以下就是调试步骤:
1、确定rc.local具有可执行权限,直接/etc/rc.local看看能不能执行。因为rc.local中已经写明了“In order to enable or disable this script just change the executionbits.”, 要让它生效只需要改变它的执行位。
2、看看当前系统的runlevel,再去对应rcX.d看看它的启动顺序,是不是有Src.local的启动项在这里面。
3、确认了前面两项,我们就可以来调试rc.local的内容了,首先第一行,默认一般是#!/bin/sh -e,查下shell编程就知道,这个是用的sh解释器,-e参数代表出错后直接退出不执行后面内容。
#!/bin/sh  -e
echo yes
ls /
echo no
ls /ahfjkasf
echo hahaha

执行以上内容就会发现,hahaha是不会打印的。同时我们也要确认ls -l  /bin/sh,来确认sh是对应的哪个解释器,因为在Ubuntu中,sh是链接在dash上。
因此在确认我们使用的SHELL解释器后,可以将-e 改成 -x或是在第二行加入set -x,这样就能将整个rc.local的执行过程打印到syslog中了,然后去查找出错的原因。
在执行某些脚本使用普通的重定向可能不生效,可以试试1 >>/tmp/xxx.log 2>&1这样的格式。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回列表 官方QQ群

QQ|小黑屋|手机版|今夜IT网 (京ICP备11034012号) 

Powered by Discuz! X3.2

快速回复 返回顶部 返回列表