LinuxQuestions.org
Review your favorite Linux distribution.
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Newbie
User Name
Password
Linux - Newbie This Linux forum is for members that are new to Linux.
Just starting out and have a question? If it is not in the man pages or the how-to's this is the place!

Notices


Reply
  Search this Thread
Old 03-02-2010, 12:28 AM   #1
your_shadow03
Senior Member
 
Registered: Jun 2008
Location: Germany
Distribution: Slackware
Posts: 1,466
Blog Entries: 6

Rep: Reputation: 51
Some character adding up starting of log file?


The logrotate is setup in one of the RHEL Machine and I could see surprising character at the top of the log file as:

^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ ^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ ^@^@^@^@^@^@^@^@^@^@^@^@^@^@

upto certain lines everytime.
What could be the issue.
 
Old 03-02-2010, 12:29 AM   #2
GrapefruiTgirl
LQ Guru
 
Registered: Dec 2006
Location: underground
Distribution: Slackware64
Posts: 7,594

Rep: Reputation: 556Reputation: 556Reputation: 556Reputation: 556Reputation: 556Reputation: 556
Exactly which file is this junk appearing in?
 
Old 03-02-2010, 12:42 AM   #3
your_shadow03
Senior Member
 
Registered: Jun 2008
Location: Germany
Distribution: Slackware
Posts: 1,466

Original Poster
Blog Entries: 6

Rep: Reputation: 51
Its a customized log location in a file with extension .log

Generally what could be possiblilty of being ^@ added at the line 1
If I do :2 in commandline of log file it works fine.
 
Old 03-02-2010, 12:52 AM   #4
GrapefruiTgirl
LQ Guru
 
Registered: Dec 2006
Location: underground
Distribution: Slackware64
Posts: 7,594

Rep: Reputation: 556Reputation: 556Reputation: 556Reputation: 556Reputation: 556Reputation: 556
Quote:
Originally Posted by your_shadow03 View Post
Generally what could be possiblilty of being ^@ added at the line 1
If I do :2 in commandline of log file it works fine.
I'm not sure I understand what you've written there; could you perhaps show us these command-lines you are using? The one that adds the junk, and also the one which works correctly using ":2" whatever that is?

Also, maybe it isn't important, but this logfile, it is a log created by what application? Or is it a common/usual Linux system generated log? In other words, what process(s) are writing to the logfile?
 
Old 03-02-2010, 01:00 AM   #5
your_shadow03
Senior Member
 
Registered: Jun 2008
Location: Germany
Distribution: Slackware
Posts: 1,466

Original Poster
Blog Entries: 6

Rep: Reputation: 51
Code:
#!/bin/bash
source ~/.bash_profile

export INST_NAME=testserver.com

if [ `ps -ef | grep -i run | grep -v grep | grep -i $INST_NAME | wc -l` = 0 ]; then

nohup sh /tools/jboss/jboss4/jboss-as/bin/run.sh -b testserver11.com -c testserver.com -D.data-dir=/fixer/hjs/config/server.name=testserver.com 2>&1 > /logs/hjs/fixer/jboss/testserver.com/testserver112.com &

sleep 3

tail -f /logs/hjs/fixer/jboss/testserver.com/testserver112.com

else
        echo "$INST_NAME Instance is already running"
fi
~
Just to inform you that logrotate has been working for the same.

Last edited by your_shadow03; 03-02-2010 at 01:15 AM.
 
Old 03-02-2010, 01:16 AM   #6
GrapefruiTgirl
LQ Guru
 
Registered: Dec 2006
Location: underground
Distribution: Slackware64
Posts: 7,594

Rep: Reputation: 556Reputation: 556Reputation: 556Reputation: 556Reputation: 556Reputation: 556
OK, so would it be fair to suppose that this problem has little or nothing to do with `logrotate`, but
is very likely to have something to do with that script:

/tools/jboss/jboss4/jboss-as/bin/run.sh

either directly, or indirectly via a problem or typo with one of those arguments provided to the script:

-b testserver11.com -c testserver.com \
-Datg.dynamo.data-dir=/fixer/hjs/config/ATG-Data \
-Datg.dynamo.server.name=testserver.com


