背景
家里有个jetson-nano, 平日在外面使用的时候链接不到,正好自己有个固定IP的云服务器,所以就做了一个内网穿透,不过每次远程reboot后这哥们就失联了,需要回家才能连上开启frpc非常不方便,为此希望搞一个开机自启动。
步骤
cd /etc/init.d/
touch mystart
vim mystart
chmod 777 mystart
ln -s /etc/init.d/mystart /etc/rc2.d/S99mystart
解释
/etc/下面有很多rc*.d, 为什么选择rc2是因为ubuntu默认启动是2级别,S99mystart,大写S代表启动的顺序,mystart是自己的脚本。
疑问
其他系统有问题可以通过sysv-rc-conf配置
demo
//mystart
#! /bin/sh
nohup /home/fengshuai/frpc -c /home/fengshuai/frpc.ini >> /home/log/log.txt &
注意
上面的demo中,由于frpc在network启动之前启动,所以就直接挂掉了所以不会生效的,为此需要修改一下frpc的配置,就是是在common中添加: login_fail_exit = false
修改需要sudo的初始化命令
- 查看/lib/systemd/system/rc-local.service文件,(如果文件存在,一般是没有[Install]项的,这里需要自己添加进去)
[Unit]
Description=/etc/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.local
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no
#### 需要自己添加
[Install]
WantedBy=multi-user.target
Alias=rc-local.service
- 修改好后,copy一份到另外一个文件夹/etc/systemd/system/rc-local.service, 因为系统执行文件在/etc/systemd/system中
- 创建/etc/rc.local脚本文件,写自己需要的脚本程序
#! /bin/bash
mkdir /usr/local/temp
- 修改权限
sudo chmod +x /etc/rc.local
- 启用服务
sudo systemctl enable rc-local
sudo systemctl start rc-local.service
sudo systemctl status rc-local.service