Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

Cron environment issues

Posted on 2014-04-29
11
Medium Priority
?
355 Views
Last Modified: 2014-04-30
In Ubuntu, I am having a lot of trouble running a script that uses a .pm module from crontab. When I try to do so, I get an error that reads:

Can't locate <perl_module>.pm in @INC (@INC contains:<list_of_directories_that_do_indeed_have_the_pm_file>)

I was wondering if it would be possible to get the crontab to run the script as a specific user, in their environment. The script works perfectly from he command line...
0
Comment
Question by:stakor
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
  • 2
  • +2
11 Comments
 
LVL 68

Expert Comment

by:woolmilkporc
ID: 40030554
In root's crontab (not /etc/crontab!) you can do:

* * * * * su - username -c /path/to/script ...
0
 
LVL 14

Expert Comment

by:Monis Monther
ID: 40030712
What user are you using to run the command? From that user

crontab -e

then as woolmilkporc suggested

* * * * * su - username -c /path/to/script
0
 
LVL 68

Expert Comment

by:woolmilkporc
ID: 40030721
Only root can do "su - username" without password.
0
NEW Veeam Agent for Microsoft Windows

Backup and recover physical and cloud-based servers and workstations, as well as endpoint devices that belong to remote users. Avoid downtime and data loss quickly and easily for Windows-based physical or public cloud-based workloads!

 
LVL 38

Expert Comment

by:Gerwin Jansen, EE MVE
ID: 40030738
You could call your .profile first, like this:

00 10 * * * /home/user/.profile ; /path/to/script
0
 

Author Comment

by:stakor
ID: 40031026
I tried the root path. I put in:

*/15 * * * * su -l <username> -c <command>

And, in a sureal turn of events, it is having the same error that I had in <username>'s crontab.

I am now trying the /home/<username>/.profile;<command>

idea. I'll post in about 20-25 min with how that works out.  Something is up, but I don't know what...
0
 

Author Comment

by:stakor
ID: 40031039
Sadly, same error.
0
 
LVL 68

Expert Comment

by:woolmilkporc
ID: 40031110
Why "su -l" ?  It's just "su - ..." I.e. a single dash surrounded by spaces after "su".

Nothing sureal here ...
0
 

Author Comment

by:stakor
ID: 40031204
I think I fat fingered it in the beginning. I used -<username>. I tried to get around this after man'ing su, and saw -l (at least I think I saw) that -l was another valid designator. I just tried it with - <username> and that had the same problem as "-l". It still can't find the .pm file.
0
 

Author Comment

by:stakor
ID: 40031276
Ok, I have something that works. If I add:

setenv PERL_MB_OPT "--install_base /home/<USER>/perl5"
setenv PERL_MM_OPT "INSTALL_BASE=/home/<USER>/perl5"
setenv PERL_LOCAL_LIB_ROOT "/home/<USER>/perl5"
setenv PERL5LIB /home/<USER>/perl5/lib/perl5/i686-linux-gnu-thread-multi-64int:/home/<USER>/perl5/lib/perl5
setenv PATH "$PATH":/home/<USER>/etc/turfserf/etc:/home/<USER>/perl5/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/usr/games

to a csh file that calls the perl script, it works...
0
 
LVL 38

Accepted Solution

by:
Gerwin Jansen, EE MVE earned 2000 total points
ID: 40031301
>> Ok, I have something that works.
All the env variables you've added are usually set in .profile or .profile.user

How are these env settings done for that user normally? If you just add that 'setting' script or profile to your cron entry then it should work. Alternative is what you've done, put these settings in a script and call that before running the .pm - same solution just a different implementation.
0
 
LVL 8

Expert Comment

by:Surrano
ID: 40032159
I believe you may as well put environment variables at the top of your crontab of the user in question.
0

Featured Post

Get your Disaster Recovery as a Service basics

Disaster Recovery as a Service is one go-to solution that revolutionizes DR planning. Implementing DRaaS could be an efficient process, easily accessible to non-DR experts. Learn about monitoring, testing, executing failovers and failbacks to ensure a "healthy" DR environment.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Many time we need to work with multiple files all together. If its windows system then we can use some GUI based editor to accomplish our task. But what if you are on putty or have only CLI(Command Line Interface) as an option to  edit your files. I…
I. Introduction There's an interesting discussion going on now in an Experts Exchange Group — Attachments with no extension (http://www.experts-exchange.com/discussions/210281/Attachments-with-no-extension.html). This reminded me of questions tha…
Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…
Connecting to an Amazon Linux EC2 Instance from Windows Using PuTTY.

618 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question