日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

fcitx重启 linux_用脚本的方法解决fcitx占用大量cpu资源的问题

發布時間:2023/12/29 linux 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 fcitx重启 linux_用脚本的方法解决fcitx占用大量cpu资源的问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

以下使用腳本的方式解決fcitx在使用當中占用大量cpu資源的問題,同時附有兩個改進的代碼,可以選擇應用。本文的操作系統平臺是Deepin Linux。

背景

用搜狗輸入法的網友肯定有這樣的體驗:在使用過程中計算機風扇突然狂轉起來,然后打開系統監視器一看,發現一個名為fcitx-input-method的進程占用的大量的資源,必須要kill掉重啟才會正常。而出現這個問題的頻率其實很高,每次都要手動kill掉很麻煩。于是我寫了一個bash腳本,在后臺監視fcitx-input-mehtod,一旦它占用的cpu大于10%時,就認為出現了問題,腳本會自動把它kill掉,然后它會自動重啟,問題就解決了。

代碼如下

#!/bin/bash

PROCESS="fcitx"

PID=""

while [ ! $PID ]; do

PID=`pgrep $PROCESS | head -n 1`

done

while [[ 1 ]]; do

CPU=`top -b -p $PID -n 1 | tail -n 1 | awk '{print $9}'`

if [[ $CPU > 10.0 ]]; then

kill $PID

PID=""

while [ ! $PID ]; do

sleep 1

PID=`pgrep $PROCESS | head -n 1`

done

# else

# ? ? ? ? echo normal

fi

sleep 4

done

使用方法

把上面的代碼保存為bash或者sh格式,然后設置為開機自啟或者手動用nohup就能運行在后臺了。

附:改進代碼1

1.說明:把以上的代碼改進了下,不用寫systemd配置文件,直接配置一個.desktop放到~/.config/autostart/下,每次啟動就會自動運行了。

2.代碼如下

#!/bin/bash

PROCESS="fcitx"

PID=""

while [[ 1 ]]; do

while [ ! $PID ]; do

sleep 1

PID=$(pidof $PROCESS)

done

CPU=$(top -b -p $PID -n 1 | tail -n 1 | awk '{print $9}')

if [[ $CPU > 10.0 ]]; then

kill $PID

PID=""

fi

sleep 4

done

附:改進代碼2

1.CPU占用率一時的高還是可以接受的,因此需要增加一個判斷一段時間內的占用率都高的問題, 這里假定間隔時間1s,連續4次CPU占用率都高,才是真的需要kill掉。

2.代碼如下

#!/bin/bash

PROCESS="fcitx"

function get_pid_x { #process

PID=""

while [ ! $PID ]; do

PID=$(pidof $1)

sleep 1

done

echo $PID

}

function get_consume_cpu_process { #PID

echo $(top -b -p $1 -n 1 | tail -n 1 | awk '{print $9}')

}

pid=$(get_pid_x $PROCESS)

while [[ 1 ]]; do

#echo "the fcitx's pid is $pid"

#echo "the fcitx consumes $(get_consume_cpu_process $pid)%"

if [[ $(get_consume_cpu_process $pid) > 10.0 ]]; then

times=4

while [[ times > 0 ]]; do

sleep 1

times=$(($times-1))

if [[ $(get_consume_cpu_process $pid) < 10.0 ]]; then

break

elif [[ $(get_consume_cpu_process $pid) > 10.0 && times = 0 ]]; then

#echo "kill the process $pid."

kill $pid

pid=$(get_pid_x $PROCESS)

#else

#echo "not need to kill the process $pid"

fi

done

fi

sleep 4

done

相關主題

總結

以上是生活随笔為你收集整理的fcitx重启 linux_用脚本的方法解决fcitx占用大量cpu资源的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。