If you have double-and-triple checked that all these command-line arguments are correct, I would be then looking at the above mentioned script itself. Is there code inside the `run.sh` script which would generate literally the junk you get in the log? If so, examine the conditions required to cause the junk to be outputted.

Has this process ever worked correctly in the past? Without the crap in the logs? I.e. have you used this software before and it worked OK? If so, what's different this time?

Sasha
 
Old 03-02-2010, 01:21 AM   #7
your_shadow03
Senior Member
 
Registered: Jun 2008
Location: Germany
Distribution: Slackware
Posts: 1,466

Original Poster
Blog Entries: 6

Rep: Reputation: 51
My logrotate file:
Code:
#####################  Source log file ######################
/logs/gm.log
{


# Show error if source log file is missing.
nomissingok

# log files are rotated when they grow bigger than size bytes.
size=1k

# log files are rotated 50 times before being removed.
rotate 30

# This is the number to use as the base for rotation.  Eg:  gm_log.0    gm.log.1
start 0

# Truncate the original log file in place after creating a copy.
copytruncate
 
Old 03-02-2010, 01:26 AM   #8
your_shadow03
Senior Member
 
Registered: Jun 2008
Location: Germany
Distribution: Slackware
Posts: 1,466

Original Poster
Blog Entries: 6

Rep: Reputation: 51
My run.conf file:
Code:
CustomLog "| /usr/sbin/logrotate /mc.com/gm.log 60" common

JAVA_OPTS="-server -XX:PermSize=128m -XX:MaxPermSize=256m -XX:-PrintTenuringDistribution -XX:NewSize=256m -XX:MaxNewSize=384m -XX:+UseParallelGC -XX:SurvivorRatio=12 -Xmx1280m -Xms1280m -XX:ThreadStackSize=256 -XX:+DisableExplicitGC -verbose:gc -XX:+PrintGCDetails  -XX:+PrintTenuringDistribution -XX:ParallelGCThreads=2 -Xloggc:/mc.com/gm.log -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Dsun.lang.ClassLoader.allowArraySyntax=true"
the run.sh contains:
Code:
#!/bin/sh
### ====================================================================== ###
##                                                                          ##
##  JBoss Bootstrap Script                                                  ##
##                                                                          ##
### ====================================================================== ###

### $Id: run.sh 73862 2008-05-30 18:27:03Z mmoyses $ ###

DIRNAME=`dirname $0`
PROGNAME=`basename $0`
GREP="grep"

# Set conf if specified, else set to production
JBOSSCONF="production"
CONF_SPECIFIED=false

arg_count=1
eval SWITCH=\${$arg_count}
while [ ! -z "$SWITCH" ]
do

        if [ "$SWITCH" = "-c" ]; then
            eval JBOSSCONF=\$`expr $arg_count + 1`
            CONF_SPECIFIED=true
            break
        fi

        arg_count=`expr $arg_count + 1`
        eval SWITCH=\${$arg_count}
done

if [ x${CONF_SPECIFIED} = "xfalse" ]
then
   set -- "-c" ${JBOSSCONF} $@
fi

# Use the maximum available, or set MAX_FD != -1 to use that
MAX_FD="maximum"

#
# Helper to complain.
#
#
warn() {
    echo "${PROGNAME}: $*"
}

#
# Helper to puke.
#
die() {
    warn $*
    exit 1
}

# OS specific support (must be 'true' or 'false').
cygwin=false;
darwin=false;
linux=false;
case "`uname`" in
    CYGWIN*)
        cygwin=true
        ;;

    Darwin*)
        darwin=true
        ;;

    Linux)
        linux=true
        ;;
esac

# Read an optional running configuration file
if [ "x$RUN_CONF" = "x" ]; then

    if [ ! -z "$JBOSSCONF" ] && [ -f "$DIRNAME/../server/$JBOSSCONF/run.conf" ]; then
        RUN_CONF="$DIRNAME/../server/$JBOSSCONF/run.conf"
    else
        RUN_CONF="$DIRNAME/run.conf"
    fi
