Sponsored Content
Top Forums UNIX for Beginners Questions & Answers Many processes running at the same time Post 303012891 by apmcd47 on Monday 12th of February 2018 06:48:13 AM
Old 02-12-2018
One example of using a flag, or lock file.
Code:
#!/bin/bash
myname=${0##*/}
if [[ -f /tmp/${myname} ]] 
then
    myname_proc=$(</tmp/${myname})
    if ps -p ${myname_proc} >/dev/null
    then exit
    else rm  /tmp/${myname} # assumption: last iteration of program died
    fi
fi
echo $$ > /tmp/${myname}
cleanup() {
    trap '' 0 HUP INT QUIT ABRT TERM # clear traps
    rm /tmp/${myname}
    # other cleanup here
}
trap 'cleanup' 0 # always run cleanup on exit
trap 'exit' HUP INT QUIT ABRT TERM # exit on one of these signals
# the rest of your script goes here

A good place to put such a file is the /tmp directory. The cleanup function should ensure that the file is deleted on exit, so you don't have to remember to put
Code:
rm /tmp/${myname}

everywhere you exit the program. Putting the PID in the file and then checking whether the process exists is optional, and there in case the program exits abnormally, leaving the file in place.

Andrew
This User Gave Thanks to apmcd47 For This Post:
 

10 More Discussions You Might Find Interesting

1. Programming

parsing currently running processes

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. I just want to know how I should go about this. I'll give you an idea of the flow of the program:... (7 Replies)
Discussion started by: blowtorch
7 Replies

2. Shell Programming and Scripting

monitoring running processes

I have a script that runs continuously and will deliver a file to multiple servers via scp. On occasions one of the scp's will hang and as a result not complete in sending the remaining files and not loop around again. If I run the scp commands with a & they'll complete, but I want to make sure... (2 Replies)
Discussion started by: nhatch
2 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

Help in running two processes in parellel

I have a script something like this: #!/usr/bin/ksh CLASSPATH=/apps/opt/db2udb/admin/db2bdt/sqllib/java/db2java.zip:/apps/opt/db2udb/admin/db2bdt/sqllib/java/db2jcc.jar:/apps/opt/db2udb/admin/db2bdt/sqllib/function:$CLASSPATH export CLASSPATH ... (7 Replies)
Discussion started by: ss3944
7 Replies

5. Shell Programming and Scripting

determine the active processes on the system which are running since long time

Hi , Please help me shell script to determine the active processes on the system which are running since long time (2 Replies)
Discussion started by: itian2010
2 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. Shell Programming and Scripting

Multi threading - running multiple processes at the same time

so i've been using this a lot in a lot of my scripts: ( columnA & columnAPID=$! & columnB & columnBPID=$! & columnC & columnCPID=$! &) & wait ${columnAPID} wait ${columnBPID} wait ${columnCPID} It seems to work as ive seen it dramatically reduce run time of my scripts. however, i'm... (5 Replies)
Discussion started by: SkySmart
5 Replies

10. Shell Programming and Scripting

Processes running response time

Hi All I have been asked to write scripts within our monitoring tool for a vast requirement set. One of the requirements is below: • Lowest, Highest & Average response times of the Documentum process threads serving client requests Essentially they want a view where we can see the... (4 Replies)
Discussion started by: simpsa27
4 Replies
sigtrap(3pm)						 Perl Programmers Reference Guide					      sigtrap(3pm)

NAME
sigtrap - Perl pragma to enable simple signal handling SYNOPSIS
use sigtrap; use sigtrap qw(stack-trace old-interface-signals); # equivalent use sigtrap qw(BUS SEGV PIPE ABRT); use sigtrap qw(die INT QUIT); use sigtrap qw(die normal-signals); use sigtrap qw(die untrapped normal-signals); use sigtrap qw(die untrapped normal-signals stack-trace any error-signals); use sigtrap 'handler' => &my_handler, 'normal-signals'; use sigtrap qw(handler my_handler normal-signals stack-trace error-signals); DESCRIPTION
The sigtrap pragma is a simple interface to installing signal handlers. You can have it install one of two handlers supplied by sigtrap itself (one which provides a Perl stack trace and one which simply "die()"s), or alternately you can supply your own handler for it to install. It can be told only to install a handler for signals which are either untrapped or ignored. It has a couple of lists of signals to trap, plus you can supply your own list of signals. The arguments passed to the "use" statement which invokes sigtrap are processed in order. When a signal name or the name of one of sigtrap's signal lists is encountered a handler is immediately installed, when an option is encountered it affects subsequently installed handlers. OPTIONS
SIGNAL HANDLERS These options affect which handler will be used for subsequently installed signals. stack-trace The handler used for subsequently installed signals outputs a Perl stack trace to STDERR and then tries to dump core. This is the default signal handler. die The handler used for subsequently installed signals calls "die" (actually "croak") with a message indicating which signal was caught. handler your-handler your-handler will be used as the handler for subsequently installed signals. your-handler can be any value which is valid as an assignment to an element of %SIG. See perlvar for examples of handler functions. SIGNAL LISTS sigtrap has a few built-in lists of signals to trap. They are: normal-signals These are the signals which a program might normally expect to encounter and which by default cause it to terminate. They are HUP, INT, PIPE and TERM. error-signals These signals usually indicate a serious problem with the Perl interpreter or with your script. They are ABRT, BUS, EMT, FPE, ILL, QUIT, SEGV, SYS and TRAP. old-interface-signals These are the signals which were trapped by default by the old sigtrap interface, they are ABRT, BUS, EMT, FPE, ILL, PIPE, QUIT, SEGV, SYS, TERM, and TRAP. If no signals or signals lists are passed to sigtrap, this list is used. For each of these three lists, the collection of signals set to be trapped is checked before trapping; if your architecture does not implement a particular signal, it will not be trapped but rather silently ignored. OTHER untrapped This token tells sigtrap to install handlers only for subsequently listed signals which aren't already trapped or ignored. any This token tells sigtrap to install handlers for all subsequently listed signals. This is the default behavior. signal Any argument which looks like a signal name (that is, "/^[A-Z][A-Z0-9]*$/") indicates that sigtrap should install a handler for that name. number Require that at least version number of sigtrap is being used. EXAMPLES
Provide a stack trace for the old-interface-signals: use sigtrap; Ditto: use sigtrap qw(stack-trace old-interface-signals); Provide a stack trace on the 4 listed signals only: use sigtrap qw(BUS SEGV PIPE ABRT); Die on INT or QUIT: use sigtrap qw(die INT QUIT); Die on HUP, INT, PIPE or TERM: use sigtrap qw(die normal-signals); Die on HUP, INT, PIPE or TERM, except don't change the behavior for signals which are already trapped or ignored: use sigtrap qw(die untrapped normal-signals); Die on receipt one of an of the normal-signals which is currently untrapped, provide a stack trace on receipt of any of the error-signals: use sigtrap qw(die untrapped normal-signals stack-trace any error-signals); Install my_handler() as the handler for the normal-signals: use sigtrap 'handler', &my_handler, 'normal-signals'; Install my_handler() as the handler for the normal-signals, provide a Perl stack trace on receipt of one of the error-signals: use sigtrap qw(handler my_handler normal-signals stack-trace error-signals); perl v5.16.3 2013-03-04 sigtrap(3pm)
All times are GMT -4. The time now is 04:39 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy