/etc/rc.local 不执行的问题汇总

本文介绍了如何排查和解决Linux系统中rc.local启动项的问题,包括检查执行权限、验证命令路径正确性及确保rc.local为有效文件而非软链接等步骤。
1.查看/etc/rc.local是否有执行权限,没有就加上
#chmod +x /etc/rc.local
2.查看写在/etc/rc.local里面的命令路径是否能正常调用
解决办法1:

#echo "export PATH=/usr/local/xxx/bin:\$PATH" >> /root/.bash_profile

解决办法2:

#which command

/usr/local/xxx

参考之前的文章:shell路径

然后将命令的绝对路径写入/etc/rc.local启动项来调用

3.检查/etc/rc.local是文件还是软连接?

# ls -lh /etc/rc.local

lrwxrwxrwx. 1 root root 13 Oct 22  2013 /etc/rc.local -> rc.d/rc.local

如果是文件,那么启动项就无法启动了,因为启动时调用/etc/rc.d/rc.local里面的指令

如果不是,修改步骤如下:

# rm -rf /etc/rc.local

# ln -s /etc/rc.d/rc.local /etc/rc.local

如果是软链接,经过前2步的检查,问题都能得到解决!

最妥的解决办法:把启动执行命令写在/etc/rc.d/rc.local里面

~ # caopen /tmp/online/state failed t /etc/init.d/bluetopia #!/bin/sh /etc/rc.common # Copyright (c) 2016 Shenzhen TP-LINK Technologies Co.Ltd. # Author Wang Hao<wanghao@tp-link.com.cn> START=99 STOP=99 USE_PROCD=1 start_service() { local data local mode local sync_version local is_cal="1" local uart_port local CFG_COMPLETE_FILE="/opt/tplink/Central/data/start_up.conf" local gpio_num=$(uci -c /etc/profile.d/ get profile.@ble[0].ble_reset_gpio) if [ -n "$gpio_num" ]; then echo "bluetopia start ble up gpio:$gpio_num" > /dev/console echo $gpio_num > /sys/class/gpio/export echo out > /sys/class/gpio/gpio$gpio_num/direction echo 1 > /sys/class/gpio/gpio$gpio_num/value echo $gpio_num > /sys/class/gpio/unexport fi uart_port=$(uci -c /etc/profile.d/ get profile.@ble[0].uart_port) if [ ! -n "$uart_port" ]; then uart_port="/dev/ttyS1" fi BTHOST_BD_ADDR=$(uci -c /etc/config get tddp.macaddr.macaddr) echo -n "$BTHOST_BD_ADDR" > /tmp/BTHOST_BD_ADDR if [ -f "$CFG_COMPLETE_FILE" ];then cfg_complete_file=`cat ${CFG_COMPLETE_FILE}` configured=`echo ${cfg_complete_file} | sed 's/,/\n/g' | grep "configured" | sed 's/:/\n/g' | sed '1d' |sed 's/[}\" ]//g'` if [ -n "$configured" ] && [ "$configured" = "1" ] ;then echo "controller is configured, ble enable is off" > /dev/console return fi fi echo "ble enable is on" > /dev/console mode=$(uci -c /etc/config get factory_mode.factory_mode.factory_flag) # 接口还没有适配,后面用来区分什么时候是工厂产测模式 # 通过获取蓝牙的版本号,来确认蓝牙芯片信号,后续做芯片兼容设计的时候添加相关逻辑 :<< FACTORY_TEST if [ "$mode" = "test" ]; then # 工厂产测模式 procd_open_instance # 还需要检查是否有无线校准数据,以决定是哪个产测项目 if [ -f "$at_flag" ]; then # AC63芯片 echo "-----> this bluetooth MCU is an AC6368A device" > /dev/console if [ "$is_cal" = "0" ]; then echo "Bluetooth enter TEST RF mode" > /dev/console #工厂模式且无无线校准数据,bthost就用rf mode启动(工位a) procd_set_param command /usr/sbin/bthost -b 115200 -r -p "$uart_port" else echo "Bluetooth enter TEST connectivity mode" > /dev/console #工厂模式且有无线校准数据,bthost就用manu mode启动(工位b) procd_set_param command /usr/sbin/bthost -b 115200 -m -p "$uart_port" fi else # 其他蓝牙芯片 echo "-----> this bluetooth MCU is an CSR8811 device" > /dev/console procd_set_param command /usr/sbin/Btdiag UDT=yes PORT=2380 IOType=SERIAL BT-DEVICE=/dev/ttyQHS0 BT-BAUDRATE=115200 QDARTIOType=ethernet fi procd_set_param respawn 600 1 16 procd_close_instance else #正常模式 #do not start daemon unless in default config #sync_version=$(uci get sync.config.version) if [ "$sync_version" = "0" ]; then if [ ! -s /tmp/group-info ]; then FACTORY_TEST procd_open_instance #if [ -f "$at_flag" ]; then #判断蓝牙芯片型号 # echo "bluetooth MCU support AT protocol(From JieLi ZhuHai)" > /dev/console procd_set_param command /usr/sbin/bthost -b 115200 -o -p "$uart_port" #else # procd_set_param command /usr/bin/tplink_SPPLE 2 /dev/ttyQHS0 115200 #fi procd_set_param respawn 3600 5 1 #设置守护进程的参数,重启阈值3600s,重启超时5s,重启次数1次 #procd_set_param env BTHOST_XCAL_TRIM="$(cat /tmp/BTHOST_XCAL_TRIM)" BTHOST_BD_ADDR="$(cat /tmp/BTHOST_BD_ADDR)" procd_close_instance #device is ready for setup #ubus call leds init '{"state":"unbound"}' #LED有什么配合显示? #fi #fi :<< UPGRADE echo "bluetooth save ble version file" > /dev/console /usr/sbin/bthost -b 115200 -c -p "$uart_port" UPGRADE return 0 } stop_service() { return 0 } bluetooth_restart() { sleep 15; stop; start; } reload_service() { bluetooth_restart > /dev/null 2>&1 & } ~ # open /tmp/online/state failed open /tmp/online/state failed
最新发布
12-03
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值