关于 MacOS 因为自带双拼输入法引起系统卡死的问题

2022-11-30 14:37:35 +08:00
 coderbean

我的电脑

问题描述

最近换了新公司,然后换了新电脑。但是换了新电脑之后每过三四天整个电脑就会卡的要命。 具体表现为: 一旦有新的动作发生(例如切换 APP ),动作很慢,大概要等 5 分钟左右才会切换到另外一个 app 的窗口。曾经一度以为是内存的问题,因为发生后,切换 app 异常困难,打开活动监视器也是很慢,想要定位到是谁的问题,十分麻烦。所以每次都是重启解决。经过三四天问题又回重现。

问题解决

昨天又出现了同样的问题,但是不一样的是这次我发现输入法的选词界面卡在了那里,所以猜想是否是输入法的问题。耐住性子打开资源管理器,找到了“简体中文输入方式”未响应,另外 CPU 占用到了 90%+。然后强制退出后 CPU 占用恢复正常,也不再卡顿了。重新切换输入法,简体中文输入方式进程会重新启动,不再卡顿。

复盘

  1. 同样的问题,别人用的搜狗输入法没有遇到
  2. 同样的问题,别人用的自带全拼输入法没有遇到
  3. 同样的问题,在上一个版本的 macOS 中也遇到了
  4. 目前写了一个脚本,快速杀掉“简体中文输入方式”进程,以后再遇到问题可以通过 kpy 快速解决了

吐槽

苹果的输入法总是有各种各样的问题,原来也看到有人遇到用久了会卡顿的问题,加上双拼用的人比较少,用苹果自带输入法的双拼的更少了,所以网上页查不到资料。

附上脚本

alias kpy="kill -9 `ps -ef | grep SCIM_Extension | grep -v grep | awk '{print $2}'`"

“简体中文输入方式”对应的进程名是

/System/Library/Input Methods/SCIM.app/Contents/PlugIns/SCIM_Extension.appex/Contents/MacOS/SCIM_Extension -AppleLanguages ("zh-Hans-CN", "en-CN")
1662 次点击
所在节点    Apple
9 条回复
Andreas8
2022-11-30 15:53:41 +08:00
我是在 safari 用简拼的时候会卡住,用其他浏览器没问题
kaz10025
2022-11-30 15:59:46 +08:00
现在遇到的是 盒盖后就死机 能切换 app 但是鼠标转圈 只能强制重启
tobemaster
2022-12-01 10:03:17 +08:00
一模一样的情况,脚本可以优化一下
```bash
kill `pgrep SCIM`
```
不是双拼的问题,只要是中文输入法,甚至是繁体中文,都有人遇到过
coderbean
2022-12-01 14:30:36 +08:00
@tobemaster 想问一下,怎么让反括号的内容每次都执行。我现在是放到了 alias 里面了,执行过一次,反括号里面的进程名就被写进一个临时变量了,下次再执行不会获取最新的进程好
coderbean
2022-12-01 14:45:01 +08:00
最终的 alias 语句
```
alias kpy='kill -9 $(pgrep SCIM)'
```
原来单引号和双引号还不一样,双引号里面的 subshell 执行结果会暂存然后替换,单引号不会
https://unix.stackexchange.com/questions/288506/how-to-save-an-alias-of-an-eval-other-comand-command
tobemaster
2022-12-01 14:45:39 +08:00
```bash
kill -9 `pgrep SCIM`
```
加了-9 ,强制杀死进程,后面每次获取的就是新的 pid 了
SakuraYuki
2022-12-19 19:48:24 +08:00
全拼也会卡
coderbean
320 天前
由于最近 MacOS 更新引入了快捷指令,通过快捷指令在菜单栏里面可以直接通过点击终止掉中文输入法,相比本来输入法就卡死的情况下再在终端输入命令的方式方便更多。附上我写的快捷指令,放到 macOS 快捷指令-菜单栏文件夹就行啦。
https://www.icloud.com/shortcuts/b08cb7c0cb58431aba0efcabec13d447
[![pCm3Lse.png]( https://s1.ax1x.com/2023/06/13/pCm3Lse.png)]( https://imgse.com/i/pCm3Lse)
coderbean
173 天前
# 找 GPT 写个 shell 脚本
> 我居然什么都不用改,直接就能用,下岗倒计时了😭
> 稍稍修改了下,kill 改成了 kill -9


好的,如果您只需要每分钟执行一次脚本而不保存日志,您可以使用 `cron` 定时任务来实现。以下是更新后的脚本,不保存日志:

```bash
#!/bin/bash

# 检测简体中文输入法进程的 CPU 占用情况
process_name="SCIM" # 输入法进程的名称
cpu_threshold=90 # CPU 占用阈值,超过该值则杀掉进程

# 获取进程 ID 和 CPU 占用情况
process_id=$(pgrep "$process_name")
cpu_usage=$(ps -p "$process_id" -o pcpu=)

# 检查 CPU 占用是否超过阈值
if (( $(echo "$cpu_usage > $cpu_threshold" | bc -l) )); then
echo "$(date) - CPU 占用超过 $cpu_threshold%,杀掉进程 $process_name (PID: $process_id)"
kill -9 "$process_id"
else
echo "$(date) - CPU 占用正常,无需操作"
fi
```

请确保在脚本中将 `process_name` 和 `cpu_threshold` 变量的值修改为您所需的值。

接下来,您可以使用 `cron` 定时任务来每分钟执行脚本。运行以下命令以编辑定时任务:

```bash
crontab -e
```

在打开的编辑器中,添加以下行来设置每分钟执行脚本的定时任务:

```
* * * * * /bin/bash /path/to/your/script.sh
```

请将 `/path/to/your/script.sh` 替换为脚本的实际路径。

保存并退出编辑器。现在,每分钟脚本将执行一次,不会保存日志。

希望这次修改符合您的需求。如有任何其他问题,请随时提问!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/899080

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX