Re: Weird shell script behavior in a cron job
On Wed 30 Aug 2017 at 11:07:36 (-0700), James H. H. Lampert wrote:
> Can somebody explain this:
>
> My backup script WILL detect that ExternalHD is not mounted, and
> attempt to mount it, if I run it manually.
>
> But it WON'T do that if it runs in a cron job.
>
> I've isolated the relevant code into its own script, added debugging
> output, and set it up to run every minute. Here's the test script:
> >#!
> >date >> ~/test.txt
> >pwd >> ~/test.txt
> >cd /media/ExternalHD/Backups
> >if [ "$?" = "1" ]; then
> > echo "mounting" >> ~/test.txt
> > mount /media/ExternalHD >> ~/test.txt
> > cd /media/ExternalHD/Backups
> >fi
> >pwd >> ~/test.txt
>
> Here is what I get when the cron job trips, and ExternalHD is not mounted:
> >Wed Aug 30 10:49:01 PDT 2017
> >/root
> >/root
> >Wed Aug 30 10:50:01 PDT 2017
> >/root
> >/root
> . . .
> >Wed Aug 30 10:55:01 PDT 2017
> >/root
> >/root
>
> and here is what I get when I run the script from a command line:
> >Wed Aug 30 10:55:07 PDT 2017
> >/root
> >mounting
> >/media/ExternalHD/Backups
>
> Why would the behavior be any different? Could it be that cron is
> running it an entirely different shell, that doesn't understand the
> "if" statement? Here's the crontab line:
> >* * * * * ~/test.sh
Yes, man 5 crontab documents exactly that.
Cheers,
David.
Reply to: