ubuntu安装clash

一、环境

  • 系统版本:Ubuntu 24.04
  • clash版本:2.0.24_linux_amd64

二、安装

Github下载连接:https://github.com/DustinWin/proxy-tools/releases/tag/Clash-Premium

  1. 解压下载的压缩包
  2. 解压完成后,直接执行 ./clash 二进制文件;执行成功后会在当前用户目录的./config下生成一个clash目录:/home/ubuntu/.config/clash,会自动生成 config.yaml 文件,现在这个文件除了有一个端口配置,是没有其他内容的,clash需要能够正常使用还得继续配置你购买的节点服务。
  3. 如果执行 ./clash 二进制文件出现了,Country.mmdb文件下载错误,可以手动下载然后上传至~/.config/clash目录下。
  4. config.yaml配置购买的节点,这个得看你购买的节点,他们提供了什么方式来生成config.yaml,正常他们会提供文档给你,告诉你怎么去生成config.yaml文件;
  5. 配置完成后再次执行./clash,就可以正常使用了。
#!/bin/bash

# 定义 Clash 可执行文件路径和配置目录
CLASH_PATH="/home/ubuntu/clash/clash"
CLASH_CONFIG_DIR="/home/ubuntu/.config/clash"

# 检查 Clash 是否正在运行
is_clash_running() {
    # 使用 netstat 检查端口是否被占用
    netstat -tuln | grep ":7890 " > /dev/null 2>&1
    local netstat_result=$?
    
    # 使用 pgrep 检查进程是否存在
    pgrep -f "$CLASH_PATH" > /dev/null 2>&1
    local pgrep_result=$?
    
    # 如果任意一个检查通过,则认为 Clash 正在运行
    if [ $netstat_result -eq 0 ] || [ $pgrep_result -eq 0 ]; then
        return 0
    else
        return 1
    fi
}

# 启动 Clash
start_clash() {
    if is_clash_running; then
        echo "Clash 已经在运行。"
    else
        echo "正在启动 Clash..."
        nohup "$CLASH_PATH" -d "$CLASH_CONFIG_DIR" > /dev/null 2>&1 &
        
        # 等待 2 秒以确保进程启动
        sleep 2
        
        if is_clash_running; then
            echo "Clash 已成功启动。"
        else
            echo "启动 Clash 失败,请检查日志或配置文件。"
        fi
    fi
}

# 停止 Clash
stop_clash() {
    if is_clash_running; then
        echo "正在停止 Clash..."
        local max_attempts=3
        local attempt=1
        
        while [ $attempt -le $max_attempts ]; do
            pkill -f "$CLASH_PATH"
            sleep 2  # 等待 2 秒
            
            if ! is_clash_running; then
                echo "Clash 已成功停止。"
                return
            fi
            
            ((attempt++))
        done
        
        echo "停止 Clash 失败,请手动检查并终止相关进程。"
    else
        echo "Clash 没有在运行。"
    fi
}

# 查看 Clash 运行状态
status_clash() {
    if is_clash_running; then
        echo "Clash 正在运行。"
    else
        echo "Clash 没有在运行。"
    fi
}

# 根据命令行参数执行相应操作
case "$1" in
    start)
        start_clash
        ;;
    stop)
        stop_clash
        ;;
    status)
        status_clash
        ;;
    *)
        echo "用法: $0 {start|stop|status}"
        exit 1
        ;;
esac

exit 0
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。