如何在终端纯命令行控制clashssh连接服务器时,没有桌面环境,无法使用GUI。本文主要介绍如何通过命令行控制clash软件1.下载并配置clash下面我们就一个一个下载clash软件。如果是64位linux,可以使用下面命名的下载软件wgethttps://github.com/Dreamacro/clash/releases/download/v1.10.6/clash-linux-amd64-v1.10.6.gz#下载Clash其他系统可以到软件下载地址选择正确的版本。我们给解压后的软件赋予执行权限,使用命令sudochmod+xclash-linux-amd64-v1.10.6#增加执行权限。/clash-linux-amd64-v1.10.6#运行文件然后我们直接执行直接在当前目录下文件,使用命令./clash-linux-amd64-v1.10.6,在提示符中发现初始化了一个配置文件,该文件位于~/.在config/clash目录下,提示有错误。原因是无法下载Country.mmdb文件。我们可以手动下载。接下来,我们将刚刚执行的文件clash-linux-amd64-v1.10.6复制到配置文件目录下,并重命名。对于clash,使用方便,使用的命令是cpclash-linux-amd64-v1.10.6~/.config/clash/clash#复制clash文件cd~/.config/clash#进入配置文件目录然后回车~/在.config/clash目录下,我们找到了移动后重命名的文件clash,以及刚刚初始化失败的配置文件config.yaml。我们先下载缺少的Country.mmdb文件,可以直接使用命令wget-OCountry.mmdb下载https://www.sub-speeder.com/client-download/Country.mmdb#下载文件config.yaml包含你的配置信息,这里需要使用代理wget-Oconfig提供的订阅链接。yaml[代理提供的订阅链接]#下载到本地,这里目录下的文件应该如下,查看config.yaml文件即可查看里面的配置信息,这里的配置可以参考配置信息参数。这时候我们再次执行该文件,可以发现运行成功了。结果显示9090端口被监听。注意后面不要关闭这个终端。/clash#executefile2.system配置只是clash运行成功。我们需要修改系统配置,将代理配置改为手动填写,地址为127.0.0.1,http和https的端口号对应配置文件中的端口,socks对应socks-port,如下图,我们也可以在clash启动后使用浏览器访问网址http://clash.razord.top/,修改这里的配置信息3.修改命令行配置将以下命令放入终端的配置文件中。如果你用zsh,配置文件是~/.zshrc,如果你用bash,配置文件是~/.bashrc#这两个都要放到配置文件里--startalias'proxy'='exportall_proxy=socks5://127.0.0.1:7891'#开启代理alias'unproxy'='unsetall_proxy'#关闭代理#这两个都要放到配置文件里---end#执行命令vim~/.zshrc#把上面两句放在最下面,结果应该如下最后用命令source~/.zshrc更新一下,再用命令proxy打开终端的代理,最后就可以用curl命令了验证来源~/.zshrccurl[url]curl命令是如果可以看到返回的html信息,则访问成功提示:proxy开启终端代理,unproxy关闭终端代理4.设置clash后台运行.但是运行clash后,终端无法关闭。一旦终端关闭,clash也会关闭,所以我们继续设置,使用nohup后台运行,使用&继续执行命令。此时查看7890端口后,会发现软件还在后台继续运行pkill-9clash#建议每次重启前杀掉之前的进程,因为设置不报错后需要更加严谨消息输出。nohup./clash-d.这里nophup可以后台运行,&是继续执行其他名字,.在当前目录下lsof-i:7890#查看端口占用情况。不过此时在执行命令的目录下会生成nohuo.out文件。当然,我们不想这么乱来,所以继续修改命令为nohup。/冲突-d。>/dev/null2>&1&这里把输出文件写到/dev/null,这个目录会丢弃所有写入的数据,是垃圾箱,数字是linux的重定向,里面数字的意思如下:1:标准输出,一般情况下,默认为标准输出;2:表示错误信息输出。这里整句话的意思是将错误信息重定向到标准输出,其他信息丢到/dev/nullpkill-9clash#先杀掉前面的进程rmnohuop.out#删除刚刚生成的nohup.out文件nohup./冲突-d。>/dev/null2>&1不生成文件ls#目前显示的文件并不完美。如果我们不在有config.yaml的目录下执行,会报错,所以需要把所有路径都写为绝对路径nohup/home/your_name/.config/clash/clash-d/home/your_name/.config/clash/>/dev/null2>&1这里设置绝对路径为之前的./clashsoftwarepath改成绝对路径,也改成绝对路径(在防止config.yaml的目录下)。建议先用/home/你的名字/.config/clash/clash-d/home/你的名字/.config/clash/试试,用nohup后不会有错误信息输出。改正后,在~/.zshrc中为命令添加别名,添加如下内容alias'clash'='nohup/home/your_name/.config/clash/clash-d/home/your_name/.config/clash>/dev/null2>&1&'alias'unclash'='pkill-9clash'最后别忘了使用source~/.zshrc使修改生效。这时候可以使用简单的命令clash和clash命令来启动和关闭软件。使用命令ps-ef|grepclash判断clash是否运行,后半部分更完美。每次重启服务器,都需要通过命令手动控制clash软件。这种事情在这里是不允许发生的,所以我们需要设置它开机自动运行。首先创建一个auto_run.sh脚本,内容如下#!/bin/shnohup/home/your_name/.config/clash/clash-d/home/your_name/.config/clash/>/dev/null2>&1&这里是最多的嘛,试试先执行shauto_run.sh,您可以使用ps-ef|grepclash查看是否运行成功,然后使用rc-local设置自动启动脚本cp/usr/lib/systemd/system/rc-local.service/etc/systemd/system/#先复制rc-local.服务到系统目录sudotouch/etc/rc.local#创建rc.local文件sudochmod755/etc/rc.local#设置权限#设置rc-localSystemctlstartrc-localsystemctlenablerc-localsudoreboot#重启服务器!!!!systemctlstatusrc-local#查看服务,确认其处于启动状态。最后在rc-local中添加启动时执行的任务sudovimrc-local#下面是写入的内容#!/bin/bashsh/home/dl/.config/clash/auto_run.sh可以重启实验结束,可以通过ps-ef|验证是否自动启动grepclash6.自动更新配置文件。配置文件信息会更新,我们还需要更新本地配置文件wget-o/home/your_name/.config/clash/config.yaml[订阅链接]我们把config.yaml的路径写成绝对路径,这样无论我们在哪个目录下,都可以执行命令并更新配置文件。有了命令后,只需要设置定时器,每天定时执行,就可以达到自动更新本地配置文件的效果这里使用linux自带的cron定时器,设置每天运行一次crontab——e#编辑计划任务2520***wget-O/home/你的名字/.config/clash/config.yaml[订阅地址]#添加这一行的内容,这里需要特别注意,因为会有一些符号在命令行中需要转义的地址,也就是加\,所以建议先复制到终端,终端会自动转义地址,将转义后的命令复制到servicecronrestart#需要修改后要重启服务,否则以上不会生效意思是每天20:25定时执行以下命令。更详细的可以去文档中设置定时任务。有可能失败。主要问题是您自己设置的命令。可能是没有使用绝对路径,没有转义等原因。您可以在Linux上启用cron日志以方便故障排除。下面是打开cron日志的方法,最后一个日志在/var/log/cron.logsudovim/etc/rsyslog.d/50-default.confcron.*/var/log/cron.log#Thecron前面的注释去掉sudoservicersyslogrestart#restartrsyslogsudoservicecronrestart#restartcron最后查看文件修改日期,可以发现定时任务已经准时运行了7.本文总结的最终结果是设置四命令,只能通过命令控制clash软件clash:启动clash软件unclash:关闭clash软件proxy:修改终端配置unproxy:关闭终端配置,实现clash自启动并自动更新配置文件.提示:ps-ef|grepclash:检查calsh是否在运行~/.config/clash/config.yaml:clashcrontab的配置文件-e:Scheduler(注意:加sudo和不加sudo是不一样的)/var/log/cron.log:cronlogfileservicecronrestart:定时器重启(修改配置文件后需要重启)/etc/rc.local:systemctlstatusrc-local:rc-local的运行状态
