0

I have a perl script running o.k. on unix machines and manually from root user but not from crontab on linux machine:

the problematic command is: su - $user

system("su - togui103 -c \"/home/togui103/RunEnv/scripts/tomcatkill.csh\"");

command on crontab:

23 59 * * * /home/togui103/RunEnv/scripts/tc-rotate.pl > /home/togui103/RunEnv/scripts/tc-rotate.log

please advise.

2 Answers 2

1

The first thing to do is to capture the stderr from your script

23 59 .../tc-rotate.pl 2>/tmp/script.log >/home/...

and then examine the log for error messages

EDIT: Responding to the comment:

Entries in crontab have a fairly restricted environment so the environment variables that you list aren't available, You can though set them in your crontab file e.g.

APACHE_HOME=/some/path
CATALINA_HOME=/some/other/path
RUN_ENV=someValue
23 59 * * * /home/togui103/RunEnv/scripts/tc-rotate.pl > /home/togui103/RunEnv/scripts/tc-rotate.log 
1
  • APACHE_HOME: Undefined variable. CATALINA_HOME: Undefined variable. RUN_ENV: Undefined variable. RUN_ENV: Undefined variable. it happen since 'su' is not execute and the script apachekill.csh requires these variables
    – Ronen Peer
    Jun 13, 2012 at 8:46
0

If the variables are set in the scope of your perl script you should try su -m

-m, --preserve-environment do not reset environment variables

Your command can be:

system("su -m togui103 -c \"/home/togui103/RunEnv/scripts/tomcatkill.csh\"");
4
  • hi, I have the same result I tried also: system("su -s \"/home/$user/.cshrc\" -c \"/home/$user/RunEnv/scripts/apachekill.csh\" $user"); it seems that it initialize the variables but don't run the *.csh script
    – Ronen Peer
    Jun 13, 2012 at 12:13
  • Does it work outside the perl script if you enter it manually? And could you add the output from "ls -l /home/$user/RunEnv/scripts/apachekill.csh" ?
    – macrojames
    Jun 13, 2012 at 12:23
  • yes, if I run the script manually from the root it works (it also works on solaris sparc from the crontab and also on my local linux machine), maybee the problem is related to the machine crontab definitions.
    – Ronen Peer
    Jun 13, 2012 at 12:47
  • anyone can help?
    – Ronen Peer
    Jun 21, 2012 at 12:42

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .