@@ -42,7 +42,7 @@ if [ -z "$CURRENT_USER" ]; then
4242 exit 1
4343fi
4444
45- # 定义配置文件路径 (Linux 路径)
45+ # 定义配置文件路径 (修改为 Linux 路径)
4646STORAGE_FILE=" /home/$CURRENT_USER /.config/Cursor/User/globalStorage/storage.json"
4747BACKUP_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# 备份配置文件
110116backup_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# 生成新的配置
142154generate_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() {
202236show_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