Crontab help

Hi

I am trying to create a cron job but i get an error

I have 2 files my main shell script with html which is genWebsite.sh and another called config.sh which hold variables that I pass to genWebsite.sh by using the line ./source config.sh.

I want a cron job to refresh a html generated from genWebsite.sh every minute, I am using the code

*/1 * * * * /homeDirectoryName/scriptFolder/genWebsite.sh>startPage.html

The cron successfully initialises I then get a message in var mail which says:

/homeDirectoryName/scriptFolder/genWebsite.sh: line 6: ./config.sh: No such file or directory

any help would be appreciated thanks

The error message is quite clear, it does not find the requested file config.sh...

Difficult to say much since we do not have genWebsite.sh to look at...
The best would be to put genWebsite.sh in a script you call for cron use and set all cron needs before calling genWebsite.sh in your script (such as if you want to use ./config.sh the you have do cd /<to_where config.sg resides> etc...)

This is probably because the environmental variables like $PATH that you expect when you login are not set up when cron spawns a job.

You will either have to:-

  • Explicitly name the file with a full path
  • Define the $PATH and other variables you might need

I hope that this helps.

Robin
Liverpool/Blackburn
Uk

cron probably isn't running this in the folder you expect it to run in. You should cd /path/to/appropriatefolder in your script if it demands a certain folder.

#!/bin/bash

my genWebsite.sh

source ./config.sh


##### Functions

show_uptime()
{
    echo "<h2>System Time and Uptime</h2>"
    echo "<pre>"
    uptime
    echo "</pre>"
}


drive_space()
{
    echo "<h2>User Disk Space Available</h2>"
    echo "<pre>"
    df -h
    echo "</pre>"
}



search_bar()
{
    echo "<h2>Search Facility</h2>"
    echo "<form id="cse-search-box" action=$SearchEngine>"
    echo "<input type="hidden" name="cx" value=$SearchEngine />"
    echo "<input type="hidden" name="ie" value="UTF-8" />"
    echo "<input type="text" name="q" size="31" />"
    echo "<input type="submit" name="sa" value="Search" />"
    echo "</form>"
	
}

weather_forecast()
{
	

echo ""
echo "<html><head><title>Welcome</title></head>"
echo "<body>"
echo "<h2>Weather Forecast</h2>"
echo "<a href="http://www.accuweather.com/en/gb/leicester/le1-3/weather-forecast/$City" class="aw-widget-legal">"
echo "</a><div id="awcc1384544545323" class="aw-widget-current"  data-locationkey="$City" data-unit="c" data-language="en-gb" data-useip="false" data-uid="awcc1384544545323"></div><script type="text/javascript" src="http://oap.accuweather.com/launch.js"></script>"

echo "</body></html>"
}



latest_news()
{
	echo "<h2>Latest News</h2>"
    echo ""
}

world_time()
{
	
	echo "<h2>World Time</h2>"
	 export TZ=America/Los_Angeles
	 date
	 
   
    echo "<p>"Unset:"</p>"
    unset TZ
    date
    echo "<p>"Requested Time and Date:"</p>"
    export TZ=$Time
    date
    
    


}


##### HTML page which diaplys Functions set above  

cat <<- _EOF_
    <HTML>
    <HEAD>
	<TITLE>
	My Personalised Website
	</TITLE>
    </HEAD>

    <BODY>
    <H1>My Personalised Website</H1>
	 <h1>$TITLE</h1>
      <p>$TIME_STAMP</p>
      $(show_uptime)
      $(drive_space)
      $(search_bar)
      $(weather_forecast)
      $(latest_news)
      <script id="feed-1385133247099625" type="text/javascript" src="http://rss.bloople.net/?url=http%3A%2F%2Ffeeds.bbci.co.uk%2Fnews%2Frss.xml&limit=$NewsThreads&showicon=true&fixbugs=true&type=js&id=1385133247099625"></script>
      $(world_time)
	  
	 
	 
	 
	 

    </BODY>
    </HTML>
_EOF_

my config.sh

#!/bin/sh

##confg.sh - all of the users configuration is stored here from the case statements as a vaiable

##TITLE variable which is output in genWebsite displays the current user name via $USER
TITLE="Personalised Website for $USER"
##RIGHT_NOW variable which is output in genWebsite displays the server date in full format
RIGHT_NOW=$(date +"%x %r %Z")
##TIME_STAMP variable which is output in genWebsite displays the contents of the RIGHT_NOW variable and the cuurent user
TIME_STAMP="Updated on $RIGHT_NOW by $USER"

##variables from the case statements


Time=America/Los_Angeles
City=204842
SearchEngine=http://bing.com

---------- Post updated at 05:09 PM ---------- Previous update was at 05:07 PM ----------

do you mean set the full directory when sourcing config.sh from genWebsite.sh instead of using ./source config.sh use full/directory/config.sh?

