Skip to content

Commit 46cf8ac

Browse files
committed
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.
1 parent 5b525c1 commit 46cf8ac

File tree

1 file changed

+61
-27
lines changed

1 file changed

+61
-27
lines changed

scripts/run/cursor_linux_id_modifier.sh

Lines changed: 61 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ if [ -z "$CURRENT_USER" ]; then
4242
exit 1
4343
fi
4444

45-
# 定义配置文件路径 (Linux 路径)
45+
# 定义配置文件路径 (修改为 Linux 路径)
4646
STORAGE_FILE="/home/$CURRENT_USER/.config/Cursor/User/globalStorage/storage.json"
4747
BACKUP_DIR="/home/$CURRENT_USER/.config/Cursor/User/globalStorage/backups"
4848

@@ -66,48 +66,60 @@ check_and_kill_cursor() {
6666
get_process_details() {
6767
local process_name="$1"
6868
log_debug "正在获取 $process_name 进程详细信息:"
69-
ps aux | grep -i "$process_name" | grep -v grep
69+
ps aux | grep -E "/[C]ursor|[C]ursor$" || true
7070
}
7171

7272
while [ $attempt -le $max_attempts ]; do
73-
CURSOR_PIDS=$(pgrep -i "cursor" || true)
73+
# 使用更精确的方式查找 Cursor 进程
74+
CURSOR_PIDS=$(ps aux | grep -E "/[C]ursor|[C]ursor$" | awk '{print $2}' || true)
7475

7576
if [ -z "$CURSOR_PIDS" ]; then
7677
log_info "未发现运行中的 Cursor 进程"
7778
return 0
7879
fi
7980

8081
log_warn "发现 Cursor 进程正在运行"
81-
get_process_details "cursor"
82+
get_process_details "Cursor"
8283

8384
log_warn "尝试关闭 Cursor 进程..."
8485

85-
if [ $attempt -eq $max_attempts ]; then
86-
log_warn "尝试强制终止进程..."
87-
kill -9 $CURSOR_PIDS 2>/dev/null || true
88-
else
89-
kill $CURSOR_PIDS 2>/dev/null || true
90-
fi
86+
# 遍历每个 PID 并尝试终止
87+
for pid in $CURSOR_PIDS; do
88+
if [ $attempt -eq $max_attempts ]; then
89+
log_warn "尝试强制终止进程 PID: ${pid}..."
90+
kill -9 "${pid}" 2>/dev/null || true
91+
else
92+
kill "${pid}" 2>/dev/null || true
93+
fi
94+
done
9195

92-
sleep 1
96+
sleep 2
9397

94-
if ! pgrep -i "cursor" > /dev/null; then
98+
# 检查是否还有 Cursor 进程在运行
99+
if ! ps aux | grep -E "/[C]ursor|[C]ursor$" > /dev/null; then
95100
log_info "Cursor 进程已成功关闭"
96101
return 0
97102
fi
98103

99104
log_warn "等待进程关闭,尝试 $attempt/$max_attempts..."
100105
((attempt++))
106+
sleep 1
101107
done
102108

103109
log_error "$max_attempts 次尝试后仍无法关闭 Cursor 进程"
104-
get_process_details "cursor"
110+
get_process_details "Cursor"
105111
log_error "请手动关闭进程后重试"
106112
exit 1
107113
}
108114

109115
# 备份配置文件
110116
backup_config() {
117+
# 检查文件权限
118+
if [ -f "$STORAGE_FILE" ] && [ ! -w "$STORAGE_FILE" ]; then
119+
log_error "无法写入配置文件,请检查权限"
120+
exit 1
121+
fi
122+
111123
if [ ! -f "$STORAGE_FILE" ]; then
112124
log_warn "配置文件不存在,跳过备份"
113125
return 0
@@ -140,25 +152,47 @@ generate_uuid() {
140152

141153
# 生成新的配置
142154
generate_new_config() {
143-
local machine_id="auth0|user_$(generate_random_id)"
155+
# 错误处理
156+
if ! command -v xxd &> /dev/null; then
157+
log_error "未找到 xxd 命令,请安装 xxd"
158+
exit 1
159+
fi
160+
161+
if ! command -v uuidgen &> /dev/null; then
162+
log_error "未找到 uuidgen 命令,请安装 uuidgen"
163+
exit 1
164+
fi
165+
166+
# 确保目录存在
167+
mkdir -p "$(dirname "$STORAGE_FILE")"
168+
169+
# 将 auth0|user_ 转换为字节数组的十六进制
170+
local prefix_hex=$(echo -n "auth0|user_" | xxd -p)
171+
# 生成随机部分
172+
local random_part=$(generate_random_id)
173+
# 拼接前缀的十六进制和随机部分
174+
local machine_id="${prefix_hex}${random_part}"
175+
144176
local mac_machine_id=$(generate_random_id)
145177
local device_id=$(generate_uuid | tr '[:upper:]' '[:lower:]')
146178
local sqm_id="{$(generate_uuid | tr '[:lower:]' '[:upper:]')}"
147179

148180
if [ -f "$STORAGE_FILE" ]; then
149-
# 直接修改现有文件 (Linux sed 不需要 '')
150-
sed -i "s/\"telemetry\.machineId\":[[:space:]]*\"[^\"]*\"/\"telemetry.machineId\": \"$machine_id\"/" "$STORAGE_FILE"
151-
sed -i "s/\"telemetry\.macMachineId\":[[:space:]]*\"[^\"]*\"/\"telemetry.macMachineId\": \"$mac_machine_id\"/" "$STORAGE_FILE"
152-
sed -i "s/\"telemetry\.devDeviceId\":[[:space:]]*\"[^\"]*\"/\"telemetry.devDeviceId\": \"$device_id\"/" "$STORAGE_FILE"
153-
sed -i "s/\"telemetry\.sqmId\":[[:space:]]*\"[^\"]*\"/\"telemetry.sqmId\": \"$sqm_id\"/" "$STORAGE_FILE"
181+
# 直接修改现有文件
182+
sed -i -e "s/\"telemetry\.machineId\":[[:space:]]*\"[^\"]*\"/\"telemetry.machineId\": \"$machine_id\"/" "$STORAGE_FILE"
183+
sed -i -e "s/\"telemetry\.macMachineId\":[[:space:]]*\"[^\"]*\"/\"telemetry.macMachineId\": \"$mac_machine_id\"/" "$STORAGE_FILE"
184+
sed -i -e "s/\"telemetry\.devDeviceId\":[[:space:]]*\"[^\"]*\"/\"telemetry.devDeviceId\": \"$device_id\"/" "$STORAGE_FILE"
185+
sed -i -e "s/\"telemetry\.sqmId\":[[:space:]]*\"[^\"]*\"/\"telemetry.sqmId\": \"$sqm_id\"/" "$STORAGE_FILE"
154186
else
155187
# 创建新文件
156-
echo "{" > "$STORAGE_FILE"
157-
echo " \"telemetry.machineId\": \"$machine_id\"," >> "$STORAGE_FILE"
158-
echo " \"telemetry.macMachineId\": \"$mac_machine_id\"," >> "$STORAGE_FILE"
159-
echo " \"telemetry.devDeviceId\": \"$device_id\"," >> "$STORAGE_FILE"
160-
echo " \"telemetry.sqmId\": \"$sqm_id\"" >> "$STORAGE_FILE"
161-
echo "}" >> "$STORAGE_FILE"
188+
cat > "$STORAGE_FILE" << EOF
189+
{
190+
"telemetry.machineId": "$machine_id",
191+
"telemetry.macMachineId": "$mac_machine_id",
192+
"telemetry.devDeviceId": "$device_id",
193+
"telemetry.sqmId": "$sqm_id"
194+
}
195+
EOF
162196
fi
163197

164198
chmod 644 "$STORAGE_FILE"
@@ -185,7 +219,7 @@ show_file_tree() {
185219
# 列出备份文件
186220
if [ -d "$BACKUP_DIR" ]; then
187221
local backup_files=("$BACKUP_DIR"/*)
188-
if [ ${#backup_files[@]} -gt 0 ]; then
222+
if [ ${#backup_files[@]} -gt 0 ] && [ -e "${backup_files[0]}" ]; then
189223
for file in "${backup_files[@]}"; do
190224
if [ -f "$file" ]; then
191225
echo "│ └── $(basename "$file")"
@@ -202,7 +236,7 @@ show_file_tree() {
202236
show_follow_info() {
203237
echo
204238
echo -e "${GREEN}================================${NC}"
205-
echo -e "${YELLOW} 关注公众号【煎饼果子AI】一起交流更多Cursor技巧和AI知识 ${NC}"
239+
echo -e "${YELLOW} 关注公众号【煎饼果子卷AI】一起交流更多Cursor技巧和AI知识 ${NC}"
206240
echo -e "${GREEN}================================${NC}"
207241
echo
208242
}

0 commit comments

Comments
 (0)