Linux安装clash
-
下载clash-linux安装包,传送门
-
下载
clash-linux-amd64-v1.17.0.gz
压缩包到本地 -
上传压缩包到服务器任意位置,这里以
/apps/work
为例 - 在服务器上解压压缩包,得到
clash-linux-amd64-v1.17.0
文件
gunzip clash-linux-amd64-v1.17.0.gz
- 给
clash-linux-amd64-v1.17.0
添加执行权限,并且创建软连接
chmod +x clash-linux-amd64-v1.17.0
ln -s $(pwd)/clash-linux-amd64-v1.17.0 /usr/bin/clash
- 切换到/usr/bin路径下,运行clash
cd /usr/bin
./clash
Clash 运行时需要
Country.mmdb
文件和config.yaml
,当第一次启动 Clash 时(使用 ./clash 命令)会自动下载(会下载至 /home/XXX/.config/clash 文件夹下),自动下载可能会因网络原因较慢,可以直接上github上下载,然后传到服务器上
-
将下载好的
Country.mmdb
文件移动到clash解压文件同级目录下 -
准备clash节点配置文件
config.yaml
,从订阅源down一个自己的节点配置文件下来,上传到clash解压文件同级目录下 - 编写脚本
start_service.sh
、stop_service.sh
、post_stop_service.sh
、pre_start_serivce.sh
,内容如下:
cat << EOF >> /apps/work/clash/post_stop_service.sh
#!/bin/bash
# 指定需要查找和修改的文件路径
file_path="/etc/profile"
# 使用 sed 命令将文件中包含 http://127.0.0.1:7890 的行注释掉
sed -i '/http:\/\/127.0.0.1:7890/ s/^/#/' "$file_path"
echo "注释完成"
source /etc/profile
EOF
cat << EOF >> /apps/work/clash/pre_start_serivce.sh
#!/bin/bash
# 指定需要查找和修改的文件路径
file_path="/etc/profile"
# 判断文件中是否包含 http://127.0.0.1:7890
if grep -q "http://127.0.0.1:7890" "$file_path"; then
# 如果存在,则判断是否被注释
if grep -q "#.*http://127.0.0.1:7890" "$file_path"; then
# 如果被注释,则取消注释
sed -i 's/^#\(.*http:\/\/127\.0\.0\.1:7890\)/\1/' "$file_path"
echo "已取消注释"
else
echo "已存在且未被注释"
fi
else
# 如果不存在,则添加 http://127.0.0.1:7890
echo "export http_proxy=http://127.0.0.1:7890" >> "$file_path"
echo "export https_proxy=http://127.0.0.1:7890" >> "$file_path"
echo "已添加"
fi
source /etc/profile
EOF
cat << EOF >> /apps/work/clash/start_service.sh
#!/bin/bash
# 修改启动路径
sudo clash -d /apps/work/clash
source /etc/profile
EOF
cat << EOF >> /apps/work/clash/stop_service.sh
#!/bin/bash
# 使用 pgrep 命令查找包含 "clash" 关键字的进程 ID
pids=$(pgrep -f "clash")
# 判断是否找到匹配的进程
if [ -n "$pids" ]; then
# 循环遍历进程 ID 并杀死对应进程
for pid in $pids; do
kill "$pid"
done
echo "已杀死进程"
else
echo "未找到匹配的进程"
fi
EOF
- 编写systemd 服务,将clash转变为系统服务
cat << EOF >> /etc/systemd/system/clash.service
[Unit]
Description=clash
[Service]
ExecStartPre=/apps/work/clash/pre_start_serivce.sh
ExecStart=/apps/work/clash/start_service.sh
ExecStop=/apps/work/clash/stop_service.sh
ExecStopPost=/apps/work/clash/post_stop_service.sh
[Install]
WantedBy=multi-user.target
EOF
- 最后剩下的就是看个人需不需要设定开机自启和启动systemd服务的命令了
# 设置开机自启
systemctl enable clash
# 开启clash
systemctl start clash
# 停止clash
systemctl stop clash
暂无评论