最近换了新公司,然后换了新电脑。但是换了新电脑之后每过三四天整个电脑就会卡的要命。 具体表现为: 一旦有新的动作发生(例如切换 APP ),动作很慢,大概要等 5 分钟左右才会切换到另外一个 app 的窗口。曾经一度以为是内存的问题,因为发生后,切换 app 异常困难,打开活动监视器也是很慢,想要定位到是谁的问题,十分麻烦。所以每次都是重启解决。经过三四天问题又回重现。
昨天又出现了同样的问题,但是不一样的是这次我发现输入法的选词界面卡在了那里,所以猜想是否是输入法的问题。耐住性子打开资源管理器,找到了“简体中文输入方式”未响应,另外 CPU 占用到了 90%+。然后强制退出后 CPU 占用恢复正常,也不再卡顿了。重新切换输入法,简体中文输入方式进程会重新启动,不再卡顿。
苹果的输入法总是有各种各样的问题,原来也看到有人遇到用久了会卡顿的问题,加上双拼用的人比较少,用苹果自带输入法的双拼的更少了,所以网上页查不到资料。
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")
由于最近 MacOS 更新引入了快捷指令,通过快捷指令在菜单栏里面可以直接通过点击终止掉中文输入法,相比本来输入法就卡死的情况下再在终端输入命令的方式方便更多。附上我写的快捷指令,放到 macOS 快捷指令-菜单栏文件夹就行啦。 https://www.icloud.com/shortcuts/b08cb7c0cb58431aba0efcabec13d447
我居然什么都不用改,直接就能用,下岗倒计时了😭 稍稍修改了下,kill 改成了 kill -9
好的,如果您只需要每分钟执行一次脚本而不保存日志,您可以使用 cron
定时任务来实现。以下是更新后的脚本,不保存日志:
#!/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
定时任务来每分钟执行脚本。运行以下命令以编辑定时任务:
crontab -e
在打开的编辑器中,添加以下行来设置每分钟执行脚本的定时任务:
* * * * * /bin/bash /path/to/your/script.sh
请将 /path/to/your/script.sh
替换为脚本的实际路径。
保存并退出编辑器。现在,每分钟脚本将执行一次,不会保存日志。
希望这次修改符合您的需求。如有任何其他问题,请随时提问!
1
Andreas8 2022-11-30 15:53:41 +08:00 via iPhone
我是在 safari 用简拼的时候会卡住,用其他浏览器没问题
|
2
kaz10025 2022-11-30 15:59:46 +08:00
现在遇到的是 盒盖后就死机 能切换 app 但是鼠标转圈 只能强制重启
|
3
tobemaster 2022-12-01 10:03:17 +08:00 1
一模一样的情况,脚本可以优化一下
```bash kill `pgrep SCIM` ``` 不是双拼的问题,只要是中文输入法,甚至是繁体中文,都有人遇到过 |
4
coderbean OP @tobemaster 想问一下,怎么让反括号的内容每次都执行。我现在是放到了 alias 里面了,执行过一次,反括号里面的进程名就被写进一个临时变量了,下次再执行不会获取最新的进程好
|
5
coderbean OP 最终的 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 |
6
tobemaster 2022-12-01 14:45:39 +08:00
```bash
kill -9 `pgrep SCIM` ``` 加了-9 ,强制杀死进程,后面每次获取的就是新的 pid 了 |
7
SakuraYuki 2022-12-19 19:48:24 +08:00
全拼也会卡
|
8
coderbean OP 由于最近 MacOS 更新引入了快捷指令,通过快捷指令在菜单栏里面可以直接通过点击终止掉中文输入法,相比本来输入法就卡死的情况下再在终端输入命令的方式方便更多。附上我写的快捷指令,放到 macOS 快捷指令-菜单栏文件夹就行啦。
https://www.icloud.com/shortcuts/b08cb7c0cb58431aba0efcabec13d447 [![pCm3Lse.png]( https://s1.ax1x.com/2023/06/13/pCm3Lse.png)]( https://imgse.com/i/pCm3Lse) |
9
coderbean OP # 找 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` 替换为脚本的实际路径。 保存并退出编辑器。现在,每分钟脚本将执行一次,不会保存日志。 希望这次修改符合您的需求。如有任何其他问题,请随时提问! |