Sponsored Content
Top Forums UNIX for Dummies Questions & Answers how to detect my script is already running Post 96513 by tmarikle on Friday 20th of January 2006 02:58:45 PM
Old 01-20-2006
Quote:
Originally Posted by aigles
Try this

Code:
#!/usr/bin/ksh

#
# Check script in use
#

LockFile=/tmp/$(basename $0).lck
echo $$ >> $LockFile
while read Pid
do
   [ "$Pid" -eq $$ ] && break
   [ -z "$(ps -p $Pid -opid=)" ] && continue
   echo "Script in use (by pid $Pid), exiting..."
   exit
done < $LockFile
trap "rm $LockFile" EXIT

#
# Script code
#

. . . . . . .

This is similar to the method that I use and so far, nothing has ever conflicted since I ironed out one wrinkle. I haven't tested this particular implementation and maybe it doesn't have the same hole that I found in my first attempt but, you may want to included ps -fp $pid | grep yourscript to eliminate the possibility of other processes giving you false positives; some systems can reuse PIDs fairly quickly. My Solaris implementation was plagued by false positives for a month (between release cycles) until I added the grep.
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

AWK script to detect webpages from file

Hi guys I'm very new to unix and I have to create an awk script that detects webpage addresses from a file/webpage and outputs how many times each webpage was detected.e.g. if my file was: (Note: The symbol " was added to stop them being created into links) "www.google.com"... (1 Reply)
Discussion started by: ROFL
1 Replies

2. Shell Programming and Scripting

AWK script to detect webpages from file

Hi guys I'm very new to unix and I have to create an awk script that detects webpage addresses from a file/webpage and outputs how many times each webpage was detected.e.g. if my file was: www.google.com www.facebook.com www.google.com the output should be: www.google.com x2... (2 Replies)
Discussion started by: ROFL
2 Replies

3. Shell Programming and Scripting

Detect if script starts from queue

Dear community, what I'm try to do is deny users to run a script without parameters from command bash, but the same script should run without parameters only from crontab. Example runs by crontab:*/5 * * * * /tmp/script.sh Here the normal execution starts every 5 minutes Example #1 runs by... (16 Replies)
Discussion started by: Lord Spectre
16 Replies

4. Shell Programming and Scripting

Detect current shell inside a script

I wish to print my current shell which happens to be bash in my script check.sh more check.sh echo $0 echo `ps -p $$` But instead of printing it prints check.sh i.e the name of the script for both the commands. Can you please suggest how to print the current shell i m on inside the... (2 Replies)
Discussion started by: mohtashims
2 Replies

5. Shell Programming and Scripting

Help with detect with regex and move script

