Logrotate é realmente a ferramenta para este trabalho, mas se você não pode usá-lo, você pode usar find
e -ctime
patameter
find /var/logs/httpd/my.example.host.com/ -ctime +0 -not -name '*.gz' -exec gzip {} \;
deve fazer o que quiser, pois encontra arquivos que foram alterados > 24 horas atrás que já não foram compactados e compactados.
Para garantir que o arquivo em que você está trabalhando ainda não esteja aberto, você pode fazer algo como
#!/bin/bash
for file in $(find /var/logs/httpd/my.example.host.com/ -ctime +0 -not -name '*.gz')
do
lsof | grep $file
if [$? -eq 1 ]
then
gzip $file
fi
done