systemctl
parece não ter um mecanismo para especificar quando colorir a saída. Uma solução rápida seria calçar isatty(3)
para sempre retornar verdadeiro, enganando-se assim, systemctl
pensando que stdout é interativo. Ou seja, você poderia fazer:
# echo "int isatty(int fd) { return 1; }" | gcc -O2 -fpic -shared -ldl -o isatty.so -xc -
# LD_PRELOAD=./isatty.so watch -n300 --color systemctl status plexmediaserver
O -xc -
no final do gcc
comando diz gcc
para compilar o código C ( -xc
) a partir de stdin ( -
). O restante dos sinalizadores informa gcc
para criar um arquivo de objeto compartilhado chamado isatty.so
. Observe que isso pode muito bem interromper outros programas que dependem isatty
para retornar um valor legítimo. No entanto, parece estar bem, systemctl
pois isatty
parece ser usado apenas com o objetivo de determinar se deve colorir sua saída.