Sponsored Content
Full Discussion: find process size script
Top Forums Shell Programming and Scripting find process size script Post 302222190 by buffoonix on Wednesday 6th of August 2008 07:41:14 AM
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?
 

10 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. 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

5. 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

6. 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

7. 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

8. 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

9. 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

10. 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
PGREP(1)							Linux User's Manual							  PGREP(1)

NAME
pgrep, pkill - look up or signal processes based on name and other attributes SYNOPSIS
pgrep [-cflvx] [-d delimiter] [-n|-o] [-P ppid,...] [-g pgrp,...] [-s sid,...] [-u euid,...] [-U uid,...] [-G gid,...] [-t term,...] [pattern] pkill [-signal] [-fvx] [-n|-o] [-P ppid,...] [-g pgrp,...] [-s sid,...] [-u euid,...] [-U uid,...] [-G gid,...] [-t term,...] [pattern] DESCRIPTION
pgrep looks through the currently running processes and lists the process IDs which matches the selection criteria to stdout. All the cri- teria have to match. For example, pgrep -u root sshd will only list the processes called sshd AND owned by root. On the other hand, pgrep -u root,daemon will list the processes owned by root OR daemon. pkill will send the specified signal (by default SIGTERM) to each process instead of listing them on stdout. OPTIONS
-c Suppress normal output; instead print a count of matching processes. -d delimiter Sets the string used to delimit each process ID in the output (by default a newline). (pgrep only.) -f The pattern is normally only matched against the process name. When -f is set, the full command line is used. -g pgrp,... Only match processes in the process group IDs listed. Process group 0 is translated into pgrep's or pkill's own process group. -G gid,... Only match processes whose real group ID is listed. Either the numerical or symbolical value may be used. -l List the process name as well as the process ID. (pgrep only.) -n Select only the newest (most recently started) of the matching processes. -o Select only the oldest (least recently started) of the matching processes. -P ppid,... Only match processes whose parent process ID is listed. -s sid,... Only match processes whose process session ID is listed. Session ID 0 is translated into pgrep's or pkill's own session ID. -t term,... Only match processes whose controlling terminal is listed. The terminal name should be specified without the "/dev/" prefix. -u euid,... Only match processes whose effective user ID is listed. Either the numerical or symbolical value may be used. -U uid,... Only match processes whose real user ID is listed. Either the numerical or symbolical value may be used. -v Negates the matching. -x Only match processes whose name (or command line if -f is specified) exactly match the pattern. -signal Defines the signal to send to each matched process. Either the numeric or the symbolic signal name can be used. (pkill only.) OPERANDS
pattern Specifies an Extended Regular Expression for matching against the process names or command lines. EXAMPLES
Example 1: Find the process ID of the named daemon: unix$ pgrep -u root named Example 2: Make syslog reread its configuration file: unix$ pkill -HUP syslogd Example 3: Give detailed information on all xterm processes: unix$ ps -fp $(pgrep -d, -x xterm) Example 4: Make all netscape processes run nicer: unix$ renice +4 `pgrep netscape` EXIT STATUS
0 One or more processes matched the criteria. 1 No processes matched. 2 Syntax error in the command line. 3 Fatal error: out of memory etc. NOTES
The process name used for matching is limited to the 15 characters present in the output of /proc/pid/stat. Use the -f option to match against the complete command line, /proc/pid/cmdline. The running pgrep or pkill process will never report itself as a match. BUGS
The options -n and -o and -v can not be combined. Let me know if you need to do this. Defunct processes are reported. SEE ALSO
ps(1) regex(7) signal(7) killall(1) skill(1) kill(1) kill(2) STANDARDS
pkill and pgrep were introduced in Sun's Solaris 7. This implementation is fully compatible. AUTHOR
Kjetil Torgrim Homme <kjetilho@ifi.uio.no> Albert Cahalan <albert@users.sf.net> is the current maintainer of the procps package. Please send bug reports to <procps-feedback@lists.sf.net> Linux June 25, 2000 PGREP(1)
All times are GMT -4. The time now is 01:36 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy