Você deve usar o grep com o --line-buffered
flag, caso contrário o grep sai após a primeira partida. Eu não tenho uma explicação completa e qualificada para isso, mas foi isso que fez meu script funcionar em um caso semelhante.
Encontrou esta resposta no buffer de linha do grep.
Instalar um cronjob como usuário root com htop pode resultar em uma mensagem de erro:
/usr/bin/htop -C Error opening terminal: unknown
A definição de TERM=xterm
no script pode resolver este problema.