fi
if [ -r "$RUN_CONF" ]; then
    . "$RUN_CONF"

fi

# Force IPv4 on Linux systems since IPv6 doesn't work correctly with jdk5 and lower
if [ "$linux" = "true" ]; then
   JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"
fi

# For Cygwin, ensure paths are in UNIX format before anything is touched
if $cygwin ; then
    [ -n "$JBOSS_HOME" ] &&
        JBOSS_HOME=`cygpath --unix "$JBOSS_HOME"`
    [ -n "$JAVA_HOME" ] &&
        JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
    [ -n "$JAVAC_JAR" ] &&
        JAVAC_JAR=`cygpath --unix "$JAVAC_JAR"`
fi

# Setup JBOSS_HOME
if [ "x$JBOSS_HOME" = "x" ]; then
    # get the full path (without any relative bits)
    JBOSS_HOME=`cd $DIRNAME/..; pwd`
fi
export JBOSS_HOME

# Increase the maximum file descriptors if we can
if [ "$cygwin" = "false" ]; then
    MAX_FD_LIMIT=`ulimit -H -n`
    if [ "$?" -eq 0 ]; then
        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ]; then
            # use the system max
            MAX_FD="$MAX_FD_LIMIT"
        fi

        ulimit -n $MAX_FD
        if [ "$?" -ne 0 ]; then
            warn "Could not set maximum file descriptor limit: $MAX_FD"
        fi
    else
        warn "Could not query system maximum file descriptor limit: $MAX_FD_LIMIT"
    fi
fi
# Setup the JVM
if [ "x$JAVA" = "x" ]; then
    if [ "x$JAVA_HOME" != "x" ]; then
        JAVA="$JAVA_HOME/bin/java"
    else
        JAVA="java"
    fi
fi

# Setup the classpath
runjar="$JBOSS_HOME/bin/run.jar"
if [ ! -f "$runjar" ]; then
    die "Missing required file: $runjar"
fi
JBOSS_BOOT_CLASSPATH="$runjar"

# Tomcat uses the JDT Compiler
# Only include tools.jar if someone wants to use the JDK instead.
# compatible distribution which JAVA_HOME points to
if [ "x$JAVAC_JAR" = "x" ]; then
    JAVAC_JAR_FILE="$JAVA_HOME/lib/tools.jar"
else
    JAVAC_JAR_FILE="$JAVAC_JAR"
fi
if [ ! -f "$JAVAC_JAR_FILE" ]; then
   # MacOSX does not have a seperate tools.jar
   if [ "$darwin" != "true" -a "x$JAVAC_JAR" != "x" ]; then
      warn "Missing file: JAVAC_JAR=$JAVAC_JAR"
      warn "Unexpected results may occur."
   fi
   JAVAC_JAR_FILE=
fi

if [ "x$JBOSS_CLASSPATH" = "x" ]; then
    JBOSS_CLASSPATH="$JBOSS_BOOT_CLASSPATH"
else
    JBOSS_CLASSPATH="$JBOSS_CLASSPATH:$JBOSS_BOOT_CLASSPATH"
fi
if [ "x$JAVAC_JAR_FILE" != "x" ]; then
    JBOSS_CLASSPATH="$JBOSS_CLASSPATH:$JAVAC_JAR_FILE"
fi

# If -server not set in JAVA_OPTS, set it, if supported
SERVER_SET=`echo $JAVA_OPTS | $GREP "\-server"`
if [ "x$SERVER_SET" = "x" ]; then

    # Check for SUN(tm) JVM w/ HotSpot support
    if [ "x$HAS_HOTSPOT" = "x" ]; then
        HAS_HOTSPOT=`"$JAVA" -version 2>&1 | $GREP -i HotSpot`
    fi

    # Enable -server if we have Hotspot, unless we can't
    if [ "x$HAS_HOTSPOT" != "x" ]; then
        # MacOS does not support -server flag
        if [ "$darwin" != "true" ]; then
            JAVA_OPTS="-server $JAVA_OPTS"
        fi
    fi
fi

# Setup JBosst Native library path
JBOSS_NATIVE_DIR="$JBOSS_HOME/bin/native"
if [ -d "$JBOSS_NATIVE_DIR" ]; then
    if $cygwin ; then
        export PATH="$JBOSS_NATIVE_DIR:$PATH"
        JBOSS_NATIVE_DIR=`cygpath --dos "$JBOSS_NATIVE_DIR"`
    fi
    if [ "x$LD_LIBRARY_PATH" = "x" ]; then
        LD_LIBRARY_PATH="$JBOSS_NATIVE_DIR"
    else
        LD_LIBRARY_PATH="$JBOSS_NATIVE_DIR:$LD_LIBRARY_PATH"
    fi
    export LD_LIBRARY_PATH
    if [ "x$JAVA_OPTS" = "x" ]; then
  if [ "x$JAVA_OPTS" = "x" ]; then
        JAVA_OPTS="-Djava.library.path=$JBOSS_NATIVE_DIR"
    else
        JAVA_OPTS="$JAVA_OPTS -Djava.library.path=$JBOSS_NATIVE_DIR"
    fi
fi

# Setup JBoss sepecific properties
JAVA_OPTS="-Dprogram.name=$PROGNAME $JAVA_OPTS"

# Setup the java endorsed dirs
JBOSS_ENDORSED_DIRS="$JBOSS_HOME/lib/endorsed"

# For Cygwin, switch paths to Windows format before running java
if $cygwin; then
    JBOSS_HOME=`cygpath --path --windows "$JBOSS_HOME"`
    JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
    JBOSS_CLASSPATH=`cygpath --path --windows "$JBOSS_CLASSPATH"`
    JBOSS_ENDORSED_DIRS=`cygpath --path --windows "$JBOSS_ENDORSED_DIRS"`
fi

# Display our environment
echo "========================================================================="
echo ""
echo "  JBoss Bootstrap Environment"
echo ""
echo "  JBOSS_HOME: $JBOSS_HOME"
echo ""
echo "  JAVA: $JAVA"
echo ""
echo "  JAVA_OPTS: $JAVA_OPTS"
echo ""
echo "  CLASSPATH: $JBOSS_CLASSPATH"
echo ""
echo "========================================================================="
echo ""

while true; do
   if [ "x$LAUNCH_JBOSS_IN_BACKGROUND" = "x" ]; then

  if [ "x$LAUNCH_JBOSS_IN_BACKGROUND" = "x" ]; then
      # Execute the JVM in the foreground
      "$JAVA" $JAVA_OPTS \
         -Djava.endorsed.dirs="$JBOSS_ENDORSED_DIRS" \
         -classpath "$JBOSS_CLASSPATH" \
         org.jboss.Main "$@"
      JBOSS_STATUS=$?
   else
      # Execute the JVM in the background
      "$JAVA" $JAVA_OPTS \
         -Djava.endorsed.dirs="$JBOSS_ENDORSED_DIRS" \
         -classpath "$JBOSS_CLASSPATH" \
         org.jboss.Main "$@" &
      JBOSS_PID=$!
      # Trap common signals and relay them to the jboss process
      trap "kill -HUP  $JBOSS_PID" HUP
      trap "kill -TERM $JBOSS_PID" INT
      trap "kill -QUIT $JBOSS_PID" QUIT
      trap "kill -PIPE $JBOSS_PID" PIPE
      trap "kill -TERM $JBOSS_PID" TERM
      # Wait until the background process exits
      WAIT_STATUS=0
      while [ "$WAIT_STATUS" -ne 127 ]; do
         JBOSS_STATUS=$WAIT_STATUS
         wait $JBOSS_PID 2>/dev/null
         WAIT_STATUS=$?
      done
   fi
   # If restart doesn't work, check you are running JBossAS 4.0.4+
   #    http://jira.jboss.com/jira/browse/JBAS-2483
   # or the following if you're running Red Hat 7.0
   #    http://developer.java.sun.com/developer/bugParade/bugs/4465334.html
   if [ "$JBOSS_STATUS" -eq 10 ]; then
      echo "Restarting JBoss..."
   else
      exit $JBOSS_STATUS
   fi
done

Last edited by your_shadow03; 03-02-2010 at 01:31 AM.
 
Old 03-02-2010, 01:57 AM   #9
your_shadow03
Senior Member
 
Registered: Jun 2008
Location: Germany
Distribution: Slackware
Posts: 1,466

Original Poster
Blog Entries: 6

Rep: Reputation: 51
Seems that run.sh is making the log file as binary.

The log created is a data file not normal log file.
 
Old 03-02-2010, 02:43 AM   #10
your_shadow03
Senior Member
 
Registered: Jun 2008
Location: Germany
Distribution: Slackware
Posts: 1,466

Original Poster
Blog Entries: 6

Rep: Reputation: 51
How to delete the first line of a file without creatign the temporary file?

I have a log file which generates the junk character at the first line. I want to write a script to remove it without disturbing the file or creating the temporary file(

I tried this :

sed 1D test > tempfile.

But I dont want to create a temp file as jboss might be using that file.
Can it be done?
 
Old 03-02-2010, 02:46 AM   #11
evo2
LQ Guru
 
Registered: Jan 2009
Location: Japan
Distribution: Mostly Debian and CentOS
Posts: 6,724

Rep: Reputation: 1705Reputation: 1705Reputation: 1705Reputation: 1705Reputation: 1705Reputation: 1705Reputation: 1705Reputation: 1705Reputation: 1705Reputation: 1705Reputation: 1705
How about using the in-place flag

Code:
sed -i 1D test
Evo2.
 
Old 03-02-2010, 02:51 AM   #12
your_shadow03
Senior Member
 
Registered: Jun 2008
Location: Germany
Distribution: Slackware
Posts: 1,466

Original Poster
Blog Entries: 6

Rep: Reputation: 51
Can I make it this way:

I need a script which will copy the log file(say A) in seperate new file(say B).
Remove the first line from B and copy it back to A.
Will it affect the log writing.
anyone who can help me with this script.
 
Old 03-02-2010, 02:53 AM   #13
your_shadow03
Senior Member
 
Registered: Jun 2008
Location: Germany
Distribution: Slackware
Posts: 1,466

Original Poster
Blog Entries: 6

Rep: Reputation: 51
evo2,

Never used that command option -i.
Will it not disturb the log writing.
Are you sure?
 
Old 03-02-2010, 03:02 AM   #14
evo2
LQ Guru
 
Registered: Jan 2009
Location: Japan
Distribution: Mostly Debian and CentOS
Posts: 6,724

Rep: Reputation: 1705Reputation: 1705Reputation: 1705Reputation: 1705Reputation: 1705Reputation: 1705Reputation: 1705Reputation: 1705Reputation: 1705Reputation: 1705Reputation: 1705
Quote:
Originally Posted by your_shadow03 View Post
Will it not disturb the log writing.
I don't know. Why not test it?

Quote:
Are you sure?
Yes. I'm sure I don't know ;-)

Evo2.
 
Old 03-02-2010, 03:06 AM   #15
evo2
LQ Guru
 
Registered: Jan 2009
Location: Japan
Distribution: Mostly Debian and CentOS
Posts: 6,724

Rep: Reputation: 1705Reputation: 1705Reputation: 1705Reputation: 1705Reputation: 1705Reputation: 1705Reputation: 1705Reputation: 1705Reputation: 1705Reputation: 1705Reputation: 1705
A question: Can you not wait until the process has finished writing to the file?

Evo2.
 
  


Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
Bash scripting: parsing a text file character-by-character Completely Clueless Programming 13 08-12-2009 09:07 AM
Adding date and time to a log file ltodd2 Linux - General 2 12-17-2008 10:05 AM
Adding the character "#" in a file using sed kushalkoolwal Programming 4 07-11-2008 02:59 PM
incorrect character for the log file treotan Red Hat 1 12-05-2005 09:21 PM
access.log (squid) file, adding Logins mizard Linux - Networking 4 09-27-2005 07:45 AM

LinuxQuestions.org > Forums > Linux Forums > Linux - Newbie

All times are GMT -5. The time now is 11:34 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration