find process size script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting find process size script
# 1  
Old 08-05-2008
find process size script

Hello

i am working on a project here is part of script that i need a help in

get process SpectroSERVER current size if it exceed 3850 MB then
#pkill -TERM ArchMgr
and wait to succfull shutdown message from the log file to proceed to the next step
#tail -f $SPECROOT/SS/DDM/ARCHMGR.OUT
ArchMgr has successfully shut down
if got above message then
# pkill -TERM SpectroSERVER
and wait to succfull shutdown message from the log file to proceed to the next step
#tail -f $SPECROOT/SS/VNM.OUT
SpectroSERVER has successfully shut down
if got above message then proceed to next step
# 2  
Old 08-05-2008
Quote:
get process SpectroSERVER current size if it exceed 3850 MB then
What do you mean by that?
That if the process's resident set size, or virtual size, of it alone,
or including all its children, or those belonging to the same process group etc. exceed this threshold of memory.
What about memory mapped pages or shared memory,
reserved or even used pages on swap?
# 3  
Old 08-05-2008
Quote:
Originally Posted by buffoonix
What do you mean by that?
That if the process's resident set size, or virtual size, of it alone,
or including all its children, or those belonging to the same process group etc. exceed this threshold of memory.
What about memory mapped pages or shared memory,
reserved or even used pages on swap?
hello when do top i got the following
PID USERNAME LWP PRI NICE SIZE RES STATE TIME CPU COMMAND
19202 specadm 29 42 0 3497M 3222M sleep 42.8H 0.00% SpectroSERVER

i need script to check the SIZE if it is > 3850 to proceed
# 4  
Old 08-05-2008
Ah, you were reading top's output.
Then I gather the proc's resident set size is meant,
roughly what the proc used from physical memory.
For that to get you could run a ps command.
Do we know the proc's PID beforehand (maybe from some pid file),
or do we need to parse the proc table first?
Assumed we knew the PID you could run
Code:
$ ps -p <PID> -o rss=

Depends on the ps/OS; on Linux this number should be in KB.
Other ps return number of memory pages.
If you want to check it on a regular basis
you could set up a cronjob which checks every 5 mins or so.
Even better yet would be a monitoring solution like Nagios
(but maybe overkill?)
From the Nagios Plugins you could set up a check command
involving the check_procs plugin.
# 5  
Old 08-05-2008
Quote:
Originally Posted by buffoonix
Ah, you were reading top's output.
Then I gather the proc's resident set size is meant,
roughly what the proc used from physical memory.
For that to get you could run a ps command.
Do we know the proc's PID beforehand (maybe from some pid file),
or do we need to parse the proc table first?
Assumed we knew the PID you could run
Code:
$ ps -p <PID> -o rss=

Depends on the ps/OS; on Linux this number should be in KB.
Other ps return number of memory pages.
If you want to check it on a regular basis
you could set up a cronjob which checks every 5 mins or so.
Even better yet would be a monitoring solution like Nagios
(but maybe overkill?)
From the Nagios Plugins you could set up a check command
involving the check_procs plugin.

allright this can be a good start ,, what about rest of the script ?

regards
# 6  
Old 08-05-2008
Hello have created script like follwoing ,,, thanks anybody to check and advice

set a=3800000
if [ $a -lt'ps -p `pgrep SpectroSERVER` -o rss=' ]
then
pkill -TERM ArchMgr
b= tail -f $SPECROOT/SS/DDM/ARCHMGR.OUT | grep "ArchMgr has successfully shut down"
if [ $b ='ArchMgr has successfully shut down' ];
then
pkill -TERM SpectroSERVER
fi
c= tail -f $SPECROOT/SS/VNM.OUT | grep "SpectroSERVER has successfully shut down"
if [ $c ="SpectroSERVER has successfully shut down" ]
then sudo /opt/spectrum/lib/SDPM/processd.pl stop
fi
if [ `pgrep processd`]
then pkill processd
fi
procs2kill="LocServer NSAgent telnetd osagent VnmShd"
for proc in `echo $procs2kill`
do
pkill $proc
done
sudo /opt/spectrum/lib/SDPM/processd.pl start
. /home/specadm/spectrum_env ; $SPECROOT/bin/launchinstdbapp `/usr/bin/hostname` SS n VNM.OUT
x= tail -f $SPECROOT/SS/VNM.OUT | grep "is now ready on port 0xbeef..."
if [ $c ="is now ready on port 0xbeef..." ]
then . /home/specadm/spectrum_env ; $SPECROOT/bin/launchinstdbapp `/usr/bin/hostname` ARCHMGR y ARCHMGR.OUT
fi
# 7  
Old 08-06-2008
If the script you came up with is working for you
then it's quite ok.
But because you asked maybe just some suggestions
(although this is probably only a matter of personal taste)
Quote:
if [ $a -lt'ps -p `pgrep SpectroSERVER` -o rss=' ]
I think here you mixed up single quotes (embracing the whole ps command)
with backticks.
Though it may look daft it is quite ok to have nested backticks.
Nevertheless, I am not particularly fond of backticks because they have become obsolete in modern posix shells,
and thus their use is deprecated.
With bash, ksh, zsh, hp-ux sh etc. you should use $(...) instead.
So this would be how I would rewrite it
Code:
if (( $a < $(ps -p $(pgrep SpectroSERVER) -o rss=)) )); then

But this is still quite ugly.
With all those pairs of parens one easily could lose counting the closing ones.
So better split it up into several statements.
Also, what if the inner cmd expansion of pgrep fails?
Also, as you are going to calculate with these vars
you should better declare them as integers.
Also better use meaningful, imaginative variable names
Maybe one could rewrite it this way?
Code:
declare -i RSS_THRESHOLD=3942400
spectro_pid=$(pgrep SpectroSERVER)  # does its cmd name really appear in mixed case in the proc table?
[[ -z $spectro_pid ]] && exit 1
declare -i spectro_rss=$(ps -p $spectro_pid -o rss=)
if (( RSS_THRESHOLD < spectro_pid )); then

On the other hand you could parse the RSS in one proc table lookup like so
Code:
spectro_name=SpectroServer
set -- $(ps -e -o pid,ppid,rss,comm|awk -v pn=$spectro_name '$4~pn&&$2==1{print$1,$3}')
declare -i spectro_pid=$1 spectro_rss=$2

Yet another variant was to retrieve the RSS from the procfs like
Code:
spectro_rss=$(awk '$1~/^VmRSS:/{print$2}' $(printf /proc/%lu/status $(pgrep -P1 $spectro_name)))

These shall only serve as examples that there is more than one way to do it
(viz. TIMTOWTDI, spoken "timtowdy" as the Perl hailers use to say)
Quote:
b= tail -f $SPECROOT/SS/DDM/ARCHMGR.OUT | grep "ArchMgr has successfully shut down"
It's not clear to me how this should work
since it ought to produce a syntax error
though I think I can gather what the intension is;
viz. tail on the log until a certain expression appears
and then assign this line to variable b, right?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

By pass a process in a Shell Script on file size

I wish to by pass a process if the file is over a certain size? not sure this makes sense current bit of the script below #if we are bypAssing the OCR if ; then echo Bypassing HOTFOLDER OCR HOT_FOLDER_DIR=$BATCH_POST_OCR_DIR; potential change below? would this work would I need... (1 Reply)
Discussion started by: worky
1 Replies

2. Shell Programming and Scripting

Shell script to report file size, pid and also kill the process

Hi All, Looking for a quick LINUX shell script which can continuously monitors the flle size, report the process which is creating a file greater than certain limit and also kill that process. Can someone please help me on this? (4 Replies)
Discussion started by: vasavimacherla
4 Replies

3. Shell Programming and Scripting

Shell script to find size of subdirectories

Hi I have to find size of subdirectory and automate it in CRON. Eg: parent directory name is NVBKP inside it there are several subdirectories I want to get the size of recent two subdirectories. I have tried ls -ltr diretory path | tail -2 But it is providing only size of the folder not... (8 Replies)
Discussion started by: ankit2012
8 Replies

4. Programming

Find Virtual address space size for process

Hi, I am looking to work on unix systems which include (hp-ux, ibm aix, solaris and linux). I want to get the total virtual address space of a process, the used virtual memory i am able to get without any problem. I have tried using getrlimit and getrlimit64, but that gives only ... (4 Replies)
Discussion started by: uiqbal
4 Replies

5. Shell Programming and Scripting

Shell Script to find the tablespace size in oracle.

Hi, I need to execute a script to find the tablespace size in oracle.But i get an error.:confused: Script Executed:- #!/bin/ksh ORACLE_SID= oracelinstance ORACLE_HOME= oracle path PATH=$ORACLE_HOME/bin export ORACLE_SID ORACLE_HOME PATH sqlplus... (4 Replies)
Discussion started by: vighna
4 Replies

6. Shell Programming and Scripting

Command/script to find size of Unix Box ?

Please could anyone provide me the Command/script to find the size and usage of Unix box ASAP ? (6 Replies)
Discussion started by: sakthifire
6 Replies

7. UNIX for Dummies Questions & Answers

shell script to find files by date and size

Hi, I have a directory PRIVATE in which I have several directories and each of these have several files. Therefore, I need to find those files by size and date to back up those files in another directory. I don't know how to implement this shell script using ''find''. appreciate any... (1 Reply)
Discussion started by: dadadc
1 Replies

8. Shell Programming and Scripting

Shell script to Find file size

Hi, I am writing a script which takes the input file name and concat as a new file by appending a "1" to the file name. However i am not able to get the size of this new file. I am not sure where i am going wrong. Please check the script and help me get this working. #!/bin/sh ... (1 Reply)
Discussion started by: ragsnovel
1 Replies

9. Programming

How to find out the stack size occupied for a process?

Hi, In Linux how to find out what will be the stack size allocated for a process? Actually i have to fork n number of processess, and will call exec. I will be execing an executable which is already multithreaded and each thread size is defined. My doubt is how to know if the size of the... (2 Replies)
Discussion started by: rvan
2 Replies

10. UNIX for Dummies Questions & Answers

How to find the size of Process Address space.

Hello, Please help me to know, How to find out the how much amount of process addres space is required/is used for/by a process. Tnx & Regards Vishwa. (1 Reply)
Discussion started by: S.Vishwanath
1 Replies
Login or Register to Ask a Question