Imported upstream version 1.5
[manpages-zh.git] / src / man1 / lockfile.1
blobe95e76476cf9af86a83889a83a38736f0f77d37d
1 .TH LOCKFILE 1 \*(Dt BuGless
2 .SH NAME(名称)
3 lockfile \- 条件标志文件创建命令
4 .SH SYNOPSIS(总览)
5 .B lockfile
6 .I "\fB\-\fPsleeptime"
8 .I "\fB\-r \fPretries"
10 .if n .ti +0.5i
11 .I "\fB\-l \fPlocktimeout"
13 .I "\fB\-s \fPsuspend"
15 .B "\-!"
17 .B "\-ml"
19 .B "\-mu"
21 .I filename
22 \&.\|.\|.
23 .SH DESCRIPTION(描述)
25 .B lockfile可以用来创建一个或多个
26 .I 信号量(semaphore)
27 .IR 文件.如果lockfile不能创建所有指定的文件(按照指定的顺序),那么它会等待一段
28 .I 休眠期(sleeptime) 
29 (默认为8秒)并从不成功的最后一个文件开始重试.你可以指定失败返回之前
30 .I 重试(retries)
31 的次数.
32 如果
33 .I retries
34 的次数设为\-1(默认地,也即
35 .BR \-r\-1 )
36 lockfile会永远重试下去.
37 .PP
38 如果在所有文件创建之前
39 .I retries
40 的次数已经满了,lockfile会返回失败的信息并删除所有已经创建的文件.
41 .PP
42 在shell脚本中使用lockfile作为循环的条件可以很容易地通过使用
43 .B \-!
44 标识反向退出的状态来实现.为了防止无限循环,除了lockfile已经存在以外的任何原因的失败都不会反向为成功状态,而是仍然以失败状态返回.
45 .PP
46 所有标识可以在命令行中的任何地方指定,碰到它们就进行处理.命令行简单地由左至右进行解析.
47 .PP
48 所有通过lockfile创建的文件都是只读的,因此必须使用
49 .B rm
50 .BR \-f
51 来删除.
52 .PP
53 如果你指定了一个
54 .I locktimeout
55 那么lockfile会在lockfile最后一次修改/创建之后locktimeout秒过后强制性地删除(很可能是一些其它程序意外死掉很长一段时间后造成不能清除残余的lockfiles).Lockfile不受时钟偏差的影响.在lockfile强制被清除之后,延迟的
56 .I suspend
57 秒(默认为16)开始计数,这是为了防止无意的直接删除了任何由另一程序新创建的lockfile(与
58 .BR procmail (1))
59 中的
60 .BR SUSPEND
61 比较).
62 .SS "Mailbox locks"(邮箱锁定)
63 如果系统邮件spool目录有权限允许它,或者如果lockfile正好被setgid了,那么它可以通过
64 使用相应的选项
65 .B "\-ml"
66
67 .B "\-mu"
68 lock和unlock你的系统邮箱.
69 .SH EXAMPLES(示例)
70 假设你想确定访问文件"important"是串行的,也即,没有其它程序或shell脚本允许访问它.为了简省起见,让我们假定它是一个shell脚本.在这个例子中,你应该像这样解决:
71 .RS
72 \&.\|.\|.
73 lockfile important.lock
74 \&.\|.\|.
75 access_"important"_to_your_hearts_content
76 \&.\|.\|.
77 rm \-f important.lock
78 \&.\|.\|.
79 .RE
80 现在如果所有访问"important"的脚本按照这条规则,你就可以确保在`lockfile'和`rm'命令之间至多只有一个脚本在执行.
81 .SH ENVIRONMENT(环境变量)
82 .TP 2.3i
83 .B LOGNAME
84 用作隐含变量以确定调用者的登录名
85 .SH FILES(相关文件)
86 .TP 2.3i
87 .B /etc/passwd
88 为了验证和/或纠正调用者的登录名(如果需要的话,同时也是为了找出HOME目录)
89 .TP
90 .B /var/spool/mail/$LOGNAME.lock
91 系统邮箱的lockfile,出现在其中的环境变量不由系统的环境变量决定,而是会通过在/etc/passwd中查找确定.
92 .SH "SEE ALSO"(另见)
93 .na
94 .nh
95 .BR rm (1),
96 .BR mail (1),
97 .BR binmail (1),
98 .BR sendmail (8),
99 .BR procmail (1)
102 .SH DIAGNOSTICS(诊断)
103 .TP 2.3i
104 Filename too long,.\|.\|.
105 使用更短的文件名.
107 Forced unlock denied on "x"
108 没有对lockfile "x"所存放的目录的写的权限,或者超过一个lockfile几乎同时正在试图强制lock.
110 Forcing lock on "x"
111 lockfile "x"因为超时的缘故将要强制删除
112 (与
113 .BR procmail (1))
114 中的
115 .BR LOCKTIMEOUT
116 作比较).
118 Out of memory,.\|.\|.
119 系统交换空间溢出.
121 Signal received,.\|.\|.
122 Lockfile将删除到此为止创建的所有文件并终止.
124 Sorry,.\|.\|.
125 .I retries
126 限制已经到达.
128 Truncating "x" and retrying lock
129 "x"看上去不是有效的文件名.
131 Try praying,.\|.\|.
132 缺失子目录或者权限不够.
133 .SH BUGS
134 确实少于一个.
135 .SH WARNINGS(警告)
136 .B \-!
137 标识的操作行为,尽管有用,但是并不很直接或一致.当测试lockfile的返回值时,shell脚本编写者应该仔细考虑是使用
138 .B \-!
139 标识简单地作反向测试,还是对原来的退出代码执行一次转换.
140 通常,
141 .B \-!
142 标识应该只用在lockfile是循环的条件之时.
143 .SH MISCELLANEOUS(杂项)
144 Lockfile不兼容NFS,而且八位还原.
145 .SH NOTES(备注)
146 使用\-h或\-?选项调用lockfile会使得它显示命令行方式的帮助页.使用\-v选项调用会使得它显示版本信息.
148 多个
149 .B \-!
150 标识会切换返回状态.
152 因为标识可以出现在命令行的任何位置,所以任何一个以'-'开头的文件名必须加'./"在前面.
154 当任何接在后面的文件正在创建(也即,它们正在使用)时,
155 .I retries
156 的次数不能重新设置.不过,它可以通过在命令行上指定
157 .RI \-r newretries
158 于每个文件之后来重新设置.
160 尽管任何名字的文件都可用作lockfiles,通常习惯还是使用扩展名为'.lock'的文件来lock邮件文件夹(它添加于邮件夹名之后).如果不想担心文件名太长了,也不必遵从任何其它的lockfilename的习惯,那么一个最好的方法就是通过添加前缀`lock.'来生成一个与已经存在的文件相应的lockfilename,并且在其后添加锁定文件的i-node数.
161 .Sh SOURCE(源自)
162 该程序为 http://www.procmail.org/或者
163 ftp.procmail.org的
164 .BR pub/procmail/
166 .I procmail mail-processing-package
167 (v3.14)的一部分.
168 .Sh MAILINGLIST(邮件列表)
169 有一个针对procmail包中任何程序相关问题的邮件列表:
171 <procmail-users@procmail.org>
173 用来提交问题/答案.
175 <procmail-users-request@procmail.org>
177 用来请求订阅.
181 如果你想即时获得新版本和公开补丁的通告,请发订阅请求到
183 procmail-announce-request@procmail.org
185 (这是一个只读列表).
186 .SH AUTHOR
187 Stephen R. van den Berg
189 <srb@cuci.nl>
191 .SH "[中文版维护人]"
192 .B riser <boomer@ccidnet.com>
193 .SH "[中文版最新更新]"
194 .BR 2001/08/08
195 .SH "《中国linux论坛man手册页翻译计划》:"
196 .BI http://cmpp.linuxforum.net