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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。