grep command


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting grep command
# 1  
Old 06-16-2010
grep command

OS platform: AIX Version 5.3

i inherited a korn shell script and that it is not working correctly. i found that there is this line of code below:
Code:
ISRUNNING='ps -ef | grep -i cca_monthly_load_file.ksh | grep -v grep | wc -l'
if (( ${ISRUNNING} != 1 )); then
  echo "ERROR: Process is already running." >> $LOG_FILE
  echo "Please Contact Application Administrator" >> $LOG_FILE
  exit 1
fi

that when executed on the command line as
Code:
ps -ef | grep -i cca_monthly_load_file.ksh | grep -v grep | wc -l

it always return a zero no matter what script you put in the parameter
Code:
$ ps -ef | grep -i cca_monthly_load_file.ksh | grep -v grep | wc -l
       0
$

does it says that a return 0 means that there is no current same script running or there is the same script running?

from my understanding the purpose of that code was to verify if there is currently existing script that is running to prevent it to run at the same time. how do i revise the code so that it checks correctly?


thanks,
warren

Last edited by wtolentino; 06-16-2010 at 12:55 PM..
# 2  
Old 06-16-2010
Wrong sort of quotes:
Quote:
ISRUNNING='ps -ef | grep -i cca_monthly_load_file.ksh | grep -v grep | wc -l'
Try
Code:
ISRUNNING=`ps -ef | grep -i cca_monthly_load_file.ksh | grep -v grep | wc -l`

# 3  
Old 06-16-2010
actually it is
Code:
ISRUNNING=`ps -ef | grep -i cca_monthly_load_file.ksh | grep -v grep | wc -l`

maybe when i copy and paste it becomes the normal quote '

when i tried on the command line the same command without the quote it returns 0
Code:
$ ps -eaf -o args | grep -i load_file.ksh | grep -v grep | wc -l
       0
$

does the 0 means there are no same script currently in run? thanks.
# 4  
Old 06-16-2010
Quote:
Originally Posted by wtolentino
OS platform: AIX Version 5.3
Code:
ISRUNNING='ps -ef | grep -i cca_monthly_load_file.ksh | grep -v grep | wc -l'
if (( ${ISRUNNING} != 1 )); then
  echo "ERROR: Process is already running." >> $LOG_FILE
  echo "Please Contact Application Administrator" >> $LOG_FILE
  exit 1
fi

First off, those should be backtics, (i.e. `) for the ISRUNNING line.

That code will look at the process table. If it finds any lines containing the name of the script "cca_monthly_load_file.ksh" it will have at least 1 result to hand to wc. the "grep -v grep" will remove the process line for the command that the script is running. So, if the cca_monthly_load_file script is running, the result should be "1".

However, that means that the if statement is probably not what you want.
It should be:
Code:
if (( ${ISRUNNING} == 1 )); then
  echo "ERROR: Process is already running." >> $LOG_FILE
  echo "Please Contact Application Administrator" >> $LOG_FILE
  exit 1
fi

If it was me, I'd do it like this:

Code:
RUNNING=`ps -ef | grep cca_monthly_load_file.ks[h] | wc -l`
if ((${RUNNING})); then
  echo "ERROR: Process is already running." >> $LOG_FILE
   echo "Please Contact Application Administrator" >> $LOG_FILE
   exit 1
 fi

That's a trick I learned _way_ back - the idiom "grep thin[g]" means that
grep won't match itself.
These 2 Users Gave Thanks to malcolmpdx For This Post:
# 5  
Old 06-16-2010
thank you for your reply. does the grep command differs in other unix platform? i read the grep help and saw this
Code:
Exit Status

       This command returns the following exit values:
       0
            A match was found.
       1
            No match was found.
       >1
            A syntax error was found or a file was inaccessible (even if
            matches were found).

does it mean to say that on aix version it is the other way around. if the command returns 0 it means that there is and a 1 there is no.
# 6  
Old 06-16-2010
Since you're not checking the exit status of grep, this doesn't apply.

For example, given a file (or a process list, or whatever) containing this
Code:
foo
bar
baz

You could see if "baz" was in that file by doing

Code:
grep baz file.txt

which would print out any matching lines, so you would get

Code:
$ grep baz file.txt
baz
$ grep bart file.txt
$

Alternately, you could check the return value:

Code:
$ grep baz file.txt > /dev/null
$ echo $?
0
$ grep bart file.txt > /dev/null
$ echo $?
1

Since, in the original question, you were piping the output of grep into wc, you aren't seeing the return value, just checking to see if any results are found by seeing if there's any output.

Code:
$ grep baz file.txt | wc -l
1
$ grep bart file.txt | wc -l
0

So, you could do the original check like this:

Code:
ISRUNNING=`ps -ef | grep -i cca_monthly_load_file.ks[h]`
RETVAL=$?
if (($RETVAL == 1)); then  
  echo "ERROR: Process is already running." >> $LOG_FILE
  echo "Please Contact Application Administrator" >> $LOG_FILE
  exit 1
fi


Last edited by malcolmpdx; 06-16-2010 at 01:46 PM..
This User Gave Thanks to malcolmpdx For This Post:
# 7  
Old 06-16-2010
Quote:
Originally Posted by wtolentino
does it mean to say that on aix version it is the other way around. if the command returns 0 it means that there is and a 1 there is no.
The output of ISRUNNING is the count of lines matching the regexp. Which is not the same as the exit code of the grep command itself (you can use $? to test the exit code).
This User Gave Thanks to verdepollo For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Help on grep command

for example i have a directory home/solaris/unix/samplefiles/ with defaults files in it.. those default files have 1 word in common "UNIX". how can i list the files without "UNIX" words in it using grep command thanks, im using unix solaris, korn shell.. (1 Reply)
Discussion started by: daveaztig14
1 Replies

2. Shell Programming and Scripting

Grep command giving different result for different users for same command

Hello, I am running below command as root user #nodetool cfstats tests | grep "Memtable switch count" Memtable switch count: 12 Where as when I try to run same command as another user it gives different result. #su -l zabbix -s /bin/bash -c "nodetool cfstats tests | grep "Memtable switch... (10 Replies)
Discussion started by: Pushpraj
10 Replies

3. Shell Programming and Scripting

Grep command

grep -i -f panel_genes.txt hg19_refGene.txt > match.txt seems to be pulling names the do not exist in the input file (panel_genes.txt) - the output is attached as well (match.txt) For example, RNF185 or ZNF146 are not genes in the input. I am trying to match the input file genes only and am... (9 Replies)
Discussion started by: cmccabe
9 Replies

4. Shell Programming and Scripting

help on grep command...

Hi I have lots of file in on folder and i want to egrep from only few files. List of files...... Polt_KJ_430_OutputRBS_istUt_CR2.log Polt_KN_4122_OutputRBS_ncChk_CR.log Polt_LN_2230_OutputRNC_Hth_CLKLKL.log Solt_KJ_430_OutputRBS_istUt_CR2.log Solt_KN_4122_OutputRBS_ncChk_CR3.log... (2 Replies)
Discussion started by: asavaliya
2 Replies

5. Shell Programming and Scripting

Grep Command

Hi, I have around 500 Text files and Each file will be having either String1 or String2. I want to list the file only which has String1 and Sting2 in a single command.. (5 Replies)
Discussion started by: balasubramani04
5 Replies

6. Shell Programming and Scripting

Help with using grep command with copy command

Hi, im taking an entry Unix class, and as part of my lab assignment I have to copy all files in the /home/david/lab3 directory that have the file extension .save to your lab3/temp directory. I'm having trouble getting the grep to do anything worth while I've been trying to do: cp... (6 Replies)
Discussion started by: Critical jeff
6 Replies

7. Shell Programming and Scripting

can anyone help with shell script command about searching word with grep command?

i want to search in the current directory all the files that contain one word for example "hello" i want to achieve it with the grep command but not with the grep * (2 Replies)
Discussion started by: aintour
2 Replies

8. UNIX for Advanced & Expert Users

how to exclude the GREP command from GREP

I am doing "ps -f" to see my process. but I get lines that one of it represents the ps command itself. I want to grep it out using -v flag, but than I get another process that belongs to the GREP itself : I would like to exclude # ps -f UID PID PPID C STIME TTY TIME CMD... (2 Replies)
Discussion started by: yamsin789
2 Replies

9. UNIX for Dummies Questions & Answers

grep command

hi all i have directory /usr under this directory i have subdirectories tmp1,tmp2,tmp3 like this /usr/tmp1 /usr/tmp2 /usr/tmp3 and so on i want to search string in files (i don't know the name of the files)and i want to serch it in all the directories under the /usr how shell i do... (3 Replies)
Discussion started by: naamas03
3 Replies

10. Shell Programming and Scripting

grep command

What is the meaning of this grep -v $object grant_BU.sql>temp (1 Reply)
Discussion started by: debasis.mishra
1 Replies
Login or Register to Ask a Question