I'm running cygwin bash on Windows 8.1. I would like to to write a OS neutral bash script that uses the commands like lock, block and unlock.
Do I need to write lock, block and unlock myself in C++?
I'm hoping someone has already written them.
My bash script would look something like this:
Code:
lock --name="xyz" &
lockpid=$!
# wait until we have the lock
block --name "xyz"
# OK, we have the lock, keep the lock until we are done
mkdir "/cygdrive/f/abc"
cp def /cygdrive/f/abc/"
# All done: raise the mutex so the child process running lock will now release the semaphore and exit
unlock --name="xyz"
# I don't know if we really need the unlock command, we could just kill the lock and hope it releases the semaphore
kill $lockpid
It seems to me someone should have written these commands a long time ago and made them available to perl, bash, python, ruby... programmers. Can anyone tell me where to get these programs?
You will already find advisory locks in many different systems and languages as "flock".
Code:
$ man 2 flock
FLOCK(2) Linux Programmer's Manual FLOCK(2)
NAME
flock - apply or remove an advisory lock on an open file
SYNOPSIS
#include <sys/file.h>
int flock(int fd, int operation);
DESCRIPTION
Apply or remove an advisory lock on the open file specified by fd. The
argument operation is one of the following:
LOCK_SH Place a shared lock. More than one process may hold a
shared lock for a given file at a given time.
LOCK_EX Place an exclusive lock. Only one process may hold an
exclusive lock for a given file at a given time.
LOCK_UN Remove an existing lock held by this process.
A call to flock() may block if an incompatible lock is held by
another process. To make a nonblocking request, include LOCK_NB
(by ORing) with any of the above operations.
...
$ perldoc -f flock
flock FILEHANDLE,OPERATION
Calls flock(2), or an emulation of it, on FILEHANDLE. Returns
true for success, false on failure. Produces a fatal error if
used on a machine that doesn't implement flock(2), fcntl(2)
locking, or lockf(3). "flock" is Perl's portable file locking
interface, although it locks only entire files, not records.
...
There's also a "flock" command (as opposed to the library routine of the same name) available which may be pre-installed or at least pre-packaged on the systems you care about. It does exactly what you'd expect... If you need to pull the source the man page says this:
So you don't need to write your own unless you want to.
---------- Post updated at 14:23 ---------- Previous update was at 14:19 ----------
And to answer the question in your script comments, if you use lock files, you don't need to bother cleaning up since when the process dies the lock is released. But if you do code something using semaphores instead, you will need to make sure to clean up since they aren't link to the existence of a given process and clear on their own.
I use Debian default encryption disk encryption. Only /boot it's not encrypted. When I boot I need to type my password, and then I will be logged in. But now I can't login. It always says that I typed the wrong password, but I typed the correct password.
I tried to boot in live-CD and try unlock... (3 Replies)
Requirement:First i need to unlock the directory which i had a script for it.If i select app1 it should unlock the directory and after chnages in the script once need to lock the directory with lock command
The below highlighed variables in lock and unlock has to be changed according... (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)
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)
We have two processes, one which copies a control file into a folder and another which is polling this folder and reading the control files.
Sometimes they clash and the reader fails because the copy is still happening.
We have been told that we should change the copy to a move because the... (1 Reply)
When I do HMC upgrade, I download HMC code from IBM web site and burn it to a DVD disk, when I get the first DVD out of HMC's dvd rom and input the second DVD, it shows error:
The requested device is already locked by the process: Install Corrective Service.
Would you like to try to request a... (2 Replies)
I only able to lock user ID with passwd -l username
It seems there is no option for me to unlock ID in solaris?
Is there any command as below?
passwd -u username
Appreciate someome can share with me the way to do it. (1 Reply)
When I want to use the editor ,whether vi or textedit,it prompts for entering a key. How can I disable this function?many thanks for offering solutions! (1 Reply)
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)