systemctl
tampaknya tidak memiliki mekanisme untuk menentukan kapan akan mewarnai output. Solusi cepat adalah shim isatty(3)
untuk selalu kembali benar, sehingga menipu systemctl
berpikir stdout bersifat interaktif. Yaitu yang bisa Anda lakukan:
# 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
Di -xc -
akhir gcc
perintah memberitahu gcc
untuk mengkompilasi kode C ( -xc
) dari stdin ( -
). Sisa flag memberi tahu gcc
untuk membuat file objek bersama bernama isatty.so
. Perhatikan bahwa ini bisa sangat merusak program lain yang mengandalkan isatty
untuk mengembalikan nilai yang sah. Itu namun tampaknya baik-baik saja untuk systemctl
sebagai isatty
muncul untuk semata-mata digunakan untuk tujuan menentukan apakah itu harus mewarnai output.