You could check global $user -- cron runs as anon. You could also check lock_acquire('cron', 240.0), which indicates cron is running.
I've been chasing the most annoying issue. I have a module that fires off XML when a video node is updated, in order to prepare the advertising that plays prior the video. The issue was that this process seemed to he inconsistent, and it turns out that a cron job that updates the Facebook 'likes' data is doing node saves, which triggers nodeapi with op=update just like saving a node via the node form.I thought of adding a hidden field to the node form and testing for it, but I was wondering if there is an easier way to determine what is firing the hook, batch or user, process, something?Jeff