first of all I would say that this is my first time I write in a Forum.
I've read the "forum rules" and I hope i will respect them.
I searched everywhere for the solution of my problem but I didn't find anything.
Here my problem:
I'm using a sap job scheduler: in a particular job there are two main steps (scripts) that are based on unix command mv (first step) and touch command (second step/script): the first script (step) called "movedate.sh" uses a mv command to rename a file: it appends the current date and time to the name of the file, after the same script moves the file to another directory (using always the same "mv" command).
The second main step is a script based on a "touch" command: it finds out if the original file (without the date appended to his name) exists in the original folder, and if not, it tries to re-create it.
The first step goes ok (in fact you can see the file archived in the destination directory with the time stamp added to its name), but even if this step goes ok, the second one (that tries to create the file) goes in error because it says that the original file exists (as if the time-stamp was not added to the name of the file! But I can see the file archived with time-stamp in a different folder!)
The size of the file is few KB, the touch command occurs 10 seconds after the file has been archived (I use the time stamp appended to the name of the file as a time-reference).
The file system is shared.
So I "changed" the movedate.sh script, it does the same operations, but there are some checks that it performs: it checks if the time stamp has been added to the name, and it checks if the file with the time-stamp is located in the destination directory (if ok it means that it has been moved!)
So I have not no more errors... It seems to me that these checks act as a "refresh". Does it depend on the structure of the file system (as I said it's shared between three different servers)?
Any ideas why does this occur?
Thanks in advance for the replies.
Each one of these 2 step run an external command (in this case unix scripts), so the behavior should be like you were running these scripts from shell.
The code of the original movedate.sh is :
----End of script---
I used a for cycle because mmv command because it isn't.
In default_path there is the variable ORACLE_SID, so only particular users can run the script (only who has this environment variable set)
The touch script called "ytouch.sh" does the following things:
Last edited by radoulov; 03-29-2011 at 06:21 AM..
Reason: Code tags, please!
But you don't write the destination name of the file (because it is interpreted as another folder)
I would like to say that the script itself works fine, it has been fully tested, and it is used from various jobs, but there's a particular job that uses the combination of these two scripts (movedate.sh and ytouch.sh: ytouch.sh runs after movedate.sh and only if the previous one goes ok).
By putting some checks (simple if statements) in the movedate.sh script i do not receive no more errors: these checks (that should be redundant, because if the script orders to move the file, I presume that the file has been moved, in fact I can see it in the destination directory) tries to see :
a) if the timestamp has been added to the name of file1
b) if there is the file1 with the timestamp in the destination folder.
The movedate.sh returns no error only if these two if statements are true.
But as I said these two statements should be redundant, because the movedate.sh returned no error also when these "if conditions" were not put in the script, but in this case ytouch.sh went always in error because it found the file "file1" in the origin directory as if neither the timestamp was added to the file.
thank you for your reply and time spent to help me understanding this
So you should not call your script that way , but you rather should call it using only the filename and directory name without specifying the path, since you set it up later on with the DEFAULT_PATH.
---------- Post updated at 03:25 PM ---------- Previous update was at 02:19 PM ----------
Quote:
Originally Posted by Antcam
in a particular job there are two main steps (scripts) that are based on unix command mv (first step) and touch command (second step/script): the first script (step) called "movedate.sh" uses a mv command to rename a file: it appends the current date and time to the name of the file
after the same script moves the file to another directory (using always the same "mv" command).
a) Where do you want this *.date file be generated ? in $DEFAULT_PATH or in DEFAULT_PATH/$2 ???
Quote:
Originally Posted by Antcam
The second main step is a script based on a "touch" command: it finds out if the original file (without the date appended to his name) exists in the original folder, and if not, it tries to re-create it.
b) The file won't exists since it has been moved ... why don't you just copy it instead or moving it ... so you would let an original copy and avoid this additional step.
Quote:
Originally Posted by Antcam
The first step goes ok (in fact you can see the file archived in the destination directory with the time stamp added to its name),
c) In the archive destination ? so you want it to be moved to $DEFAULT_PATH ? or $DEFAULT_PATH/$2 ????
Quote:
Originally Posted by Antcam
but even if this step goes ok, the second one (that tries to create the file)
d) Try to create which file and where ?
Quote:
Originally Posted by Antcam
goes in error because it says that the original file exists (as if the time-stamp was not added to the name of the file! But I can see the file archived with time-stamp in a different folder!)
e) Are you trying to make a script that can be launched several time in parallele (concurrent run) ?
Quote:
Originally Posted by Antcam
The size of the file is few KB, the touch command occurs 10 seconds after the file has been archived (I use the time stamp appended to the name of the file as a time-reference).
The file system is shared.
f) let's forget the touch part , i first need to understand what is the expected behaviour (please focus on describing the needs, not what you have done, but what is intended)
I think that instead of explaining what you did or how what you did works,
I just need to know : what are the needs (pseudo-code) ?
a). rename $1 with $1.date (all within the same $DEFAULT_PATH directory)
b). archive (move) the $1.date file into the $DEFAULT_PATH/$2 directory ?
c). other ???
Thx
---------- Post updated at 03:29 PM ---------- Previous update was at 03:25 PM ----------
by the way, as far as i understand, your path_1 will always have the same value as $DEFAULT_PATH so $path_1 is useless : use $DEFAULT_PATH instead.
Thanks for your reply;
I cannot decide if to make a copy of the file or not, this particular file contains particular data of the current day, so it has to be archived in another directory before re-creating it.
a) I want (in this case) this file generated in $DEFAULT_PATH/$2, but this script is used by other jobs: in other cases (other jobs) the script takes the file (another file) and archives it (archiving: i mean appending the current time and date) in the same folder where the file is located (so sometimes it acts only as a "rename".
b) I know that file has just been moved to another location, but also this script (touch) is used in other situations: in other situations you must now if a particular file exists or not, because the presence/absence of the file influences the behavior to assume (so you must have scripts that can be usable in different situations)
c) I want this file moved in $DEFAULT_PATH/$2 (but as i previously said, in other situations the archive can occur in the same folder,I mean the origin folder, because the same script is used)
d) the touch script tries to re-create the file with its original name (I mean without timestamp) in the origin folder, for example:
origin folder: /usr/origin_folder/
file to archive : fileA (so you have /usr/origin_folder/fileA)
archive destination /usr/destination_folder/
-> at the end you must have /usr/destination_folder/fileA<date_time> (ex: fileA20110329161000 (2011 03 29 16.10.00)
e) after you have to re-create /usr/origin_folder/fileA, because this file should be processed by other programs, and archived at the end of the day. The day after, the programs that insert data into the file must find this file in the specific folder (so after archiving it you have to re-create it), and so on..
The needs of code are, as you said:
a) rename $1 in $1<date> (or $1.date it's the same) in the origin folder.
b) archive (mv) $1<date> in $DEFAULT_PATH/$2 (in this case; in other cases the script must archive the file in the same directory where the file is located, so i put a confrontantion of origin folder and destination folder, and if they are the same, only a rename (step a) occurs.
c) In this case i have to re-create the file that has just been archived ( I cannot put the touch command inside the movedate script because the script is used in other situations where the file to archive is not created but is uploaded or send by other systems). But for this, i think i can use a simple touch command.
Hello,
I am trying to use touch command to create 1200 .txt files. I am using this, but it is not working.
touch `seq 1 1200`.txt
Regards,
Siddhesh.K (5 Replies)
hi ,
I am transferring files from one unix server to another, after transfer of a file i want to touch the same file name in another directory in the destination server.
How can i touch a file when i am in ftp prompt on the source server.
Thanks in advance (2 Replies)
Hi all
I changed some of my files in my hoem directory to old dates using the touch command like this
touch -t 200805101024 file name
but after using this command the date changed properly but it displays like below
-rwxr--r-- 1 fincntrg fingrp 193619 May 10 2008 vi.pdf
I... (3 Replies)
Hi,
I have a touch command in my script which creates / updates a file TODAY. Then i try to find the list of files which are newer than this TODAY file.
touch `date '+%m%d'`0000 TODAY
cd /auto/users-35/p494856/learning/filetransfer/
find . -name "*csv" -newer... (3 Replies)
Is there a way to do...
touch ./config/newdir/newfile
if neither newdir and newfile exists?
man touch tells me there's not (?)
Is out there another tool to do that?
Thx in advance! :b: (6 Replies)
Can any one provide answer for the below 3 requirements,
1.
file.txt
grep "name" file.txt > file1.txt
rm -f file.txt
mv file1.txt file.txt
as per abov,
a pattern grepped in file.txt and the content moved to again file.txt
My need is i want the timestamp of file.txt before chaning and... (3 Replies)
Hi,
This might be the stupidest question ever but here it goes, i need to create a file with the name Hello! It's $s It using the touch command
but whenever i use
touch 'Hello! It's $s'
i get s is undefined
touch Hello! It's $s
i get ' unmatched
Please help ^_^ (6 Replies)
If touch command sets the modification and access times of files to the current time of day, is there a command that could do the reverse of this? Say change the access times of files to an earlier time or date?
Say I have this file:
HOME> ls -l
-rw-rw-r-- 1 orbix orbix 886 May... (1 Reply)
hello everyone i am new to this forum and was wondering if you all could help me out.... i am looking for a touch command that can touch directories as well as files that does not involve sygwin... any and all help would be appreiciated :D (3 Replies)