Hi all, I am needing some help with a script that will search for a video file by known extensions and then do a pattern search (I'm guessing via regex) and then based on a match of one type of another move the file to an assigned directory. I would like to do this with either a shell script... (7 Replies)
Discussion started by: Simplify
7 Replies

6. Shell Programming and Scripting

Htop - How to detect exact command running at background

Hello, I am running a python file from terminal and I wish to see which code is running at background. When I use htop, I see just a few commands, unable to see entire command. htop > report nano report Output: ^ Following parts of ffmpeg line is not shown by htop. Just showing... (7 Replies)
Discussion started by: baris35
7 Replies

7. UNIX for Advanced & Expert Users

A script to detect system type

Hi forum, So I am trying to determine the OS type with the following script: #!/usr/bin/sh OStype1=`uname -s` Sunos1=SunOs if then echo "This system is Linux" exit 0 elif then echo "This system is SunOs" exit 0 elif (1 Reply)
Discussion started by: dampio
1 Replies

8. UNIX for Beginners Questions & Answers

Script to detect time drift on server

Hello there, I am not an expert in networking related stuff but I got a requirement to create UNIX script to query our Company's internal time source via NTP for time drift detect and report it when > +/- 50ms. I have been googling a lot but thought to post it in this forum to get a... (1 Reply)
Discussion started by: Green_Star
1 Replies

9. HP-UX

Script to detect time drift

Hello there, I am not an expert in networking related stuff but I got a requirement to create UNIX script to query our Company's internal time source via NTP for time drift detect and report it when > +/- 50ms. I have been googling a lot but thought to post it in this forum to get a... (17 Replies)
Discussion started by: Green_Star
17 Replies

10. Shell Programming and Scripting

How to detect url in use in a script?

Hello, I have a small script and it runs from web application in below format: pipe:///path_to_myscript.sh url1 url2 url3 myscript.sh: #!/bin/bash count=0 while do count=$((count+1)) exec 3>&1 ((ffmpeg -i $1 ...... -f mpegts pipe:1 2>/dev/null 1>&3 ) 2>&1 | \ while read LINE; do echo... (9 Replies)
Discussion started by: baris35
9 Replies
supervisor_bridge(3erl) 				     Erlang Module Definition					   supervisor_bridge(3erl)

NAME
supervisor_bridge - Generic Supervisor Bridge Behaviour. DESCRIPTION
A behaviour module for implementing a supervisor_bridge, a process which connects a subsystem not designed according to the OTP design principles to a supervision tree. The supervisor_bridge sits between a supervisor and the subsystem. It behaves like a real supervisor to its own supervisor, but has a different interface than a real supervisor to the subsystem. Refer to OTP Design Principles for more informa- tion. A supervisor_bridge assumes the functions for starting and stopping the subsystem to be located in a callback module exporting a pre- defined set of functions. The sys module can be used for debugging a supervisor_bridge. Unless otherwise stated, all functions in this module will fail if the specified supervisor_bridge does not exist or if bad arguments are given. EXPORTS
start_link(Module, Args) -> Result start_link(SupBridgeName, Module, Args) -> Result Types SupBridgeName = {local,Name} | {global,Name} Name = atom() Module = atom() Args = term() Result = {ok,Pid} | ignore | {error,Error} Pid = pid() Error = {already_started,Pid} | term() Creates a supervisor_bridge process, linked to the calling process, which calls Module:init/1 to start the subsystem. To ensure a synchronized start-up procedure, this function does not return until Module:init/1 has returned. If SupBridgeName={local,Name} the supervisor_bridge is registered locally as Name using register/2 . If SupBridgeName={global,Name} the supervisor_bridge is registered globally as Name using global:register_name/2 . If no name is provided, the supervisor_bridge is not registered. If there already exists a process with the specified SupBridgeName the function returns {error,{already_started,Pid}} , where Pid is the pid of that process. Module is the name of the callback module. Args is an arbitrary term which is passed as the argument to Module:init/1 . If the supervisor_bridge and the subsystem are successfully started the function returns {ok,Pid} , where Pid is is the pid of the supervisor_bridge. If Module:init/1 returns ignore , this function returns ignore as well and the supervisor_bridge terminates with reason normal . If Module:init/1 fails or returns an error tuple or an incorrect value, this function returns {error,Term} where Term is a term with information about the error, and the supervisor_bridge terminates with reason Term . CALLBACK FUNCTIONS
The following functions should be exported from a supervisor_bridge callback module. EXPORTS
Module:init(Args) -> Result Types Args = term() Result = {ok,Pid,State} | ignore | {error,Error} Pid = pid() State = term() Error = term() Whenever a supervisor_bridge is started using supervisor_bridge:start_link/2,3 , this function is called by the new process to start the subsystem and initialize. Args is the Args argument provided to the start function. The function should return {ok,Pid,State} where Pid is the pid of the main process in the subsystem and State is any term. If later Pid terminates with a reason Reason , the supervisor bridge will terminate with reason Reason as well. If later the super- visor_bridge is stopped by its supervisor with reason Reason , it will call Module:terminate(Reason,State) to terminate. If something goes wrong during the initialization the function should return {error,Error} where Error is any term, or ignore . Module:terminate(Reason, State) Types Reason = shutdown | term() State = term() This function is called by the supervisor_bridge when it is about to terminate. It should be the opposite of Module:init/1 and stop the subsystem and do any necessary cleaning up. The return value is ignored. Reason is shutdown if the supervisor_bridge is terminated by its supervisor. If the supervisor_bridge terminates because a a linked process (apart from the main process of the subsystem) has terminated with reason Term , Reason will be Term . State is taken from the return value of Module:init/1 . SEE ALSO
supervisor(3erl) , sys(3erl) Ericsson AB stdlib 1.17.3 supervisor_bridge(3erl)
All times are GMT -4. The time now is 03:01 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy