systemctlпо-видимому, не имеет механизма для указания, когда окрашивать вывод. Быстрое решение состоит в том, чтобы прокладка isatty(3)всегда возвращала истину, таким образом, обманчивый systemctlвывод в интерактивный режим. А именно вы могли бы сделать:
# 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
В -xc -конце gccкоманды указывается gccкомпилировать код C ( -xc) из stdin ( -). Остальные флаги говорят gccо создании общего объектного файла с именем isatty.so. Обратите внимание, что это может привести к поломке других программ, которые isattyвозвращают допустимое значение. Это , однако , как представляется , будет хорошо для , systemctlкак isattyпредставляется , будет использоваться исключительно для целей определения , если она должна окрашивать свою продукцию.