本文写于2020/05/20日,部分命令或软件已不适用。
linux下clash不会自动更新订阅。只好自己去看看怎么写了。我对systemd
不太熟悉所以只好去参考下别人的写法。
好像用不了了,不知道哪里出问题了,懒得改了。。
参考链接:
安装
自启配置 通过systemctl
来管理Clash
的进程,对应clash.service
文件,并且通过两个脚本start-clash.sh
和stop-clash.sh
实现开启时更新订阅。/usr/lib/systemd/system/[email protected]
文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 /usr/lib/systemd/system/[email protected] [Unit] Description=A rule based proxy in Go for %i. After=network.target [Service] WorkingDirectory="your home directory"/.config/clash Type=simple User=%i Restart=on-abort ExecStart="your home directory"/.config/clash/start-clash.sh ExecStop="your home directory"/.config/clash/stop-clash.sh [Install] WantedBy=multi-user.target
start-clash.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 # !/bin/bash # 设置clash目录 CLASH_DIR="${HOME}/.config/clash" # 保存PID文件 echo $$ > ${CLASH_DIR}/clash.pid # 订阅链接下载地址 CLASH_URL="你的订阅链接" # 对比新的文件和旧的文件有什么不同 diff ${CLASH_DIR}/config.yaml <(curl -s ${CLASH_URL}) # 如果两个文件一致,就直接开启clash,如果不一致就生成备份旧文件并下载替换新的文件 if [ "$?" == 0 ] then /usr/bin/clash else TIME=`date +'+%Y-%m-%d %H:%M%S'` /usr/bin/cp ${CLASH_DIR}/config.yaml "${CLASH_DIR}/config.yaml.bak${TIME}" curl -L -o ${CLASH_DIR}/config.yaml ${CLASH_URL} /usr/bin/clash fi
stop-clash.sh
1 2 3 4 5 6 7 8 # !/bin/bash $ CLASH_DIR="${HOME} /.config/clash" PID=`cat ${CLASH_DIR}/clash.pid` kill -9 ${PID} /usr/bin/rm ${CLASH_DIR}/clash.pid
写好后,需要给两个sh文件执行权限。
1 chmod +x stop-clash.sh start-clash.sh
使用systemctl
管理
1 2 systemctl enable clash systemctl start clash