Sponsored Content
Full Discussion: How to Lock the Script?
Top Forums UNIX for Dummies Questions & Answers How to Lock the Script? Post 302876531 by rbatte1 on Monday 25th of November 2013 08:45:40 AM
Old 11-25-2013
To respond to the suggestions from RavinderSingh13

The problem with looking for a process of the right name is that someone could be editing a file of the same/similar name, or using more to browse the script. They will all get detected as an in-use condition.

It would be neater written as:-
Code:
if [ `ps -ef | grep -c [t]est.ksh` -ne 1 ]
then

... although I'm probably breaking all sorts of rules about back-ticks inside a test.


For a single use script, you could create a lock file in your code:-
Code:
#!/bin/ksh

if [ -f /tmp/my_lock_file ]
then
   cat /tmp/my_lock_file
   exit
fi

# I've got here, so it's not locked by anyone else, so I will lock it

echo "`date` : This script is being run by $USER" >/tmp/my_lock_file

# Do what your script needs to do
# Do what your script needs to do
# Do what your script needs to do
# Do what your script needs to do

# Tidy up lock file
rm /tmp/my_lock_file

It's not pretty, but it works in a clunky way.

You can add more to it to reduce the risk of someone else getting in between you checking and creating the lock file, but it's more complex and doesn't work if you switch user:-
Code:
if [ -f /tmp/my_lock_file ]
then
   echo "Sorry, but \c"
   cat /tmp/my_lock_file
   exit 99
fi
echo "$USER started updates at `date '+%H:%M:%S on %d/%m/%Y'`">/tmp/my_lock_file
sleep 1
cat /tmp/my_lock_file|read luserid rest
if [ $luserid != $USER ]
then
   echo "Very unlucky. \c"
   cat /tmp/my_lock_file
   exit 99
fi


# I've got here, so it's not locked by anyone else, so I will lock it

echo "`date` : This script is being run by $USER" >/tmp/my_lock_file

# Do what your script needs to do
# Do what your script needs to do
# Do what your script needs to do
# Do what your script needs to do

# Tidy up lock file
rm /tmp/my_lock_file

To respond to the suggestions from RavinderSingh13

The problem with looking for a process of the right name is that someone could be editing a file of the same/similar name, or using more to browse the script. They will all get detected as an in-use condition.

It would be neater written as:-
Code:
if [ `ps -ef | grep -c [t]est.ksh` -ne 1 ]
then

... although I'm probably breaking all sorts of rules about back-ticks inside a test.


I hope that this helps
Robin
Liverpool/Blackburn
UK

Last edited by rbatte1; 11-25-2013 at 09:51 AM..
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

how to lock keyboard without using lock command

how can I lock my keyboard while I'm away from the computer without using lock command. What other commands gives me the option to lock keyboard device? thanks (7 Replies)
Discussion started by: dianayun
7 Replies

2. Shell Programming and Scripting

Lock for this script

Hi, My requirement is to service a process and below is the script which i wrote for that and works fine, I have kept it in a crontab and running this everyminute, how do I lock this if its already running and i dont want to open if its running and not completed yet. The crontab need to run... (4 Replies)
Discussion started by: strunz
4 Replies

3. Shell Programming and Scripting

How to write a directory lock shell script?

Hi there, pleas I want this script urgently. how to lock a directory by shell script? (12 Replies)
Discussion started by: joneggk
12 Replies

4. Red Hat

Security Question: Lock after invalid login, Session Lock and Required Minimum Password Length

Hello all, If anyone has time, I have a few questions: How do I do the following in Linux. We are using Red Hat and Oracle Enterprise Linux, which is based on Red Hat too. 1. How to lock the account after a few (like 3) invalid password attempts? 2. How do you lock a screen after 30... (1 Reply)
Discussion started by: nstarz
1 Replies

5. Shell Programming and Scripting

Large password lock script

I am trying to create a script that will take a very large, tab delimited file and then lock accounts. File headers look like this id desc server pass sudo lock test Test user server01 67 no no "Test user" is under the desc column Basically if pass column is greater... (5 Replies)
Discussion started by: Gibby13
5 Replies

6. UNIX for Dummies Questions & Answers

How do i lock a ksh shell script?

Hi, I have a ksh shell script that accesses databases to drop and create tables and the script also creates text files. This shell script is accessed thru a java application that i would like to turn multi-user, but the only way that i can do that is if I can figure out a way to lock the shell... (2 Replies)
Discussion started by: ndedhia1
2 Replies

7. UNIX for Advanced & Expert Users

Testing privileges -lock lockfile /var/lock/subsys/..- Permission denied

Hi all, I have to test some user priviliges. The goal is to be sure that an unauthorized user can't restart some modules (ssh, mysql etc...). I'm trying to automate it with a shell script but in same cases I got the syslog broadcast message. Is there any way to simply get a return code... (3 Replies)
Discussion started by: Dedalus
3 Replies

8. Shell Programming and Scripting

Lock the 2nd script!

Hi All, newbie here, is it possible to lock my second script? because my 1st script is still running. Ex. 1st run : 1st script.sh --> running..... 2nd run : 1st script.sh --> lock because the script is still running.. i don't have any idea how to do it. Please advise, Thanks,... (1 Reply)
Discussion started by: nikki1200
1 Replies

9. Shell Programming and Scripting

Script lock functionality

Hi All, My requirement is i have a script A.sh .When a person A runs the script A.sh it should get locked and person B should not run the script. i followed the below code f_script_lock() { process=$1 user=`ps -ef | grep -i "$process" | grep -i 'ksh' | awk '{print $1;}'` if ; then ... (1 Reply)
Discussion started by: mohanalakshmi
1 Replies

10. UNIX for Beginners Questions & Answers

Perl script with lock to execute only once in a day

Hi, I am new to perl and have a script to which i want to ensure that no matter how many ever times i execute the script it should execute only once per day. Cronjob is not a safe method as I want to built in capability inside the script. (1 Reply)
Discussion started by: ctrld
1 Replies
All times are GMT -4. The time now is 04:38 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy