mirror of
https://github.com/yuaotian/go-cursor-help.git
synced 2025-06-08 12:32:06 +08:00
Refactor cursor_linux_id_modifier.sh for improved process handling and error checking
- Enhanced the method for identifying and terminating Cursor processes to ensure more accurate detection. - Added error handling for missing commands and file permissions when backing up configuration files. - Improved comments for clarity and consistency in the script's functionality. - Updated the public account name in output messages for consistency across platforms.
This commit is contained in:
parent
5b525c1294
commit
46cf8ac78f
@ -42,7 +42,7 @@ if [ -z "$CURRENT_USER" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 定义配置文件路径 (Linux 路径)
|
# 定义配置文件路径 (修改为 Linux 路径)
|
||||||
STORAGE_FILE="/home/$CURRENT_USER/.config/Cursor/User/globalStorage/storage.json"
|
STORAGE_FILE="/home/$CURRENT_USER/.config/Cursor/User/globalStorage/storage.json"
|
||||||
BACKUP_DIR="/home/$CURRENT_USER/.config/Cursor/User/globalStorage/backups"
|
BACKUP_DIR="/home/$CURRENT_USER/.config/Cursor/User/globalStorage/backups"
|
||||||
|
|
||||||
@ -66,11 +66,12 @@ check_and_kill_cursor() {
|
|||||||
get_process_details() {
|
get_process_details() {
|
||||||
local process_name="$1"
|
local process_name="$1"
|
||||||
log_debug "正在获取 $process_name 进程详细信息:"
|
log_debug "正在获取 $process_name 进程详细信息:"
|
||||||
ps aux | grep -i "$process_name" | grep -v grep
|
ps aux | grep -E "/[C]ursor|[C]ursor$" || true
|
||||||
}
|
}
|
||||||
|
|
||||||
while [ $attempt -le $max_attempts ]; do
|
while [ $attempt -le $max_attempts ]; do
|
||||||
CURSOR_PIDS=$(pgrep -i "cursor" || true)
|
# 使用更精确的方式查找 Cursor 进程
|
||||||
|
CURSOR_PIDS=$(ps aux | grep -E "/[C]ursor|[C]ursor$" | awk '{print $2}' || true)
|
||||||
|
|
||||||
if [ -z "$CURSOR_PIDS" ]; then
|
if [ -z "$CURSOR_PIDS" ]; then
|
||||||
log_info "未发现运行中的 Cursor 进程"
|
log_info "未发现运行中的 Cursor 进程"
|
||||||
@ -78,36 +79,47 @@ check_and_kill_cursor() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
log_warn "发现 Cursor 进程正在运行"
|
log_warn "发现 Cursor 进程正在运行"
|
||||||
get_process_details "cursor"
|
get_process_details "Cursor"
|
||||||
|
|
||||||
log_warn "尝试关闭 Cursor 进程..."
|
log_warn "尝试关闭 Cursor 进程..."
|
||||||
|
|
||||||
if [ $attempt -eq $max_attempts ]; then
|
# 遍历每个 PID 并尝试终止
|
||||||
log_warn "尝试强制终止进程..."
|
for pid in $CURSOR_PIDS; do
|
||||||
kill -9 $CURSOR_PIDS 2>/dev/null || true
|
if [ $attempt -eq $max_attempts ]; then
|
||||||
else
|
log_warn "尝试强制终止进程 PID: ${pid}..."
|
||||||
kill $CURSOR_PIDS 2>/dev/null || true
|
kill -9 "${pid}" 2>/dev/null || true
|
||||||
fi
|
else
|
||||||
|
kill "${pid}" 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
sleep 1
|
sleep 2
|
||||||
|
|
||||||
if ! pgrep -i "cursor" > /dev/null; then
|
# 检查是否还有 Cursor 进程在运行
|
||||||
|
if ! ps aux | grep -E "/[C]ursor|[C]ursor$" > /dev/null; then
|
||||||
log_info "Cursor 进程已成功关闭"
|
log_info "Cursor 进程已成功关闭"
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
log_warn "等待进程关闭,尝试 $attempt/$max_attempts..."
|
log_warn "等待进程关闭,尝试 $attempt/$max_attempts..."
|
||||||
((attempt++))
|
((attempt++))
|
||||||
|
sleep 1
|
||||||
done
|
done
|
||||||
|
|
||||||
log_error "在 $max_attempts 次尝试后仍无法关闭 Cursor 进程"
|
log_error "在 $max_attempts 次尝试后仍无法关闭 Cursor 进程"
|
||||||
get_process_details "cursor"
|
get_process_details "Cursor"
|
||||||
log_error "请手动关闭进程后重试"
|
log_error "请手动关闭进程后重试"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# 备份配置文件
|
# 备份配置文件
|
||||||
backup_config() {
|
backup_config() {
|
||||||
|
# 检查文件权限
|
||||||
|
if [ -f "$STORAGE_FILE" ] && [ ! -w "$STORAGE_FILE" ]; then
|
||||||
|
log_error "无法写入配置文件,请检查权限"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
if [ ! -f "$STORAGE_FILE" ]; then
|
if [ ! -f "$STORAGE_FILE" ]; then
|
||||||
log_warn "配置文件不存在,跳过备份"
|
log_warn "配置文件不存在,跳过备份"
|
||||||
return 0
|
return 0
|
||||||
@ -140,25 +152,47 @@ generate_uuid() {
|
|||||||
|
|
||||||
# 生成新的配置
|
# 生成新的配置
|
||||||
generate_new_config() {
|
generate_new_config() {
|
||||||
local machine_id="auth0|user_$(generate_random_id)"
|
# 错误处理
|
||||||
|
if ! command -v xxd &> /dev/null; then
|
||||||
|
log_error "未找到 xxd 命令,请安装 xxd"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! command -v uuidgen &> /dev/null; then
|
||||||
|
log_error "未找到 uuidgen 命令,请安装 uuidgen"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 确保目录存在
|
||||||
|
mkdir -p "$(dirname "$STORAGE_FILE")"
|
||||||
|
|
||||||
|
# 将 auth0|user_ 转换为字节数组的十六进制
|
||||||
|
local prefix_hex=$(echo -n "auth0|user_" | xxd -p)
|
||||||
|
# 生成随机部分
|
||||||
|
local random_part=$(generate_random_id)
|
||||||
|
# 拼接前缀的十六进制和随机部分
|
||||||
|
local machine_id="${prefix_hex}${random_part}"
|
||||||
|
|
||||||
local mac_machine_id=$(generate_random_id)
|
local mac_machine_id=$(generate_random_id)
|
||||||
local device_id=$(generate_uuid | tr '[:upper:]' '[:lower:]')
|
local device_id=$(generate_uuid | tr '[:upper:]' '[:lower:]')
|
||||||
local sqm_id="{$(generate_uuid | tr '[:lower:]' '[:upper:]')}"
|
local sqm_id="{$(generate_uuid | tr '[:lower:]' '[:upper:]')}"
|
||||||
|
|
||||||
if [ -f "$STORAGE_FILE" ]; then
|
if [ -f "$STORAGE_FILE" ]; then
|
||||||
# 直接修改现有文件 (Linux sed 不需要 '')
|
# 直接修改现有文件
|
||||||
sed -i "s/\"telemetry\.machineId\":[[:space:]]*\"[^\"]*\"/\"telemetry.machineId\": \"$machine_id\"/" "$STORAGE_FILE"
|
sed -i -e "s/\"telemetry\.machineId\":[[:space:]]*\"[^\"]*\"/\"telemetry.machineId\": \"$machine_id\"/" "$STORAGE_FILE"
|
||||||
sed -i "s/\"telemetry\.macMachineId\":[[:space:]]*\"[^\"]*\"/\"telemetry.macMachineId\": \"$mac_machine_id\"/" "$STORAGE_FILE"
|
sed -i -e "s/\"telemetry\.macMachineId\":[[:space:]]*\"[^\"]*\"/\"telemetry.macMachineId\": \"$mac_machine_id\"/" "$STORAGE_FILE"
|
||||||
sed -i "s/\"telemetry\.devDeviceId\":[[:space:]]*\"[^\"]*\"/\"telemetry.devDeviceId\": \"$device_id\"/" "$STORAGE_FILE"
|
sed -i -e "s/\"telemetry\.devDeviceId\":[[:space:]]*\"[^\"]*\"/\"telemetry.devDeviceId\": \"$device_id\"/" "$STORAGE_FILE"
|
||||||
sed -i "s/\"telemetry\.sqmId\":[[:space:]]*\"[^\"]*\"/\"telemetry.sqmId\": \"$sqm_id\"/" "$STORAGE_FILE"
|
sed -i -e "s/\"telemetry\.sqmId\":[[:space:]]*\"[^\"]*\"/\"telemetry.sqmId\": \"$sqm_id\"/" "$STORAGE_FILE"
|
||||||
else
|
else
|
||||||
# 创建新文件
|
# 创建新文件
|
||||||
echo "{" > "$STORAGE_FILE"
|
cat > "$STORAGE_FILE" << EOF
|
||||||
echo " \"telemetry.machineId\": \"$machine_id\"," >> "$STORAGE_FILE"
|
{
|
||||||
echo " \"telemetry.macMachineId\": \"$mac_machine_id\"," >> "$STORAGE_FILE"
|
"telemetry.machineId": "$machine_id",
|
||||||
echo " \"telemetry.devDeviceId\": \"$device_id\"," >> "$STORAGE_FILE"
|
"telemetry.macMachineId": "$mac_machine_id",
|
||||||
echo " \"telemetry.sqmId\": \"$sqm_id\"" >> "$STORAGE_FILE"
|
"telemetry.devDeviceId": "$device_id",
|
||||||
echo "}" >> "$STORAGE_FILE"
|
"telemetry.sqmId": "$sqm_id"
|
||||||
|
}
|
||||||
|
EOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
chmod 644 "$STORAGE_FILE"
|
chmod 644 "$STORAGE_FILE"
|
||||||
@ -185,7 +219,7 @@ show_file_tree() {
|
|||||||
# 列出备份文件
|
# 列出备份文件
|
||||||
if [ -d "$BACKUP_DIR" ]; then
|
if [ -d "$BACKUP_DIR" ]; then
|
||||||
local backup_files=("$BACKUP_DIR"/*)
|
local backup_files=("$BACKUP_DIR"/*)
|
||||||
if [ ${#backup_files[@]} -gt 0 ]; then
|
if [ ${#backup_files[@]} -gt 0 ] && [ -e "${backup_files[0]}" ]; then
|
||||||
for file in "${backup_files[@]}"; do
|
for file in "${backup_files[@]}"; do
|
||||||
if [ -f "$file" ]; then
|
if [ -f "$file" ]; then
|
||||||
echo "│ └── $(basename "$file")"
|
echo "│ └── $(basename "$file")"
|
||||||
@ -202,7 +236,7 @@ show_file_tree() {
|
|||||||
show_follow_info() {
|
show_follow_info() {
|
||||||
echo
|
echo
|
||||||
echo -e "${GREEN}================================${NC}"
|
echo -e "${GREEN}================================${NC}"
|
||||||
echo -e "${YELLOW} 关注公众号【煎饼果子AI】一起交流更多Cursor技巧和AI知识 ${NC}"
|
echo -e "${YELLOW} 关注公众号【煎饼果子卷AI】一起交流更多Cursor技巧和AI知识 ${NC}"
|
||||||
echo -e "${GREEN}================================${NC}"
|
echo -e "${GREEN}================================${NC}"
|
||||||
echo
|
echo
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user