010 檔案鎖定

2022-05-27 04:57:07 字數 1699 閱讀 3460

#!/bin/bash

# filename:filelock

# 預設重試次數

retries="10"

# 預設操作

action="

lock

"# 用於鎖檔案的空命令

nullcmd="

'which true'

"# 設定選項

while getopts "

lur:

" opt; do

case $opt in

l) action="

lock";;

u) action="

unlock";;

r) action="

$optarg";;

esac

done

shift $(($optind - 1

))# $optind 是引數指標(選項索引)

if [ $# -eq 0 ]; then

catusage: $

0 [-l|-u] [-r retries] lockfile

where -l requests a lock (the default),

-u requests an unlock, -r x specifies a max

number of retries before it fails (default =$retries).

eof exit 1fi

# 確定是否有lockfile命令

if [ -z "

$(which lockfile | grep -v '^no ')

" ]; then

echo

"$0 failed: `lockfile` utility not found in path.

" >&2

exit 1fi

if [ "

$action

" = "

lock

" ]; then

if ! lockfile -1 -r $retries "$1"

2>/dev/null; then

echo

"$0: failed: couldn't create lockfile in time.

" >&2

exit 1fi

else

if [ ! -f "

$1" ]; then

echo

"$0: warning: lockfile $1 doesn't exist to unlock.

" >&2

exit 1fi

rm -f "$1"

fiexit

0

view code

備註:

1、此指令碼需要保證系統中預裝了lockfile,可通過 "man 1 lockfile" 來確認,看到了相應的手冊頁就說明安裝了

2、optarg:表示當前選項的引數

引數列表的初始值為1(即從$1開始)

處理帶引數的選項,值加2;

處理不帶引數的選項或非法選項,值加1

在case匹配開始的時候就已經增加,指向了下乙個選項的位置

shift $(($optind-2)) 讓當前選項(正在處理的選項)處於 $1 位置

shift $(($optind-1)) 讓下乙個選項(未處理的選項)處於 $1 位置

1 檔案測試 2 檔案操作

1 檔案測試函式 2 檔案操作 新建檔案 fopen filename,w 以 寫 的方式開啟乙個不存在的檔案,就會新建該檔案 檔案刪除 unlink 檔案複製 copy filename,aaa bb.txt 盡量使用 和相對路徑,因為linux只認 也沒有磁碟分割槽,而windows 和 都認 ...

15 4 1檔案位元組流 15 4 2檔案字元流

fileinputstream 檔案位元組輸入流 用來讀檔案 fileoutputstream 檔案位元組輸出流 用來寫檔案 demo類 public static void main string args catch filenotfoundexception e catch ioexcepti...

2 檔案 檔案操作

def fileno self,args,kwargs real signature unknown 返回檔案控制代碼在核心中的索引值,以後做io多路復用時可以用到 def flush self,args,kwargs real signature unknown 把檔案從記憶體buffer裡強制重...