in other words you are missing:

cd /homeDirectoryName/scriptFolder/

put that as second line of your genWebsite.sh script and try...

I used the pwd command to get the homeDirecotory to file written structure i then typed this in after cd as suggested but I get a error saying No such file or Directory, should the directory start from where the cron file is saved?

Show exactly what you typed, word for word, letter for letter, keystroke for keystroke. Otherwise we are only wild-guessing about what you actually did.

My current wild guess is that you either typed it in as a relative path ( which won't work ) or made a typo.

in my genWebsite.sh I typed in:

source ./config.sh
cd Users/guestUser/Desktop/scriptFolder/

in crontab - e
i typed

*/1 * * * * /Users/guestUser/Desktop/scriptFolder/genWebsite.sh > startPage.html

Yes, that is a relative path. That only works when you're in the right folder already.

I think you want:

/Users/guestUser/Desktop/scriptFolder/

But if that doesn't work, you may have to actually go and find it. cd / ; ls and work from there.

in the var/mail message from cron this gets rid of the No such file or directory for the path but I still get it for:
line 6: ./config.sh: No such file or directory

Well, what directory is config.sh in? You need to be in that directory. if ls /Users/guestUser/Desktop/scriptFolder/config.sh doesn't list the file it's not there.

it list the file so its definitely there

Post your complete script, please.

genWebsite.sh:

#!/bin/bash


# make_page - A script to produce an HTML file
cd /Users/guestUser/Desktop/personalisedWebsiteScript/
source ./config.sh



##### Constants


##### Functions

show_uptime()
{
    echo "<h2>System Time and Uptime</h2>"
    echo "<pre>"
    uptime
    echo "</pre>"
}


drive_space()
{
    echo "<h2>User Disk Space Available</h2>"
    echo "<pre>"
    df -h
    echo "</pre>"
}



search_bar()
{
    echo "<h2>Search Facility</h2>"
    echo "<form id="cse-search-box" action=$SearchEngine>"
    echo "<input type="hidden" name="cx" value=$SearchEngine />"
    echo "<input type="hidden" name="ie" value="UTF-8" />"
    echo "<input type="text" name="q" size="31" />"
    echo "<input type="submit" name="sa" value="Search" />"
    echo "</form>"
	
}

weather_forecast()
{
	

echo ""
echo "<html><head><title>Welcome</title></head>"
echo "<body>"
echo "<h2>Weather Forecast</h2>"
echo "<a href="http://www.accuweather.com/en/gb/leicester/le1-3/weather-forecast/$City" class="aw-widget-legal">"
echo "</a><div id="awcc1384544545323" class="aw-widget-current"  data-locationkey="$City" data-unit="c" data-language="en-gb" data-useip="false" data-uid="awcc1384544545323"></div><script type="text/javascript" src="http://oap.accuweather.com/launch.js"></script>"

echo "</body></html>"
}



latest_news()
{
	echo "<h2>Latest News</h2>"
    echo ""
}

world_time()
{
	
	echo "<h2>World Time</h2>"
	 export TZ=America/Los_Angeles
	 date
	 
   
    echo "<p>"Unset:"</p>"
    unset TZ
    date
    echo "<p>"Requested Time and Date:"</p>"
    export TZ=$Time
    date
    
    


}


##### HTML page which diaplys Functions set above  

cat <<- _EOF_
    <HTML>
    <HEAD>
	<TITLE>
	My Personalised Website
	</TITLE>
    </HEAD>

    <BODY>
    <H1>My Personalised Website</H1>
	 <h1>$TITLE</h1>
      <p>$TIME_STAMP</p>
      $(show_uptime)
      $(drive_space)
      $(search_bar)
      $(weather_forecast)
      $(latest_news)
      <script id="feed-1385133247099625" type="text/javascript" src="http://rss.bloople.net/?url=http%3A%2F%2Ffeeds.bbci.co.uk%2Fnews%2Frss.xml&limit=$NewsThreads&showicon=true&fixbugs=true&type=js&id=1385133247099625"></script>
      $(world_time)
	  
	 
	 
	 
	 

    </BODY>
    </HTML>
_EOF_

config.sh:

#!/bin/sh

##confg.sh - all of the users configuration is stored here from the case statements as a vaiable

##TITLE variable which is output in genWebsite displays the current user name via $USER
TITLE="Personalised Website for $USER"
##RIGHT_NOW variable which is output in genWebsite displays the server date in full format
RIGHT_NOW=$(date +"%x %r %Z")
##TIME_STAMP variable which is output in genWebsite displays the contents of the RIGHT_NOW variable and the cuurent user
TIME_STAMP="Updated on $RIGHT_NOW by $USER"

##variables from the case statements


Time=America/Los_Angeles
City=204842
SearchEngine=http://bing.com
NewsThreads=3