Sponsored Content
Top Forums Shell Programming and Scripting Use of flock command for whole script Post 302982600 by Don Cragun on Friday 30th of September 2016 02:07:01 PM
Old 09-30-2016
Quote:
Originally Posted by RudiC
If a lock file as proposed by Don Cragun exists, you could also check if the process is still running, e.g. like
Code:
read A PID REST <"$LockFile"
if ! lsof -p$PID >/dev/null; then  rm $LockFile; fi

On many UNIX systems, /tmp is wiped clean during the boot process. The above code works great in this case.

But, if /tmp is not wiped clean by a reboot on your system, there is a small chance that your script could have been killed by a SIGKILL signal (preventing removal of the lock file), having a system reboot, having some other process be started with the PID your script was using on a prior boot, and then having the above code kill the wrong process. Even though the chance is small, on a system that doesn't clear /tmp on every boot, I prefer manual intervention if a lock file is left around when it shouldn't be there.

I don't know if CentOS V6 normally clears /tmp on boot, nor if you have changed the default CentOS boot sequence to keep /tmp as it was or to clear /tmp as part of your local both sequence.
This User Gave Thanks to Don Cragun For This Post:
 

7 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

can anyone help with shell script command about searching word with grep command?

i want to search in the current directory all the files that contain one word for example "hello" i want to achieve it with the grep command but not with the grep * (2 Replies)
Discussion started by: aintour
2 Replies

2. Shell Programming and Scripting

Need help! command working ok when executed in command line, but fails when run inside a script!

Hi everyone, when executing this command in unix: echo "WM7 Fatal Alerts:", $(cat query1.txt) > a.csvIt works fine, but running this command in a shell script gives an error saying that there's a syntax error. here is content of my script: tdbsrvr$ vi hc.sh "hc.sh" 22 lines, 509... (4 Replies)
Discussion started by: 4dirk1
4 Replies

3. Shell Programming and Scripting

SH script, variable built command fails, but works at command line

I am working with a sh script on a solaris 9 zone (sol 10 host) that grabs information to build the configuration command line. the variables Build64, SSLopt, CONFIGopt, and CC are populated in the script. the script includes CC=`which gcc` CONFIGopt=' --prefix=/ --exec-prefix=/usr... (8 Replies)
Discussion started by: oly_r
8 Replies

4. 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

5. Shell Programming and Scripting

Help using Flock (file lock)

Hello, I have been working on using "flock"/file lock to prevent two instances of a bash script from being executed. Below is a simplified version of what I have to illustrate the flock part. It works as it is set up there below however the piece I am trying to figure out is how to get it to... (2 Replies)
Discussion started by: infrared013
2 Replies

6. Shell Programming and Scripting

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 : ( 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... (4 Replies)
Discussion started by: batchenr
4 Replies

7. Shell Programming and Scripting

Execute ssh command with additional terminal command to any remote user not working script

Hello i am having an issue with bash script and this is the code now=$(cat hosts1.txt | awk '{print $2;}') while read n ;do ssh root@$now 'useradd test1; echo -e "test1\ntest1" | passwd test1 && echo "test1 ALL=(ALL:ALL) ALL" >> /etc/sudoers' When i execute only part with cat, it... (8 Replies)
Discussion started by: tomislav91
8 Replies
tmpfs(5)						   Debian Administrator's Manual						  tmpfs(5)

NAME
tmpfs - variables that configure tmpfs filesystems mounted during boot DESCRIPTION
The /etc/default/tmpfs file contains variable settings in POSIX format: VAR=VAL Only one assignment is allowed per line. Comments (starting with '#') are also allowed. This file is for the configuration of tmpfs filesystems mounted in early boot, before filesystems from /etc/fstab are mounted. This cur- rently includes the filesystems /run, /run/lock, /run/shm and /tmp. /run is required to be a tmpfs on systems supporting tmpfs mounts. /run/lock and /run/shm may be separate tmpfs mounts, useful for enforcing separate size limits. /tmp is not required to be a tmpfs, but is mounted as a tmpfs by default. /run Previously configured using RAMRUN in /etc/default/rcS, /run is now always mounted as a ram file system (tmpfs). The size of the tmpfs can be controlled using TMPFS_SIZE and RUN_SIZE. If desired, the defaults may also be overridden with an entry in in /etc/fstab, for example: tmpfs /run tmpfs nodev,nosuid,size=10%,mode=755 0 0 The contents of /run will always be lost on system reboot, and it it is no longer explicitly cleaned at boot. Packages can not expect directories in /run to exist after boot. Packages expecting this are buggy and need to be fixed. Note that /run was previ- ously /var/run, and a compatibility symlink or bind mount will be created to allow the old path to continue to function. /run/lock Previously configured using RAMLOCK in /etc/default/rcS. Configured using RAMLOCK, TMPFS_SIZE and LOCK_SIZE. If desired, the defaults may also be overridden with an entry in in /etc/fstab, for example: tmpfs /run/lock tmpfs nodev,noexec,nosuid,size=52428800,mode=1777 0 0 Note that irrespective of these settings, /run/lock will be located on a tmpfs, either one mounted on /run/lock (if RAMLOCK=yes) or one mounted on /run (if RAMLOCK=no), and as a result the contents of /var/lock will always be lost on system reboot, and it it is no longer explicitly cleaned at boot. Packages can not expect directories in /var/lock to exist after boot. Packages expecting this are buggy and need to be fixed. Note that /run/lock was previously /var/lock, and a compatibility symlink or bind mount will be created to allow the old path to continue to function. /run/shm Previously configured using RAMSHM in /etc/default/rcS. Note that the setting in /etc/default/rcS, if present, will still be used, but the setting in /etc/default/tmpfs will take precedence if enabled. Configured using RAMSHM, TMPFS_SIZE and SHM_SIZE. If desired, the defaults may also be overridden with an entry in in /etc/fstab, for example: tmpfs /run/shm tmpfs nosuid,nodev,size=40%,mode=1777 0 0 Packages can not expect directories in /run/shm to exist after boot. Note that /run/shm was previously /dev/shm, and a compatibil- ity symlink or bind mount will be created to allow the old path to continue to function. If an fstab entry for /dev/shm exists instead of /run/shm, then /dev/shm will continue to be used; note that this is only needed for users of newer versions of the Oracle database, which contain a buggy check for /dev/shm. /tmp Previously configured using RAMTMP in /etc/default/rcS. Note that the setting in /etc/default/rcS, if present, will still be used, but the setting in /etc/default/tmpfs will take precedence if enabled. Configured using RAMTMP, TMPFS_SIZE and TMP_SIZE. If desired, the defaults may also be overridden with an entry in in /etc/fstab, for example: tmpfs /tmp tmpfs nodev,nosuid,size=20%,mode=1777 0 0 Packages can not expect directories in /tmp to exist after boot. OPTIONS
The following variables can be set. Enabling or disabling tmpfs mounts The following options enable specific mounts (with the exception of /run) to be enabled or disabled. Note that the addition of an entry to /etc/fstab for any of the following will enable the mount unconditionally, overriding the setting here. RAMLOCK Mount /run/lock as a tmpfs (separately from /run). Defaults to yes; set to no to disable (/run/lock will then be part of the /run tmpfs, if available). RAMSHM Mount /run/shm as a tmpfs (separately from /run). Defaults to yes; set to no to disable (/run/shm will then be part of the /run tmpfs, if available). RAMTMP Mount /tmp as a tmpfs. Defaults to no; set to yes to enable (/tmp will be part of the root filesystem if disabled). /tmp may also be configured to be a separate mount in /etc/fstab, which will override the RAMTMP setting. Configuring size limits for tmpfs mounts The following options configure size limits for tmpfs mounts. Note that the addition of an entry to /etc/fstab will override any of the limits specified here. The following _SIZE variables are the maximum size (in bytes) that tmpfs filesystems can use. The size will be rounded down to a multiple of the page size, 4096 bytes. If no size is set, TMPFS_SIZE will be used as the default. More complex mount options may be used by the creation of a suitable entry in /etc/fstab. For example: tmpfs /run tmpfs size=10% 0 0 is equivalent to RUN_SIZE=10% and will override the RUN_SIZE setting. This will allow additional options such as nr_blocks and nr_inodes to be used, and also adjustment of the mode, nodev, nosuid, noexec options should any change from the defaults be necessary. TMPFS_SIZE Maximum size for all tmpfs filesystems if no specific size is provided. The default is 20%VM (20% of virtual memory, including swap space). If no value is provided here, the kernel default (50% RAM) will be used. Note that the "%VM" suffix may be used in this and all the _SIZE settings below, but may not be used in /etc/fstab (the absolute size is calculated by the init scripts). RUN_SIZE Maximum size of /run (was previously /var/run). The default is 10% core memory; the size required varies widely depending upon the demands of the software being run; this heuristic scales /run usage on system size. Samba in particular has been seen to use at least 50MiB in a large heavily used server. Typical usage is hundreds of KiB, maximum is tens of MiB. LOCK_SIZE Maximum size of /run/lock (was previously /var/lock). Defaults to 5242880 (5 MiB). Typical usage: tens of KiB; maximum hundreds of KiB. The default of 5 MiB should ensure the limit is never reached. SHM_SIZE Maximum size of /run/shm (was previously /dev/shm). No default size; the size required varies widely depending upon the demands of the software being run. TMP_SIZE Maximum size of /tmp. No default size. Emergency overflow /tmp If the amount of free space on the root filesystem falls below a certain size, a tmpfs will be mounted on /tmp (irrespective of the RAMTMP setting, which this overrides). This is to permit logins when there would otherwise be too little free space for this to be possible. TMP_OVERFLOW_LIMIT Mount a tmpfs on /tmp if the amount of free space on the root filesystem is below the specified limit at boot time (default 1024 KiB). AUTHOR
Roger Leigh <rleigh@debian.org> SEE ALSO
mount(8), rcS(5). 18 Feb 2012 tmpfs(5)
All times are GMT -4. The time now is 02:34 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy