?
Solved

why is my command unable to append to a file?

Posted on 2014-03-24
4
Medium Priority
?
268 Views
Last Modified: 2014-03-24
when i run the script directly then I am able to append to the variable [FileName] $logFile

script1.sh

!/bin/sh
IPA_LOG=${IPA_LOG:=/tmp/oli}
monitor="gf"
process_pid="10162"
cmd_array=("cat /proc/${process_pid}/status")
logFile=${IPA_LOG}/$monitor.log

 fileType="mem"
 cmd_array[1]="lsof -s -p $process_pid | awk '{ user = \$4 } { if ( user == \"$fileType\" ) { print } }' | sort -nrk 7 |  head -100"

        for i in "${cmd_array[@]}"
        do
         eval ${i} >> $logFile
        done
---------------------------------------------------------------------------------------------------
but if called thru chain of script:

!/bin/sh
#scriptA
...
..
start()
{
scriptB &
}

!/bin/sh
#scriptB
...
..
doSomething(){
script1 &
}

Now the script1 is unable to append to the logFile variable. I have tried changing the chmod and chown options. But no use.
0
Comment
Question by:pvinodp
  • 2
  • 2
4 Comments
 
LVL 48

Expert Comment

by:Tintin
ID: 39951834
How are you determining it isn't appending?  

Are there any error messages?

Is the IPA_LOG variable defined?

Add a

set -x

Open in new window


near the top of script1 and post the output.

BTW, I assume you typed the scripts here as they contain errors.  Always best to copy/paste.
0
 

Author Comment

by:pvinodp
ID: 39952243
ok. let me put it more clearly:
following is the outline of script1.sh.

!/bin/sh
pid=$1
type=$2

functionA(){

  while :
  do

    if[cpu_id -gt threshold_const]
    then
       for i in "${cmd_array[@]}"
        do
         eval ${i} >> $logFile
        done
    fi

  done
}

if [x$type == xgf]
then
#accordingly i populate the cmd_array and logFile variable
functionA
fi

if [x$type == xok]
then
#accordingly i populate the cmd_array and logFile variable
functionA
fi

If I call this script by passing the 2 arguments the logs are not appending. But I can see on the filesystem that the timestamp of the logFile is updated.

If i just remove all the code and just keep the following then I see that the logFile is appended.

!/bin/sh
IPA_LOG=${IPA_LOG:=/tmp/oli}
monitor="gf"
process_pid="10162"
cmd_array=("cat /proc/${process_pid}/status")
logFile=${IPA_LOG}/$monitor.log

 fileType="mem"
 cmd_array[1]="lsof -s -p $process_pid | awk '{ user = \$4 } { if ( user == \"$fileType\" ) { print } }' | sort -nrk 7 |  head -100"

        for i in "${cmd_array[@]}"
        do
         eval ${i} >> $logFile
        done


The only diffrence here is that the logFile is static and there is no while loop. Do u see any leak somewhere?
0
 
LVL 48

Accepted Solution

by:
Tintin earned 2000 total points
ID: 39952253
Inside functionA

add

set -x

that way you can see exactly what it is attempting to do.
0
 

Author Comment

by:pvinodp
ID: 39952303
thanks for the input...
inside the function i have another line which has > instead of >>
thanks for suggesting to define "set -x" inside the function
0

Featured Post

Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

The purpose of this article is to demonstrate how we can use conditional statements using Python.
Welcome back to our beginners guide of the popular Unix tool, cron. If you missed part one where we introduced this tool, the link is below. We left off learning how to build a simple script to schedule automatic back ups. Now, we’ll learn how to se…
Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.
Suggested Courses

588 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question