If it works well from the command line, but is giving you trouble when you execute it in some other way, it's frequently an environmental issue. A couple things to check:
- Does the account you're running it from have permissions to access/execute everything?
- Starting an account without using login (such as when running from cron) frequently has a different PATH and other environment variables set up. I typically print a copy of all the %ENV values when debugging problems like this.
When your only tool is a hammer, all problems look like your thumb.