Linux开机启动脚本不生效(rc.local/crontab)的解决方案

  Linux执行开机启动常用的有两个方法,一个是将脚本加入到rc.local,另一个是在计划任务crontab中。


rc.local开机启动不生效原因


1、rc.local没有执行权限

  在Centos中,默认/etc/rc.local是个软链接,指向/etc/rc.d/rc.local,请确定这个文件有执行权限。

  


2、你的脚本本身的执行权限

  以/root/ntpd.sh为例,要保证ntpd.sh是可以执行的。
  另外无论自已写的脚本还是编辑rc.local,最好都使用命令的完整路径。
  如将/root/ntpd.sh下入到开机启动:
  
  而不要
  ./root/ntpd.sh

  完整路径能保证脚本的通用性,不然不是所有版本的Linux都能执行。


3、需要延迟启动

  如果以上两条你都没问题,脚本还是不能开机启动,就是命令的生命周期的问题了,
举例:
1、开机给一个虚拟网卡设置一个临时IP
2、开机执行一条添加路由的脚本

  这时你会发现针对网卡的一些设置,可能你无论怎么设置都不能开机启动。示例中这些命令是需要Linux开机网络服务完全启动后才能设置的,而我们的设置是先执行之后才连接网络,执行后是不生效的。
  这时可以新建个脚本start.sh,脚本命令如下:
#延迟60秒启动ntpd.sh
sleep 60
/bin/bash /root/ntpd.sh
  然后将start.sh在rc.local中设置为开机启动,
/bin/bash /root/start.sh

使用crontab执行开机启动

命令:

crontab -e进入编辑:

@reboot /root/ntpd.sh

如果要延迟启动,可使用如下代码:

@reboot sleep 60;/root/ntpd.sh

  crontab中执行@reboot需要管理员权限,普通用户权限是不能执行的。

AD: 腾讯云 1核2G云服务器首年38元
推广推荐

Proudly Powered By WordPress | IEWB.NET 2009-2024 版权所有