给openwrt增加开机启动脚本

openwrt中使用的是busybox,导致其中的crontab没有@reboot这个功能,所以要实现开机/重启后执行某脚本就需要换用其他方式进行处理。本文记录在/etc/init.d/中编写脚本实现此功能。

开始

  • 首先,将要增加的脚本放到/etc/init.d/目录下,例如我编写一个叫script的脚本:
1
2
cd /etc/init.d
vim script
  • 开始编写脚本内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/sh /etc/rc.common
# 系统默认的启动顺序是根据字母顺序进行排列,但设置START的值越大,则越后执行
START=99
# 这里设置系统启动时要执行的命令
start(){
# 例如使用rclone挂载alist的命令
rclone mount alist:/ /myfile/alist --cache-dir /tmp --allow-other --vfs-cache-mode writes --header "Referer:https://www.aliyundrive.com/drive" --daemon
}
# 这里设置系统停止时要执行的命令
stop(){
echo "script stop"
}
# 这里设置系统重启时要执行的命令
restart(){
echo "script restart"
}
  • 保存之后使用这个命令将脚本添加的系统启动项中:
1
/etc/init.d/script enable
  • 重启系统查看是否生效

  • 以上脚本可以实现使用rclone挂载alist,但是为了保证能够在rclone启动之后执行,就需要设置START的值大于rclone设置的值,同时脚本的开头字母在r之后,此处的脚本名为script正好可以使其在rclone之后执行。