Ubuntu开机自动开启Clash
每次开机都要自己输命令运行Clash的开启脚本
看一下如何让系统能够自动开启clash代理。下面尝试了两种方法,systemd和crontab,前者失败了,后者成功了。
方法1:使用systemd
服务
- 创建一个新的服务文件。打开终端,输入以下命令:
1 |
|
- 在打开的文件中添加以下内容:
1 |
|
- 确保
User
字段中的用户名与你的用户名匹配。 - 保存并关闭文件。
- 启用该服务以在启动时自动运行:
1 |
|
- 若要立即测试服务是否正常工作,可以使用:
1 |
|
经过实测不太行,决定不使用该方法:
1 |
|
但是经过仔细的分析,其实问题在于我的start.sh脚本
其实开启clash并不需要重新拉去订阅文件并配置那么多东西,只要启动一下clash其实就好了。
于是定制了一个脚本:clash-start.sh,并按照上面systemd的方法重新搞一遍。
发现它会高速不断执行,看来只要启动一次就好了
以下是 Restart
指令的常见取值及其含义:
- no:默认值,服务不会自动重启。
- on-success:仅当服务正常退出(退出状态码为0)时重启。
- on-failure:当服务因非正常原因(如崩溃或被信号终止)退出时重启。
- on-abnormal:当服务因被信号终止或超时而退出时重启。
- on-watchdog:当服务因看门狗超时而退出时重启。
- on-abort:当服务因接收到abort信号而退出时重启。
- always:无论服务如何退出,总是重启。
看来设定always其实是错误的,因为我的这个是脚本,应该是因非正常原因退出才要重启。
故修改为Restart:on-failure
立即测试一下发现可以正常运行。重启了之后发现似乎不太行,但是手动执行却可以。我合理怀疑是执行的时机不太对。于是把after:network 改为after:network-online.target ,发现还是不行。。。
决定再次放弃这种做法。
方法2:Crontab
发现这种方法甚至更简单。
打开crontab配置进行修改:
1 |
|
一开始选择了vscode来编辑,发现对它的支持并不好,直接检测不出来:
1 |
|
只好换成nano:
1 |
|
重新打开crontab配置并在打开的文本末尾添加:
1 |
|
经过重启测试,成功了!
感觉crontab确实比systemd要方便许多,至于systemd的方法为什么会失败,我就不追究了。
Ubuntu开机自动开启Clash
http://thinkerhui.site/2024/11/12/技术记录/Ubuntu开机自动开启Clash/