Check to see if script is already running

Happy New Year

Is there a quick way to check to see if a script is already running.

I want to put in a check in the script to exit, if already running.

Currerntly i can only think of doing it the following way.


# ps -ef | grep -i 3_HOUSEKEEPING_FFTVTL_TO_FFTDSSU_DUPLICATION.ksh | grep -vi "grep"
nbuinadm 18684 18775  0 10:38 pts/4    00:00:01 /usr/bin/ksh /usr/LDN_VTL_HouseKeeping/3_HOUSEKEEPING_FFTVTL_TO_FFTDSSU_DUPLICATION.ksh

Your approach seem to be correct. But do you really need "grep -i"?
I think you should be specific to make sure you are actually referring to the correct process.

You can shorten the command if you have pgrep

Could you please provide the syntax, i have tried the following..

# ps -ef | pgrep -u 3_HOUSEKEEPING_FFTVTL_TO_FFTDSSU_DUPLICATION.ksh
pgrep: invalid user name: 3_HOUSEKEEPING_FFTVTL_TO_FFTDSSU_DUPLICATION.ksh
# ps -ef | pgrep -U 3_HOUSEKEEPING_FFTVTL_TO_FFTDSSU_DUPLICATION.ksh
pgrep: invalid user name: 3_HOUSEKEEPING_FFTVTL_TO_FFTDSSU_DUPLICATION.ksh
# ps -ef | pgrep -P 3_HOUSEKEEPING_FFTVTL_TO_FFTDSSU_DUPLICATION.ksh
pgrep: not a number: 3_HOUSEKEEPING_FFTVTL_TO_FFTDSSU_DUPLICATION.ksh
# ps -ef | pgrep -g 3_HOUSEKEEPING_FFTVTL_TO_FFTDSSU_DUPLICATION.ksh
pgrep: invalid process group: 3_HOUSEKEEPING_FFTVTL_TO_FFTDSSU_DUPLICATION.ksh
# ps -ef | pgrep -s 3_HOUSEKEEPING_FFTVTL_TO_FFTDSSU_DUPLICATION.ksh
pgrep: invalid session id: 3_HOUSEKEEPING_FFTVTL_TO_FFTDSSU_DUPLICATION.ksh
# ps -ef | pgrep -U 3_HOUSEKEEPING_FFTVTL_TO_FFTDSSU_DUPLICATION.ksh
pgrep: invalid user name: 3_HOUSEKEEPING_FFTVTL_TO_FFTDSSU_DUPLICATION.ksh
# ps -ef | pgrep -G 3_HOUSEKEEPING_FFTVTL_TO_FFTDSSU_DUPLICATION.ksh
pgrep: invalid group name: 3_HOUSEKEEPING_FFTVTL_TO_FFTDSSU_DUPLICATION.ksh
# ps -ef | pgrep -t 3_HOUSEKEEPING_FFTVTL_TO_FFTDSSU_DUPLICATION.ksh


pgrep is short for ps .. | grep..
This avoids using the extra pipe and grep.

pgrep "process_name"

Please check man pages for various flags.

Its not a process, but a script i am checking for.

Your running script is a process for the OS ...
You may try to match against the full command line with -f:

pgrep -f 3_HOUSEKEEPING_FFTVTL_TO_FFTDSSU_DUPLICATION.ksh
1 Like