Jeg*_*sch 2 linux file atomic lsof
使用lsof命令,我可以确定某个进程是否正在使用某个文件,但是我需要自动检查文件以供使用,并且仅在未使用时才移动它.这些文件正由我无法控制的各种其他程序使用,所以我不能使用咨询锁.目的是阻止其他进程修改该文件,因此只需在进程打开时移动该文件就不行了.有解决方案吗
更新:我认为我认为适合我的目的的解决方案.最终目标是在其他程序完成修改后将这些文件处理为最终状态.如果我将文件移动到另一个目录,我可以使用lsof通过其旧路径检查它是否仍在使用中; 如果是这样,我只是稍后再检查,直到它不再使用,然后处理文件.通过将文件移动到另一个目录,它会隐藏用户和程序中的文件.我不希望用户和程序在旧目录中看到该文件,因为这使他们有机会在我使用lsof和处理文件之间打开文件,这意味着我将以修改状态处理文件.
怎么用fuser?在文件上运行它,它将显示使用该文件的进程的PID.如果没有PID,则没有使用该文件.如果没有使用该文件的进程,它也将返回非零退出代码.
但请注意,您仍然可能遇到竞争条件,因为进程可能会在fuser命令返回之后和之前打开文件mv.
一些示例代码,用于在未使用时移动文件:
if ! fuser /my/file
then
mv /my/file /somewhere/else
fi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5062 次 |
| 最近记录: |