在香蕉派的树莓派系统上配置 Syncthing 自启动(暨 Linux 软件自启服务配置)
在香蕉派的樹莓派系統上配置 Syncthing?自啟動
獨立觀察員?2020 年 1 月 19 日(2020年8月30日 更新)
首先做個名詞解釋,”?香蕉派” 是國內一款山寨樹莓派的硬件產品,” 樹莓派系統” 指的是”raspberrypi”,而”Syncthing“則是一款多平臺的同步盤軟件。
Syncthing 的安裝和使用可參考網上的文章《IT 之家學院:無需公網 IP,用樹莓派搭建自己的私有云盤》,本文僅討論如何在樹莓派系統(Linux 系統)中將其配置為自啟動。
?
從《【教程】樹莓派程序開機自啟動方法總結》中,我們可以得知,在樹莓派上設置自啟大致有以下四種方法:
1、在 /etc/rc.local?文件中添加啟動代碼;
2、在?/etc/init.d 路徑新建腳本;
3、配置隨桌面啟動;
4、使用 systemctl 設置服務。
?
之前我配置 frp (一款內網穿透軟件) 時使用過方法 1,后來失效了,現在在用方法 4。神奇的是,這個 Syncthing 我使用方法 4 一直不成功,難道是要用方法 1 不成?
那就先打開 /etc/rc.local 看看,發現香蕉派似乎對其做了些其他工作 —— 將 /var/lib/bananapi/bpi-autorun.d/bpi-autorun.sh 作為啟動腳本:
?
那我們再打開 /var/lib/bananapi/bpi-autorun.d/bpi-autorun.sh 看看:
?
其實就是依次啟動 /var/lib/bananapi/bpi-autorun.d 目錄下以”S” 開頭并緊跟數字這樣命名的腳本:
?
所以我們建立啟動腳本 S90-syncthing.sh (別忘了賦予可執行權限):
#!/bin/bash sudo su - pi -c "exec /media/dlgcy/syncthing/syncthing"?
我的 syncthing 是放在 /media/dlgcy/syncthing 目錄下的,所以將 S90-syncthing.sh 也放在那里:
?
可以看到還有個?start-syncthing.sh 文件:
sudo cp ./S90-syncthing.sh /var/lib/bananapi/bpi-autorun.d/S90-syncthing.sh sudo /var/lib/bananapi/bpi-autorun.d/S90-syncthing.sh?
這個是用于拷貝上面那個啟動腳本到正確目錄,保證下次開機能被調用到,并且順便啟動一下,供本次使用。
?
最后看看如此大費周章要啟動的是什么吧:
?
2020 年 8 月 30 日更新:
經過一段時間的使用,發現上面說的方法有個問題,就是軟件意外退出后無法自動重啟。之前說用服務的方式一直沒成功,最近在做《下載中轉加速器 VPSDownloader.NET(.NET Core 程序部署到 Linux 系統)》的時候,加深了對 Linux 系統自啟服務的理解,所以還是改為使用服務的方式啟動吧。
本次新增四個文件,分別為直接運行腳本 start-direct.sh、后臺運行腳本 start-background.sh、服務文件 syncthing.service、安裝服務腳本 InstallService.sh,如下:
?
首先是直接運行腳本 start-direct.sh:
#!/bin/bashsudo su - pi -c "exec /media/dlgcy/syncthing/syncthing"然后是后臺運行腳本 start-background.sh:
#! /bin/sh cd /media/dlgcy/syncthing nohup ./start-direct.sh &?
再次是服務文件 syncthing.service:
[Unit] Description=Syncthing Service After=network.target[Service] User=root Type=forking ExecStartPre=/bin/sleep 10 ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID ExecStart=/media/dlgcy/syncthing/start-background.sh Restart=always RestartSec=30 StartLimitInterval=20 StandardOutput=/media/dlgcy/syncthing/log[Install] WantedBy=multi-user.target?
最后是安裝服務腳本 InstallService.sh:
chmod +x ./start-direct.sh chmod +x ./start-background.sh touch ./log cp ./syncthing.service /usr/lib/systemd/system/syncthing.servicesystemctl daemon-reload systemctl enable syncthing systemctl start syncthing systemctl status syncthing?
使用時我們只需 cd 到相應的目錄,然后執行以下命令即可(只需執行這一次):
sudo ./InstallService.sh?
執行成功:
?
這樣即使程序意外退出了,也能自動重啟。
?
Syncthing 的介紹文章可看知乎文章《(二十三) 小眾但好用: Syncthing 把手機變成同步網盤》。
祝大家使用愉快!
總結
以上是生活随笔為你收集整理的在香蕉派的树莓派系统上配置 Syncthing 自启动(暨 Linux 软件自启服务配置)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Orleans 知多少 | Orlean
- 下一篇: 使用BeetleX在Linux下部署.N