O problema não foi cron mas shell=True
.
Aparentemente, ao usar shell=True
, o popen espera uma única string e não uma lista.
Então, quando atualizei minha ligação para:
proc = subprocess.Popen(['service ' + name + ' status'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
tudo funcionou.