Junes
January 6, 2014, 5:12am
1
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
clx
January 6, 2014, 6:17am
2
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
Junes
January 6, 2014, 6:26am
3
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
clx
January 6, 2014, 6:34am
4
pgrep
is short for ps .. | grep..
This avoids using the extra pipe and grep.
pgrep "process_name"
Please check man pages for various flags.
Junes
January 6, 2014, 6:44am
5
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