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
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)
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)
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)
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)
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)
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)
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)
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)
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)