Sponsored Content
Top Forums Shell Programming and Scripting Setting environment variables in Cron file Post 302539685 by kshji on Monday 18th of July 2011 11:23:00 AM
Old 07-18-2011
No differences, but when you use cron, your env is not same as if you log in. Depends which *nix system you have.

In then cron env the best default idea is to set env.

Easy to test. Make next envtst.sh script and run it and then run it using cron. Locate it ex. dir /tmp.
Code:
cat <<EOF > /tmp/envtst.sh
#!/usr/bin/sh
env > /tmp/envtst.sh.tmp
EOF
chmod a+rx /tmp/envtst.sh

And then run crontab -e to edit cronfile and add next line
Code:
* * * * *  /tmp/envtst.sh  >> /tmp/envtst.sh.log 2>&1

Wait about minute and look file /tmp/envtst.sh.tmp

That is your env when you use cron. It's not same as login. PATH is something, not enough usually and so on. Usually HOME is.

One method is to execute your .profile

Example cron, if your /tmp/envtst.sh.tmp include HOME or hardcode path
Code:
* * * * * cd $HOME; ./myjob.sh >> /tmp/job1.log 2>&1
# * * * * * cd /somedir; ./myjob.sh >> /tmp/job1.log 2>&1

And myjob.sh is something:
Code:
#!/usr/bin/someshell   # sh, ksh, bash, ...

# do setup file = set environmnet
. ./my.setup
# or ex.
. ./.profile

cd $HOME
dosome job ...

my.setup
Code:
# add PATH, but not wait so much
PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/some/other/bin
# or set  it - overwrite
PATH=/bin:/usr/bin:/usr/local/bin:/some/other/bin
DBNAME=somedb
LOGDIR=/some/other/loc/log
# variables are global
export PATH DBNAME LOGDIR

Ofcource you can create your script always using this idea - not trust env, set it.

Last edited by kshji; 07-18-2011 at 12:41 PM..
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

setting environment variables ???

Hello, I want to set some environment variables with this script: ip=$@ echo Remote Computer: $ip PERLDB_OPTS="CallKomodo=$ip:9000 RemotePort=$ip:9010 PrintRet=0" export PERLDB_OPTS PERL5LIB=/opt/komodo export PERL5LIB echo PERLDB_OPTS: $PERLDB_OPTS echo PERL5LIB: $PERL5LIB But it... (5 Replies)
Discussion started by: Gargamel
5 Replies

2. Shell Programming and Scripting

Setting up Environment Variables

Hi all, I am trying to set up some variables in a shell script. The variables contain values of various paths needed to run a java module. The problem is the variables dont seem to be setting at all. here is what i am trying to do : JAR_HOME=/home/was5/bdcms/scheduledjobs/lib export... (6 Replies)
Discussion started by: rpandey
6 Replies

3. Shell Programming and Scripting

Setting environment variables in Makefile

I've seen a few other threads like this, but they either went unanswered or failed to answer my question. How do I set an environment variable in a Makefile? What I'm trying to do is use GNU make to automate an ant build. In order to run ant, I've got to first set a few environment... (1 Reply)
Discussion started by: Bags
1 Replies

4. Solaris

Setting environment variables within cron jobs!!

Is it possible to use environment variables within cron jobs. I am using a cron job to run a c program at regular intervals. The C program uses a library and i have set the library path in the LD_LIBRARY_PATH environment variable. But when i ran the job i got the error library not found!! Any... (1 Reply)
Discussion started by: atheek
1 Replies

5. Shell Programming and Scripting

Help in Setting Environment variables in TCSH

Hello All, I am writing a script to set some environment variables which are required for a particular application. I understand that the environment variables set by Shell script can, at the max, be valid for the session. They will have to be set again once the session is closed and re-opened.... (1 Reply)
Discussion started by: kssandeep
1 Replies

6. UNIX for Dummies Questions & Answers

Need help with setting up environment variables

hi all, I would appreciate if some one could explain me the difference between setting up the variables as shown below HOME=${HOME:-"/home/user1"} HOME=/home/user1 (1 Reply)
Discussion started by: SSSB
1 Replies

7. UNIX for Dummies Questions & Answers

Setting Environment Variables

#!/bin/bash if ; then ASS1_DATA_DIR=./ echo $ASS1_DATA_DIR export ASS1_DATA_DIR echo "data dir" fi if ; then ASS1_OUTPUT_DIR=./ export ASS1_OUTPUT_DIR fi I want to create a new environment variable ASS1_DATA_DIR and ASS1_OUTPUT_DIR in bash and set them to the current... (4 Replies)
Discussion started by: bigubosu
4 Replies

8. UNIX for Dummies Questions & Answers

Setting up environment variables

Hi all, This is my first post here. I need to set up a few environment variables with a shell script. Some are hard-coded, but some should come from other commands or as input from the user. How do I do that? For example, I need to export a variable as such: export DISPLAY=127.0.0.1:8.0 ... (2 Replies)
Discussion started by: exchequer598
2 Replies

9. Shell Programming and Scripting

setting environment variables with space

Hi, I'm having problems setting environment variable that has space value. Below is my shell script. export LINE=$@ TO=`echo $LINE | awk '{print $1}'` CC=`echo $LINE | awk '{print $2}'` BC=`echo $LINE | awk '{print $3}'` echo "TO=$TO" echo "CC=$CC" echo "BC=$BC" echo "1=$1" echo... (5 Replies)
Discussion started by: adshocker
5 Replies

10. Shell Programming and Scripting

Setting environment variables from a file :

Hi, I have around 10 environment variables in my shell script. i want to set this all in a file and just call that file in my shell script. How can i do that ? Please help. TIA! (6 Replies)
Discussion started by: qwertyu
6 Replies
CRON(8) 						       System Administration							   CRON(8)

NAME
crond - daemon to execute scheduled commands SYNOPSIS
crond [-c | -h | -i | -n | -p | -P | -s | -m<mailcommand>] crond -x [ext,sch,proc,pars,load,misc,test,bit] DESCRIPTION
Cron is started from /etc/rc.d/init.d or /etc/init.d when classical sysvinit scripts are used. In case systemd is enabled, then unit file is installed into /lib/systemd/system/crond.service and daemon is started by systemctl start crond.service command. It returns immediately, thus, there is no need to need to start it with the '&' parameter. Cron searches /var/spool/cron for crontab files which are named after accounts in /etc/passwd; The found crontabs are loaded into the mem- ory. Cron also searches for /etc/anacrontab and any files in the /etc/cron.d directory, which have a different format (see crontab(5)). Cron examines all stored crontabs and checks each job to see if it needs to be run in the current minute. When executing commands, any output is mailed to the owner of the crontab (or to the user specified in the MAILTO environment variable in the crontab, if such exists). Any job output can also be sent to syslog by using the -s option. There are two ways how changes in crontables are checked. The first method is checking the modtime of a file. The second method is using the inotify support. Using of inotify is logged in the /var/log/cron log after the daemon is started. The inotify support checks for changes in all crontables and accesses the hard disk only when a change is detected. When using the modtime option, Cron checks its crontables' modtimes every minute to check for any changes and reloads the crontables which have changed. There is no need to restart Cron after some of the crontables were modified. The modtime option is also used when inotify can not be initialized. Cron checks these files and directories: /etc/crontab system crontab. Nowadays the file is empty by default. Originally it was usually used to run daily, weekly, monthly jobs. By default these jobs are now run through anacron which reads /etc/anacrontab configuration file. See anacrontab(5) for more details. /etc/cron.d/ directory that contains system cronjobs stored for different users. /var/spool/cron directory that contains user crontables created by the crontab command. Note that the crontab(1) command updates the modtime of the spool directory whenever it changes a crontab. Daylight Saving Time and other time changes Local time changes of less than three hours, such as those caused by the Daylight Saving Time changes, are handled in a special way. This only applies to jobs that run at a specific time and jobs that run with a granularity greater than one hour. Jobs that run more frequently are scheduled normally. If time was adjusted one hour forward, those jobs that would have run in the interval that has been skipped will be run immediately. Con- versely, if time was adjusted backward, running the same job twice is avoided. Time changes of more than 3 hours are considered to be corrections to the clock or the timezone, and the new time is used immediately. It is possible to use different time zones for crontables. See crontab(5) for more information. PAM Access Control Cron supports access control with PAM if the system has PAM installed. For more information, see pam(8). A PAM configuration file for crond is installed in /etc/pam.d/crond. The daemon loads the PAM environment from the pam_env module. This can be overridden by defining specific settings in the appropriate crontab file. OPTIONS
-h Prints a help message and exits. -i Disables inotify support. -m This option allows you to specify a shell command to use for sending Cron mail output instead of using sendmail(8) This command must accept a fully formatted mail message (with headers) on standard input and send it as a mail message to the recipients specified in the mail headers. Specifying the string off (i.e., crond -m off) will disable the sending of mail. -n Tells the daemon to run in the foreground. This can be useful when starting it out of init. With this option is needed to change pam setting. /etc/pam.d/crond must not enable pam_loginuid.so module. -p Allows Cron to accept any user set crontables. -P Don't set PATH. PATH is instead inherited from the environment. -c This option enables clustering support, as described below. -s This option will direct Cron to send the job output to the system log using syslog(3). This is useful if your system does not have sendmail(8), installed or if mail is disabled. -x This option allows you to set debug flags. SIGNALS
When the SIGHUP is received, the Cron daemon will close and reopen its log file. This proves to be useful in scripts which rotate and age log files. Naturally, this is not relevant if Cron was built to use syslog(3). CLUSTERING SUPPORT
In this version of Cron it is possible to use a network-mounted shared /var/spool/cron across a cluster of hosts and specify that only one of the hosts should run the crontab jobs in this directory at any one time. This is done by starting Cron with the -c option, and have the /var/spool/cron/.cron.hostname file contain just one line, which represents the hostname of whichever host in the cluster should run the jobs. If this file does not exist, or the hostname in it does not match that returned by gethostname(2), then all crontab files in this directory are ignored. This has no effect on cron jobs specified in the /etc/crontab file or on files in the /etc/cron.d directory. These files are always run and considered host-specific. Rather than editing /var/spool/cron/.cron.hostname directly, use the -n option of crontab(1) to specify the host. You should ensure that all hosts in a cluster, and the file server from which they mount the shared crontab directory, have closely syn- chronised clocks, e.g., using ntpd(8), otherwise the results will be very unpredictable. Using cluster sharing automatically disables inotify support, because inotify cannot be relied on with network-mounted shared file systems. CAVEATS
All crontab files have to be regular files or symlinks to regular files, they must not be executable or writable for anyone else but the owner. This requirement can be overridden by using the -p option on the crond command line. If inotify support is in use, changes in the symlinked crontabs are not automatically noticed by the cron daemon. The cron daemon must receive a SIGHUP signal to reload the crontabs. This is a limitation of the inotify API. The syslog output will be used instead of mail, when sendmail is not installed. SEE ALSO
crontab(1), crontab(5), inotify(7), pam(8) AUTHOR
Paul Vixie <vixie@isc.org> Marcela Malaova <mmaslano@redhat.com> Colin Dean <colin@colin-dean.org> cronie 2013-09-26 CRON(8)
All times are GMT -4. The time now is 09:30 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy