Hi All,
I have a ln between two files (say ln a b), when i truncate file " b ", this truncates file " a " also, a binary line is being added as the first line of both the files.
This is causing problems with other scripts which grep on the above files.
(though i can work my way around by using grep -a)
Can anyone comment why the binary line is being added.
Thanks in anticipation
Akshay
So, how are you truncating the file(s) - what command?
pludi
September 15, 2009, 2:56am
3
You've got to give us some more information on how you truncate the file, what kind of link you use, and what and how another application might write into that file, because I can't yet reproduce that behaviour:
bash-3.2$ perl -e 'for($i=0;$i<100;$i++){print chr(ord('A')+$i%26)x40,"\n";}' > test1.txt
bash-3.2$ ln -s test1.txt test2.txt
bash-3.2$ ln test1.txt test3.txt
bash-3.2$ ll test*.txt
-rw-r--r-- 2 pludi users 4100 15. Sep 08:53 test1.txt
lrwxrwxrwx 1 pludi users 9 15. Sep 08:53 test2.txt -> test1.txt
-rw-r--r-- 2 pludi users 4100 15. Sep 08:53 test3.txt
bash-3.2$ head test1.txt
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
bash-3.2$ head test2.txt
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
bash-3.2$ head test3.txt
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
bash-3.2$ : > test1.txt
bash-3.2$ head test1.txt
bash-3.2$ head test2.txt
bash-3.2$ head test3.txt
bash-3.2$ ll test*.txt
-rw-r--r-- 2 pludi users 0 15. Sep 08:54 test1.txt
lrwxrwxrwx 1 pludi users 9 15. Sep 08:53 test2.txt -> test1.txt
-rw-r--r-- 2 pludi users 0 15. Sep 08:54 test3.txt
pludi:
You've got to give us some more information on how you truncate the file, what kind of link you use, and what and how another application might write into that file, because I can't yet reproduce that behaviour
Hi,
Following are the steps which we follow :-
1) a log file is generated through the redirection of Jboss' run.sh
nohup $JBOSS_HOME/bin/run.sh -c Instance_Name > abc.log &
2)the above log file abc.log is then linked via :-
ln abc.log $JBOSS_HOME/server/deploy/jboss-web/ROOT/abc.txt
3) Every night a copy of the log file in ROOT is made and the original one is truncated :-
>abc.txt
After step 3, a new binary line is found as the first line of the truncated file
So a few points :-
1) the log file is being written by JBoss
2) linking is not via "-s"
Hope i cleared some doubts
hi all,
sorry for replaying on this thread again.
but i came across this problem again,
to summarize , binary line of "^@" gets inserted into a file whenever i try to truncate it by > /filename. This has happened to files which had no other script/service writing to it.
though i tried to truncate the files by echo /dev/null > /filename, and am keeping my fingers crossed this time.
any insight into this rouge behaviour will be appreciated.
thanks in anticipation
cheers