Sponsored Content
Special Forums UNIX and Linux Applications How to check if process is running? Post 302417072 by Corona688 on Wednesday 28th of April 2010 12:01:33 PM
Old 04-28-2010
A traditional way is for a process to create a PID file under /var/run/. I create it under /tmp/ just as an example that can run as any user. I also use a fifo as a lock file to prevent a race condition.

Code:
#!/bin/bash

function rm_pidfile
{
        rm -f /tmp/myscript.pid
}

function is_running
{
        # File does not exist, we can run
        [ -f /tmp/myscript.pid ] || return 1
        # Read PID from file
        read PID < /tmp/myscript.pid
        # File exists but process does not.
        [ -d /proc/${PID} ] || return 1
        return 0
}

# This guarantees other scripts will wait for each other
# before checking the pidfile.  otherwise one might create the PID
# file while we're not looking.
while ! mkfifo /tmp/myscript.lock 2> /dev/null
do
        sleep 1
done

# beyond this point, /tmp/myscript.lock exists and belongs to us.  Other
# instances of the script will loop.

if is_running
then
        echo "An instance(PID ${PID}) is already running"
        rm -f /tmp/myscript.lock
        exit 1
fi

# create PID file
echo "$$" > /tmp/myscript.pid

# make sure we delete it when the program quits
trap "rm_pidfile" EXIT

# Remove the lock file
rm -f /tmp/myscript.lock

# the rest of the code goes here

while true
do
        sleep 1
done

 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to check if another instance of the process is running

Hi, I am writing a shell script to invoke a C++ program. Before I start the C++ program (oi7loadbalancer), I am checking if the process is already running. I start the process only if it is not already running. I have the following check in my script. proccount=`ps -f -u $USER_NAME | grep... (8 Replies)
Discussion started by: sim
8 Replies

2. Shell Programming and Scripting

check process running

I have this script: ------------------------------------------------------- #!/bin/ksh # if ] || ] then echo "Executing main_load.sh script" /usr1/psc_load/jobs/cron/main_load.sh "ods" else echo "File not found, do nothing" fi exit 0 ... (4 Replies)
Discussion started by: rose1207
4 Replies

3. UNIX for Advanced & Expert Users

how to check how long the process has been running.

I have a requirement to check how long a process is running on unix system.If i use ps -ef i am getting the following message guest 2453638 1998920 0 16:16:05 - 0:00 dsapi_slave 9 8 0 but this is showing only time not the date.Can any one please advice me any script to find out how... (2 Replies)
Discussion started by: ukatru
2 Replies

4. UNIX for Advanced & Expert Users

How to check since when (for how long) a particular process is running ?

How do I check if a particular process is running from a certain date and time ? (2 Replies)
Discussion started by: hpuxlxboy
2 Replies

5. Shell Programming and Scripting

Check if Process is running

Hi , I have a csh code below which check the process if it's running. Can any expert advise me on the following: 1) what does this notationmean ">!" and how is it different from the append ">" notation ? 2) how does "setenv" work in this code ? # Check whether there is a running... (3 Replies)
Discussion started by: Raynon
3 Replies

6. UNIX for Dummies Questions & Answers

Command to check if a particular process is running

Hi What is the best command to check if a particular process is running in a linux server or not To check any java process, I use the below command. ps -ef |grep jvm When I execute the above command, it lists me all the processess . The above command should ideally return only the... (6 Replies)
Discussion started by: vr3w3c9
6 Replies

7. Programming

How do I check if a process is running in C

How to I check if a process is running in C? I'm trying to use ps aux |grep "process name" but failing in doing that. How do I do that? Thanks, (1 Reply)
Discussion started by: cprogdude
1 Replies

8. Shell Programming and Scripting

need to check if the process is running

Hi, I check if the process is running or not using the below. /usr/ucb/ps auxww | grep 109 |grep rmi | awk '{print $2}' 9718 Thus we see 9718 is the PID. It return blank if the process is not running. I need to perform some action if the process is not running and leave it if... (8 Replies)
Discussion started by: shifahim
8 Replies

9. UNIX for Dummies Questions & Answers

How a process can check if a particular process is running on different machine?

I have process1 running on one machine and generating some log file. Now another process which can be launched on any machine wants to know if process1 is running or not and also in case it is running it wants to stream the logs file generated by process1 on terminal from which process2 is... (2 Replies)
Discussion started by: saurabhnsit2001
2 Replies

10. Shell Programming and Scripting

Looping to check the currently running process.

Hi Gurus, t=`ps -u irb|grep -v grep|grep BSNL_PAYMENT_C` echo $t if then echo $? echo "Process Creation is Running ...." else echo "Process went down at $dat $tim" fi How would i use loop so that the script continously checks for the current status of this process.... (1 Reply)
Discussion started by: ankitknit
1 Replies
sv(8)							      System Manager's Manual							     sv(8)

NAME
sv - control and manage services monitored by runsv(8) SYNOPSIS
sv [-v] [-w sec] command services /etc/init.d/service [-w sec] command DESCRIPTION
The sv program reports the current status and controls the state of services monitored by the runsv(8) supervisor. services consists of one or more arguments, each argument naming a directory service used by runsv(8). If service doesn't start with a dot or slash and doesn't end with a slash, it is searched in the default services directory /etc/service/, otherwise relative to the current directory. command is one of up, down, status, once, pause, cont, hup, alarm, interrupt, 1, 2, term, kill, or exit, or start, stop, restart, shutdown, force-stop, force-reload, force-restart, force-shutdown. The sv program can be sym-linked to /etc/init.d/ to provide an LSB init script interface. The service to be controlled then is specified by the base name of the ``init script''. COMMANDS
status Report the current status of the service, and the appendant log service if available, to standard output. up If the service is not running, start it. If the service stops, restart it. down If the service is running, send it the TERM signal, and the CONT signal. If ./run exits, start ./finish if it exists. After it stops, do not restart service. once If the service is not running, start it. Do not restart it if it stops. pause cont hup alarm interrupt quit 1 2 term kill If the service is running, send it the STOP, CONT, HUP, ALRM, INT, QUIT, USR1, USR2, TERM, or KILL signal respectively. exit If the service is running, send it the TERM signal, and the CONT signal. Do not restart the service. If the service is down, and no log service exists, runsv(8) exits. If the service is down and a log service exists, send the TERM signal to the log service. If the log service is down, runsv(8) exits. This command is ignored if it is given to an appendant log service. sv actually looks only at the first character of these commands. Commands compatible to LSB init script actions status Same as status. start Same as up, but wait up to 7 seconds for the command to take effect. Then report the status or timeout. If the script ./check exists in the service directory, sv runs this script to check whether the service is up and available; it's considered to be avail- able if ./check exits with 0. stop Same as down, but wait up to 7 seconds for the service to become down. Then report the status or timeout. reload Same as hup, and additionally report the status afterwards. restart Send the commands term, cont, and up to the service, and wait up to 7 seconds for the service to restart. Then report the status or timeout. If the script ./check exists in the service directory, sv runs this script to check whether the service is up and avail- able again; it's considered to be available if ./check exits with 0. shutdown Same as exit, but wait up to 7 seconds for the runsv(8) process to terminate. Then report the status or timeout. force-stop Same as down, but wait up to 7 seconds for the service to become down. Then report the status, and on timeout send the service the kill command. force-reload Send the service the term and cont commands, and wait up to 7 seconds for the service to restart. Then report the status, and on timeout send the service the kill command. force-restart Send the service the term, cont and up commands, and wait up to 7 seconds for the service to restart. Then report the status, and on timeout send the service the kill command. If the script ./check exists in the service directory, sv runs this script to check whether the service is up and available again; it's considered to be available if ./check exits with 0. force-shutdown Same as exit, but wait up to 7 seconds for the runsv(8) process to terminate. Then report the status, and on timeout send the ser- vice the kill command. try-restart if the service is running, send it the term and cont commands, and wait up to 7 seconds for the service to restart. Then report the status or timeout. Additional Commands check Check for the service to be in the state that's been requested. Wait up to 7 seconds for the service to reach the requested state, then report the status or timeout. If the requested state of the service is up, and the script ./check exists in the service direc- tory, sv runs this script to check whether the service is up and running; it's considered to be up if ./check exits with 0. OPTIONS
-v If the command is up, down, term, once, cont, or exit, then wait up to 7 seconds for the command to take effect. Then report the status or timeout. -w sec Override the default timeout of 7 seconds with sec seconds. This option implies -v. ENVIRONMENT
SVDIR The environment variable $SVDIR overrides the default services directory /etc/service/. SVWAIT The environment variable $SVWAIT overrides the default 7 seconds to wait for a command to take effect. It is overridden by the -w option. EXIT CODES
sv exits 0, if the command was successfully sent to all services, and, if it was told to wait, the command has taken effect to all ser- vices. For each service that caused an error (e.g. the directory is not controlled by a runsv(8) process, or sv timed out while waiting), sv increases the exit code by one and exits non zero. The maximum is 99. sv exits 100 on error. If sv is called with a base name other than sv: it exits 1 on timeout or trouble sending the command; if the command is status, it exits 3 if the service is down, and 4 if the status is unknown; it exits 2 on wrong usage, and 151 on error. SEE ALSO
runsv(8), chpst(8), svlogd(8), runsvdir(8), runsvchdir(8), runit(8), runit-init(8) http://smarden.org/runit/ AUTHOR
Gerrit Pape <pape@smarden.org> sv(8)
All times are GMT -4. The time now is 03:19 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy