Sponsored Content
Top Forums Programming parsing currently running processes Post 302092625 by vino on Wednesday 11th of October 2006 07:47:53 AM
Old 10-11-2006
Quote:
Originally Posted by blowtorch
Hey guys,
I'm writing a monitoring program that reads the pattern and the max and min number of instances of a process and then proceeds to parse the currently running processes for the pattern.
Parse the process? Do you mean the cmdline that started the process ?

Quote:
Originally Posted by blowtorch
2. read the process info file to build a list of the process pattern, min number and max number of instances and the rate of scanning for the pattern (in minutes).
3. loop forever and compare the processes in the list to the currently running processes and throw the appropriate alerts (or whatever)

It is point #3 that has me a bit confused. Should I read the /proc into another list, loop for each process pattern in the original list over the proc list? Or should I not read the /proc into a list at all, and just iterate over the list and read the /proc everytime (considering that /proc is in memory, that shouldn't take too much time either).
Keep a tab on the pids, i.e. maintain a list (best would hashtable).
If you iterate through /proc always, you might parse some long running processes again and again.
- For each iteration on the list, you can figure out the process is still running or not. If no ,then remove the entry. If yes, go ahead with your processing. And retain the entry. I dont think you want to raise an alert for the same process again and again.
For the next iteration against /proc, collect the new pids only. The old ones are the ones you processed already.

Quote:
Originally Posted by blowtorch
Currently the OSes that should work are Solaris and Linux as I have easy access to both, I will probably extend this to HP-UX later.
I thought Solaris did not have the /proc file system. Hmm..
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Running two processes in background

hi there, here's what i need in my korn-shell: ... begin korn-shell script ... nohup process_A.ksh ; nohup process_B.ksh & ... "other stuff" ... end lorn-shell script in plain english i want process A and process B to run in the background so that the script can continue doing... (6 Replies)
Discussion started by: jacob_gs
6 Replies

2. Programming

getting certain info for all processes currently running

i am writing a utility that displays information about all the running processes in the /proc directory. I do not know how to get the following information for each of the processes in the /proc directory: -effective user id -effective user name -effective group id -effective group name... (3 Replies)
Discussion started by: Yifan_Guo
3 Replies

3. Solaris

About running processes in background

Hi, I need to establish a procedure that will start an application in background each time my remote Solaris server is (re)started. This would be a kind of daemon. I am no sysadmin expert, so I am looking for pointers. How should I proceed? What are the main steps? Thanks, JVerstry (9 Replies)
Discussion started by: JVerstry
9 Replies

4. Shell Programming and Scripting

Need help with running processes script

I'm doing a script with the Shell. I need that it only show the number of running processes. Ex: echo "There are `command` running processes" Thnx! Pd: Sorry the idiom. I'm spanish. (2 Replies)
Discussion started by: Ikebana
2 Replies

5. Shell Programming and Scripting

Need help with running processes script

I'm doing a script with the Shell. I need that it only show the number of running processes. Ex: echo "There are `command` running processes" Thnx! Pd: Sorry the idiom. I'm spanish. (5 Replies)
Discussion started by: Ikebana
5 Replies

6. Shell Programming and Scripting

how to know the running processes.

Hi can anybody help me regarding this.. i want know the output of ps -ef with explanation. how can we know the running processess. this is the output of ps -elf F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 19 T root 0 0 0 0 SY ... (1 Reply)
Discussion started by: rajesh_pola
1 Replies

7. Solaris

Running processes on GZ/LZ

Hi guys just a question is it normal to see running process on a non-global zone in the global zone... processes such as cron. (3 Replies)
Discussion started by: batas
3 Replies

8. Linux

Running processes

Hi guys is it normal to have 5-10 cron/syslog processes running... in my case i got 10 cron process running. (4 Replies)
Discussion started by: batas
4 Replies

9. Solaris

Sendmail processes not running

