Sponsored Content
Top Forums Shell Programming and Scripting Flock preventing function to work Post 302993663 by batchenr on Monday 13th of March 2017 09:23:26 AM
Old 03-13-2017
[SOLVED]Flock preventing function to work

Hi i have a script that check pings and i use flock to so the script wont run
multipul times :

its not the whole script but this is the idea :

Code:
(
flock -x -w 3 200 || exit 1
/usr/sbin/fping -c$count -i$interval -a $hosts > $FILE1  2>&1
) 200>/var/lock/.myscript.exclusivelock

now i made a function for debug before the flock starts :
Code:
function DEBUG() {
echo "
==============================
$(date)
=============================="
echo  "RSULTE:  $RESULTS"
}

and im calling DEBUG func inside the flock like this :

Code:
(
flock -x -w 3 200 || exit 1
/usr/sbin/fping -c$count -i$interval -a $hosts > $FILE1  2>&1
DEBUG
) 200>/var/lock/.myscript.exclusivelock


and it does not work. i can see that if i call DEBUG outside flock
it is writing in white and in flock its written in red

is there a special way to call function inside a flock ?

thanks

Last edited by batchenr; 03-15-2017 at 04:38 AM..
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Will the continue function work ????

I have written a script which does a following functions:- 1) Check a area if it is mounted or not 2) If the area is not mounted it will prompt the user to mount the are. 3) Once the area is mounted and the option is given as Y or y the script continues... My question is will the below... (2 Replies)
Discussion started by: kamlesh_p
2 Replies

2. Web Development

work with date function

hi, how can i can pass the value of unixformat to date/time? and how can i retrieve the day/month/year from a date? thanks a lot for your help ps:i using php (1 Reply)
Discussion started by: jasonx22
1 Replies

3. Programming

why printf() function don't go work?

I use FreeBSD,and use signal,like follows: signal(SIGHUP,sig_hup); signal(SIGIO,sig_io); when I run call following code,it can run,but I find a puzzled question,it should print some information,such as printf("execute main()") will print execute main(),but in fact,printf fuction print... (2 Replies)
Discussion started by: konvalo
2 Replies

4. Shell Programming and Scripting

Cannot get grep to work within function.

Hello again, Am having an issue now with getting a simple grep command to work within a function.. The function is as below... function findRecord() { output=grep "001" recordDatabase echo $output } At the moment the "001"... (3 Replies)
Discussion started by: U_C_Dispatj
3 Replies

5. UNIX for Dummies Questions & Answers

copy *. does not work in function

Hi, I want to copy a file/directory ( recursively , if needed) and if destination directory does not exist create it ( with parent directory, if needed). funcopy () { if ; then echo "$2 exists , copying files" cp -r "$1" "$2" else echo "Directory does not exist;Create directory" mkdir... (1 Reply)
Discussion started by: greet_sed
1 Replies

6. Shell Programming and Scripting

How the Sleep function will work?

Hi All, I am new to Unix , there i am facing one problem with sleep command. that is .. in while loop i have defined sleep function .. my condition is like this while #i knew this is infinite loop do sleep 200 echo "hello " done. this condition will never become .. true... (3 Replies)
Discussion started by: mandlysreedhar
3 Replies

7. Shell Programming and Scripting

Function doesn't work

Hello, and here's my problem: I can't get my function to do what I want. When I call my function get_from_A_to_F I give it an argument $remainder. I want my function to substitute a number higher than 9 to a specific letter. If the argument is equal to 10 than it should change it to "A".... (8 Replies)
Discussion started by: linas
8 Replies

8. UNIX for Advanced & Expert Users

Semaphore - lockfile/flock

Hi, I have a process which can run one instance at a time. Currently we have multiple scripts trying to kickoff this process. I wanted to implement the semaphore mechanism to achieve this. I was going through few examples. The below code seems to be reasonable solution. ... (5 Replies)
Discussion started by: tostay2003
5 Replies

9. UNIX for Beginners Questions & Answers

UNIX/Shell function does not work as wished

Hello everyone I really hope you can help me, I can't continue: Im on a project to work with my Server. I wanted to put on my server all data-systems and I did this: df -h The output is a string. How can I turn the string into a table? Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf... (5 Replies)
Discussion started by: anonymuser
5 Replies

10. OS X (Apple)

'time' does NOT work on a function in 'dash'.

Hi guys and gals... I am writing a piece of code that is dash compliant and came across this error. I have put it in the OSX section as that is what I am using. I have no idea what the 'dash' version is but was installed about 6 months ago. MBP, OSX 10.12.6, default terminal running dash on... (4 Replies)
Discussion started by: wisecracker
4 Replies
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 parameter 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 non-blocking request, include LOCK_NB (by ORing) with any of the above operations. A single file may not simultaneously have both shared and exclusive locks. Locks created by flock() are associated with a file, or, more precisely, an open file table entry. This means that duplicate file descrip- tors (created by, for example, fork(2) or dup(2)) refer to the same lock, and this lock may be modified or released using any of these descriptors. Furthermore, the lock is released either by an explicit LOCK_UN operation on any of these duplicate descriptors, or when all such descriptors have been closed. A process may only hold one type of lock (shared or exclusive) on a file. Subsequent flock() calls on an already locked file will convert an existing lock to the new lock mode. Locks created by flock() are preserved across an execve(2). A shared or exclusive lock can be placed on a file regardless of the mode in which the file was opened. RETURN VALUE
On success, zero is returned. On error, -1 is returned, and errno is set appropriately. ERRORS
EWOULDBLOCK The file is locked and the LOCK_NB flag was selected. EBADF fd is not a not an open file descriptor. EINTR While waiting to acquire a lock, the call was interrupted by delivery of a signal caught by a handler. EINVAL operation is invalid. ENOLCK The kernel ran out of memory for allocating lock records. CONFORMING TO
4.4BSD (the flock(2) call first appeared in 4.2BSD). A version of flock(2), possibly implemented in terms of fcntl(2), appears on most Unices. NOTES
flock(2) does not lock files over NFS. Use fcntl(2) instead: that does work over NFS, given a sufficiently recent version of Linux and a server which supports locking. Since kernel 2.0, flock(2) is implemented as a system call in its own right rather than being emulated in the GNU C library as a call to fcntl(2). This yields true BSD semantics: there is no interaction between the types of lock placed by flock(2) and fcntl(2), and flock(2) does not detect deadlock. flock(2) places advisory locks only; given suitable permissions on a file, a process is free to ignore the use of flock(2) and perform I/O on the file. flock(2) and fcntl(2) locks have different semantics with respect to forked processes and dup(2). SEE ALSO
open(2), close(2), dup(2), execve(2), fcntl(2), fork(2), lockf(3) There are also locks.txt and mandatory.txt in /usr/src/linux/Documentation. Linux 2002-04-24 FLOCK(2)
All times are GMT -4. The time now is 10:19 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy