关于 MacOS 因为自带双拼输入法引起系统卡死的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
coderbean
V2EX    Apple

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

  •  
  •   coderbean 2022-11-30 14:37:35 +08:00 2461 次点击
    这是一个创建于 1112 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我的电脑

    • 芯片:Apple M1 Pro
    • 内存:32GB
    • 系统:macOS Ventura 13.0.1

    问题描述

    最近换了新公司,然后换了新电脑。但是换了新电脑之后每过三四天整个电脑就会卡的要命。 具体表现为: 一旦有新的动作发生(例如切换 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") 
    第 1 条附言    2023-06-13 16:35:47 +08:00

    由于最近 MacOS 更新引入了快捷指令,通过快捷指令在菜单栏里面可以直接通过点击终止掉中文输入法,相比本来输入法就卡死的情况下再在终端输入命令的方式方便更多。附上我写的快捷指令,放到 macOS 快捷指令-菜单栏文件夹就行啦。 https://www.icloud.com/shortcuts/b08cb7c0cb58431aba0efcabec13d447 通知

    第 2 条附言    2023-11-07 16:09:00 +08:00

    找GPT写个shell脚本

    我居然什么都不用改,直接就能用,下岗倒计时了 稍稍修改了下,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_namecpu_threshold 变量的值修改为您所需的值。

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

    crontab -e 

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

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

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

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

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

    9 条回复    2023-11-07 16:08:13 +08:00
    Andreas8
        1
    Andreas8  
       2022-11-30 15:53:41 +08:00 via iPhone
    我是在 safari 用简拼的时候会卡住,用其他浏览器没问题
    kaz10025
        2
    kaz10025  
       2022-11-30 15:59:46 +08:00
    现在遇到的是 盒盖后就死机 能切换 app 但是鼠标转圈 只能强制重启
    tobemaster56
        3
    tobemaster56  
       2022-12-01 10:03:17 +08:00   1
    一模一样的情况,脚本可以优化一下
    ```bash
    kill `pgrep SCIM`
    ```
    不是双拼的问题,只要是中文输入法,甚至是繁体中文,都有人遇到过
    coderbean
        4
    coderbean  
    OP
       2022-12-01 14:30:36 +08:00
    @tobemaster 想问一下,怎么让反括号的内容每次都执行。我现在是放到了 alias 里面了,执行过一次,反括号里面的进程名就被写进一个临时变量了,下次再执行不会获取最新的进程好
    coderbean
        5
    coderbean  
    OP
       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
    tobemaster56
        6
    tobemaster56  
       2022-12-01 14:45:39 +08:00
    ```bash
    kill -9 `pgrep SCIM`
    ```
    加了-9 ,强制杀死进程,后面每次获取的就是新的 pid 了
    SakuraYuki
        7
    SakuraYuki  
       2022-12-19 19:48:24 +08:00
    全拼也会卡
    coderbean
        8
    coderbean  
    OP
       2023-06-13 16:30:42 +08:00
    由于最近 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
        9
    coderbean  
    OP
       2023-11-07 16:08:13 +08:00
    # 找 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` 替换为脚本的实际路径。

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

    希望这次修符合您的需求。如有任何其他问题,请随时提问!
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     901 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 21:43 PVG 05:43 LAX 13:43 JFK 16:43
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86