I have perl programs that use Net::Finger
and have run successfully from cron.daily
in Fedora 11.
I just upgraded a server to Fedora 18 and the
What happens if you add this to the top of the script?
#!/usr/bin/perl
use lib "/root/perl5/lib/perl5/Net";
Was this previously set in the .profile
?
This is from a ubuntu thread, but may be related: https://askubuntu.com/questions/23009/reasons-why-crontab-does-not-work *Cron passes a minimal set of environment variables to your jobs. To see the difference, add a dummy job like this:
* * * * * env > /tmp/env.output*
I don't have a linux box handy at the moment, but I would try to see what's different in the @INC by running the following logged in as root and trying to set up a job to see what the crontab has. The env
output above may indicate a different shell is being used by crontab, than what you may have set when logging in as root.
log in as root and run:
perl -le 'print for @INC'
set up a cron job to see the differences. I'm not sure if this syntax will work, but you could put the command in a simple pl script.
* * * * * perl -le 'print for @INC' > /tmp/inc.output
do the same for env
See perlfaq8.
Here are three ways to add arbitrary directories to Perl's module search path.
Set the PERL5LIB
environment variable
15 15 * * 1-5 PERL5LIB=/root/perl5/lib/perl5 /usr/local/bin/perl my_script.pl
Use the -I
command line switch
15 15 * * 1-5 /usr/local/bin/perl -I/root/perl5/lib/perl5 my_script.pl
Use the lib
pragma inside your perl script
#! /usr/local/bin/perl
# my_script.pl: the script that does my thing
use lib '/root/perl5/lib/perl5';
use Net::Finger;
...
Also note that the environment of a cron job is much sparser than the environment of your command line, and in particular the cron environment's $PATH
variable might not be what you expect. If you're not specifying the full path to the Perl executable, verify what $PATH
the cron environment is using and make sure you are running the right version of perl.