Strange behavior returning incorrect count


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Strange behavior returning incorrect count
# 8  
Old 10-01-2015
Quote:
Originally Posted by cjcox
change your grep to use a regexp to search so that the search doesn't match itself. Otherwise you may see two matches... one for the process you wanted and one for your grep itself. It will vary from system to system and in some cases can vary on the same system.

e.g.
Instead of
Code:
grep ttll.ksh

change it to
Code:
grep 'ttll\.ksh'

I tried it, it does not make any difference.
# 9  
Old 10-01-2015
The traditional way for a process to prevent multiple instances of itself is to create a lockfile, not ps | awk | sed | cut | grep | kitchen | sink.
# 10  
Old 10-01-2015
Is it possible for you to do it as
Code:
cat tt11.ksh

#!/bin/ksh
ps | grep -c tt11.ksh
count=$(ps | grep -c tt11.ksh)
echo "value of count is $count"

In RHEL6
Code:
./tt11.ksh
1
value of count is 1

# 11  
Old 10-01-2015
Quote:
Originally Posted by Aia
Is it possible for you to do it as
Code:
cat tt11.ksh
 
#!/bin/ksh
ps | grep -c tt11.ksh
count=$(ps | grep -c tt11.ksh)
echo "value of count is $count"

In RHEL6
Code:
./tt11.ksh
1
value of count is 1

Tried it does not work in RHEL 5.
# 12  
Old 10-02-2015
As said earlier, pipes do a fork/exec. And while the exec is not yet ready there is a cloned shell. This is a race condition.
To avoid the race conditions you must avoid sub-shells and pipes and maybe even calling external programs.
The best thing is pgrep. Unfortunately AIX does not have it.
cjcox and Aia solutions combined is maybe good enough:
Code:
!/bin/ksh
ps | grep -c "tt11[.]ksh"
count=$(ps | grep -c "tt11[.]ksh")
echo ""
echo "$count"
echo "----"

--
Someone mentioned the lockfile method.
If the purpose is to prevent multiple instances to run, then indeed the lockfile method seems better than the process method.
# 13  
Old 10-07-2015
Quote:
Originally Posted by st11669
Tried it does not work in RHEL 5.
It's not that it "doesn't work". It's that every time you use a | or backticks, you're telling the shell to create new processes.

If you want a way to check if an instance of your process is running without using ps, I suggest a more traditional lock file.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Strange Ctrl+C behavior

Hello All, I have a strange issue. I've created a shell script which connects to RMAN (Oracle Recovery Manager) and executes full DB backup. I then executed this script with nohup and in the background: $ nohup my_script.sh > logfile.log 2>&1 &The issue is that when I tried to take a look into... (6 Replies)
Discussion started by: JackK
6 Replies

2. AIX

Strange behavior with tar

I am trying to create an archive using tar. I am specifying a list of directories using the -L option. For testing purposes I created a simple directory structure: /backup/test /backup/test/test1 /backup/test/test2 The file specified by the -L option, named files.txt, contains:... (8 Replies)
Discussion started by: judykstra
8 Replies

3. Shell Programming and Scripting

Strange behavior on one of my server

I am not sure what is wrong, but I have some strange behavior when printing things out. I do create a file with only one word test, no space, no new line etc. nano file<enter> test<ctrl x>y<enter> Server 1 gets (fail) awk '{print "+"$0"*"}' file *test Server 2 gets (OK) awk '{print... (9 Replies)
Discussion started by: Jotne
9 Replies

4. AIX

Strange memory behavior

Hello together, i have a strange memory behavior on a AIX 7.1 System, which i cannot explain. The Filesystem-Cache will not be grow up and drops often after few minutes. I know if a file was deleted, that the same segment in the FS-Cache will also be cleared. But i am not sure if this is the... (8 Replies)
Discussion started by: -=XrAy=-
8 Replies

5. Red Hat

strange mail behavior

Hi I have script to to take backup and send mail to a group once a day. One strange behavior I have observed recently is that most of the time the mail we receive is fine . But someday it just sends out mail without any subject with undisclosed recipients. I dont know how to find the cause... (0 Replies)
Discussion started by: ningy
0 Replies

6. Programming

Strange behavior in C++

I have the following program: int main(int argc, char** argv){ unsigned long int mean=0; for(int i=1;i<10;i++){ mean+=poisson(12); cout<<mean<<endl; } cout<<"Sum of poisson: "<< mean; return 0; } when I run it, I get the... (4 Replies)
Discussion started by: santiagorf
4 Replies

7. Shell Programming and Scripting

nawk strange behavior

Dear guys; when deleting repeated lines using nawk as below ; Why the below syntax works? nawk ' !a++' infile > outfile and when using the other below syntax the nawk doesn't work? nawk ' { !a++ } ' infile > outfile or nawk ' { !a++ } ' infile > outfile BR (4 Replies)
Discussion started by: ahmad.diab
4 Replies

8. UNIX for Dummies Questions & Answers

Strange Behavior on COM2

Hi, I have a problem with a new touch screen controller that I am trying to use on a SCO 3.0 system. THe touch screen controller only wants to talk at 9600baud. I have updated /etc/inittab per the manual and also edited /usr/lib/event/devices to use 9600 baud. The only way I can get the... (0 Replies)
Discussion started by: Elwood51
0 Replies

9. UNIX for Dummies Questions & Answers

strange sed behavior

I have a file called products.kp which contains, for example, 12345678,1^M 87654321,2^M 13579123,3 when I run the command cat products.kp| sed -f kp.sed where kp.sed contains s,^M,, I get the output 12345678,1 87654321,2 13579123,3 (5 Replies)
Discussion started by: Kevin Pryke
5 Replies
Login or Register to Ask a Question