I've always had trouble with gvfsd-metadata. Not that I know what it actually is, I just know that once or twice a day my computer will become unresponsive, and the culprit is this little program running around in the background, doing whatever it does, and pegging my CPU up to 100%. I've searched many forums. A lot of people are affected, but there doesn't really seem to be any solution, or any clear reasons why it happens.
So what I usually do is open up a Terminal, run top and see that gvfsd-metadata is at the top of the list redlining my CPU. From there, I press k to kill it (if its the topmost item, its PID will be automatically selected, otherwise enter the PID manually), and then retain the suggested kill signal value of 15. Not a terribly hard process, but as the CPU is maxed out, then opening a Terminal window and top can take a few minutes. Its that sluggish. So, like you do, I whipped up a quick script to handle this automatically, which I run every 5 minutes. So here it is:
#!/bin/bash export DISPLAY=:0 # Find PID of gvfsd GPID=`pidof gvfsd-metadata` # Get the current CPU% of gvfsd GCPU=`top -b -n 1 -p $GPID | tail -n 1 | awk '{print $9}'` # Uncomment the line below to debug # GCPU=7 # Test if CPU is greater than 5%? if [ "$(echo $GCPU '>' 5 | bc -l)" = 1 ] then # Put a line in syslog logger "gvfsd-metadata on PID $GPID is running at $GCPU percent CPU, which is more than 5%. Killing." kill -9 $GPID # Flash a message onscreen /usr/bin/zenity --info --text="Just killed a rampant GVFSD, Sir\!" --title="Gotcha" else exit 0 fi
OK, that's pretty much it. I added it to my crontab (gvfsd runs as the user, so no need for root crontab), and set it to go every 5 minutes.
*/5 * * * * /home/me/scripts/killgvfsd.sh