Hi All! I am trying to get sendmail to work but unsuccessfull...when I run ps -ef | grep sendmail root 10578 10561 0 11:01:24 pts/1 0:00 grep sendmail I do not see its processes When I run the following commands: bash-3.00# svcs sendmail svcs: Pattern 'sendmail' doesn't match... (9 Replies)
Discussion started by: fretagi
9 Replies

10. UNIX for Beginners Questions & Answers

Many processes running at the same time

Hello everybody , I launched cron to execute a task every hour but the job takes more than hour that's why I'm getting more than 1000 cron processes running at the same time !!! My question is how to tell cron not to execute unless the job terminated in order to have only one process running .... (14 Replies)
Discussion started by: beautymind
14 Replies
PKILL(1)						    BSD General Commands Manual 						  PKILL(1)

NAME
pkill -- find or signal processes by name SYNOPSIS
pgrep [-filnvx] [-d delim] [-G gid] [-g pgrp] [-P ppid] [-s sid] [-t tty] [-U uid] [-u euid] pattern ... pkill [-signal] [-filnvx] [-G gid] [-g pgrp] [-P ppid] [-s sid] [-t tty] [-U uid] [-u euid] pattern ... prenice [-l] priority pattern ... DESCRIPTION
The pgrep command searches the process table on the running system and prints the process IDs of all processes that match the criteria given on the command line. The pkill command searches the process table on the running system and signals all processes that match the criteria given on the command line. The prenice command searches the process table on the running system and sets the priority of all processes that match the criteria given on the command line. The following options are available for pkill and pgrep: -d delim Specify a delimiter to be printed between each process ID. The default is a newline. This option can only be used with the pgrep command. -f Match against full argument lists. The default is to match against process names. -G gid Restrict matches to processes with a real group ID in the comma-separated list gid. -g pgrp Restrict matches to processes with a process group ID in the comma-separated list pgrp. The value zero is taken to mean the process group ID of the running pgrep or pkill command. -i Ignore case distinctions in both the process table and the supplied pattern. -l Long output. Print the process name in addition to the process ID for each matching process. If used in conjunction with -f, print the process ID and the full argument list for each matching process. -n Match only the most recently created process, if any. -P ppid Restrict matches to processes with a parent process ID in the comma-separated list ppid. -s sid Restrict matches to processes with a session ID in the comma-separated list sid. The value zero is taken to mean the session ID of the running pgrep or pkill command. -t tty Restrict matches to processes associated with a terminal in the comma-separated list tty. Terminal names may be specified as a fully qualified path, in the form 'ttyXX', or 'pts/N', (where XX is any pair of letters, and N is a number), or the shortened forms 'XX' or 'N'. A single dash ('-') matches processes not associated with a terminal. -U uid Restrict matches to processes with a real user ID in the comma-separated list uid. -u euid Restrict matches to processes with an effective user ID in the comma-separated list euid. -v Reverse the sense of the matching; display processes that do not match the given criteria. -x Require an exact match of the process name, or argument list if -f is given. The default is to match any substring. -signal A non-negative decimal number or symbolic signal name specifying the signal to be sent instead of the default TERM. This option is valid only when given as the first argument to pkill. The -l flag is also availale for prenice. Note that a running pgrep or pkill process will never consider itself or system processes (kernel threads) as a potential match. EXIT STATUS
pgrep, pkill, and prenice return one of the following values upon exit: 0 One or more processes were matched. 1 No processes were matched. 2 Invalid options were specified on the command line. 3 An internal error occurred. SEE ALSO
grep(1), kill(1), ps(1), kill(2), sigaction(2), re_format(7), signal(7), renice(8) HISTORY
pkill and pgrep first appeared in NetBSD 1.6. They are modelled after utilities of the same name that appeared in Sun Solaris 7. prenice was introduced in NetBSD 6.0. BSD
December 7, 2010 BSD
All times are GMT -4. The time now is 07:10 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy