Help with script - run by cron


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help with script - run by cron
# 1  
Old 03-04-2008
Help with script - run by cron

Hello,

I have a shell script that runs every minute to process incoming files delivered externally via SFTP to a directory. Basically the script works and processes the files however I get an error when a new file is delivered into the directory.

Please see my script below. A new file is delivered every day via SFTP from an external source which the script processes into the correct naming convention and it is then imported into our database using curl. We get a new file at 06:05 every day and I get a cron error message delivered to my mail box every morning. However if I then go and change the script and then test it using the same file with cron it will process correctly. However when I come in in the morning I will find that it has failed again - very frustrating!

I have no idea why this is! If someone can suggest anything that may remedy please let me know. I have also included a copy of the error message I get from Cron.

#!/bin/bash
TRANSDATA=/home/tsbftp/transaction_data
WORKING=/home/tsbftp/working
FILES=$(ls $TRANSDATA)
IMPORT=/home/arch3ftp/dfn-dev.arch3systems.com/html/import
for file in $FILES
do

#change owner of file to root - change permissions for root to full access
echo "$file" > /tmp/formatfile.nfo
chown root $TRANSDATA/"$file"
chmod 777 $TRANSDATA/"$file"

#Strip out the account number and place into a variable
AN=$(grep ^00 $TRANSDATA/"$file" | cut -c 3-18)

#set current date and time for file name convention and place into a variable
CUDA=$(date +%Y%m%d%k%M%S)
#Rename Current File with Required Format
mv $TRANSDATA/"$file" $TRANSDATA/$AN"_"$CUDA.a3i
sleep 2
mv $TRANSDATA/$AN"_"$CUDA.a3i $WORKING
echo $? >> /tmp/formatfile.nfo

cp $WORKING/$AN"_"$CUDA.a3i $IMPORT
curl -s http://dfn-dev.arch3systems.com/batches/import/$AN/$CUDA
done
exit 0

As you can see I've added in sleep 2 etc to try and remedy the error I get and tried renaming the file in place then moving etc. Please see error message below from Cron.

/etc/cron.d/format_file.sh:

mv: when moving multiple files, last argument must be a directory Try `mv --help' for more information.
cp: cannot stat `/home/tsbftp/working/1539590548547000_20080305': No such file or directory

I always get the mv error, however if I change the script to do the rename a different way it will work when I test it with cron! However sure enough it will fail when a new file comes in the next day!
# 2  
Old 03-05-2008
Quote:
I always get the mv error, however if I change the script to do the rename a different way it will work when I test it with cron! However sure enough it will fail when a new file comes in the next day!
Because when you test, the sftp is completed and nothing is locking the file letting you rename/move with no problems.

You probably need to change the way the sftp works - meaning, send a second file (either a 0 byte file or one with the checksum of the first file in it), check that the second file is there (due to it's small size, you can sleep 2 seconds and have no issue opening it to grab the checksum info).

Steps:
1. sftp sending original file
2. Your cron job kicks off - sftp may still be sending file
3. Cron job waits for 2nd file.
4. sftp finishes sending first file.
5. sftp sends second file.
6. cron job finds second file - 'knows' it's safe to manipulate first file
7. If you decide to send checksum info - check info sent versus what your system shows as checksum - should be the same.

If that can't be done (you don't control what sftp is sending), then you can list the original file - wait until it stops getting bigger. Or, look for the sftp process, wait until it is gone. But the checksum is a great way of insuring your file is the same as original.
# 3  
Old 03-05-2008
thanks for the reply I understand what u r saying but surely it would process eventualy when the file is complete? as it runs every minute. The file will not process even if i run it manually on the new file that has come in even after waiting a couple of minutes. It's only after i change the script slightly will the file process corectly until a new file appears next day.

I will try what u have suggested as I have run out of ideas. Thanks again.

Richo
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Run script no more than twice daily WITHOUT cron

Can I run a script no more than twice a day without using cron? Maybe create a file when script is first run and check its date? (7 Replies)
Discussion started by: drew77
7 Replies

2. UNIX for Advanced & Expert Users

Script run by cron gives no output

Hi All, I have a script which checks the status of HP Smart Array & then emails me the output. The script run fine when executed manually but I receive no output when configured in a cron job. The script is below: hpacucli ctrl slot=3 show config | mail -s "ARRAY STATUS-`date`"... (6 Replies)
Discussion started by: coolatt
6 Replies

3. Shell Programming and Scripting

Need help to run a script on cron

I need someone to help me out to upload script on host but I have problem can anyone help me out ? (2 Replies)
Discussion started by: spit
2 Replies

4. HP-UX

script in cron didnt run

Hi, I have script in the cron which run at predefined time everyday. If the script fails then we get the mail and a log is created. But last night the script didnt run. If the script is even started it creates log so it seems the script never ran. It has never happened before. Th... (5 Replies)
Discussion started by: shipra_31
5 Replies

5. Shell Programming and Scripting

how to run script? call other script? su to another user? make a cron?

Good morning. I am searching for "how-to"'s for some particular questions: 1. How to write a script in HP-UX 11. 2. How to schedule a script. 3. How to "call" scripts from the original script. 4. How to su to another user from within a script. This is the basics of what the... (15 Replies)
Discussion started by: instant000
15 Replies

6. Shell Programming and Scripting

Script behaves different when run from cron vs. manually

Hey all, Just wanted to get some input on a script I am using to import files into a MySQL database. The process is pretty simple: my main server exports these files and FTPs them. I have a script that FTPs them to the machine running that runs this script. The FTP script runs without issue... (2 Replies)
Discussion started by: billtwild
2 Replies

7. UNIX for Advanced & Expert Users

Need help with a script run by a cron job.

Hi, new to this forum and not sure if this is the right place to post. I'm new to cron jobs and scripts, and I need some help with a script to be used with a cron job. I already have a bot set up at a certain website address and need a script that the cron job will load every day that tells it to... (1 Reply)
Discussion started by: klawless
1 Replies

8. UNIX for Advanced & Expert Users

reg no of instances of a script run using cron

I have the below code in a file called test.ksh and it is scheduled using cron forevery 5 min. when i see the cron out file for every 5 min it showing the no of process running are 2. same thing when i implement in another script which contains other code along with the below code , it showing as... (1 Reply)
Discussion started by: kamesh83
1 Replies

9. Shell Programming and Scripting

Script to run 100jobs at a time from cron

here is my requirement. When ever the customer visitis the sore we want to look his information by his phone no. From the database side we are putting all the information in session pools. for example if we have 500 stores and at any second one customer is at the counter we can get atlease 500... (2 Replies)
Discussion started by: skneeli
2 Replies

10. Shell Programming and Scripting

Can run script Manually, but not through Cron?

Hi all, I have a main script (called OracleCleanup) that runs some sql queries. that runs off a wrapper script which contains the sources for the login information and and JOB_HOME (the script is below). When I schedule this job in the cron the log says that it cannot open my list file, which... (4 Replies)
Discussion started by: MadHatter
4 Replies
Login or Register to Ask a Question