← til

Stopping the fans with a script

November 19, 2019
unix

I find it irritating when fans on my laptop start spinning out of control, especially if it's caused by something non-critical or running in the background.

I caught myself going to htop regularly in order to find out what process is slamming the CPU and then SIGKILL it by pressing F9 and then 9.

That's why I decided to write a script that just kills the relevant process and therefore silences the fans. No htop necessary.

#! /usr/bin/env bash

# Silences the fans of your computer. Kills processes
# which use more than threshold percent
# of your CPU.

# The default threshold, processes using more than
# this percentage of the CPU will be killed with
# SIGKILL.
threshold=90

# List PID, CPU percentage and command name.
ps -eo pid,%cpu,args |
  # Filter processes that are above the threshold.
  awk -v threshold=$threshold '{if($2==$2+0 && $2 > threshold) print $1 " " $3}' |
    # Sort by CPU usage to kill the worst offenders first.
    sort -n |
      # # Kill the passed process and report it being killed.
      xargs -L1 bash -c 'kill -9 $0 && printf "killed: $1\n"'

Put it in your $PATH and call it with

$ silencio

In order to go full Harry Potter on your fans.


Did you like this article? You can follow me on Twitter or subscribe to the RSS feed if you'd like to follow along.