标签: file-locking

如何检查flock执行的命令的退出代码?

问候所有.我正在设置一个cron作业来执行一个bash脚本,我担心下一个可能会在前一个脚本结束之前启动.一个小小的谷歌搜索显示,一种流行的解决方法是flock命令,使用方式如下:

flock -n lockfile myscript.sh
if [ $? -eq 1 ]; then
    echo "Previous script is still running!  Can't execute!"
fi
Run Code Online (Sandbox Code Playgroud)

这非常有效.但是,如果我想检查退出代码,我该怎么办myscript.sh?无论退出代码返回将被覆盖flock的,所以我不知道,如果它成功,或不执行的方式.

bash cron exit-code file-locking flock

3
推荐指数
1
解决办法
5046
查看次数

哪个调试工具(如果有的话)允许我识别锁定文件的线程?

我正在调试一个定期引发的测试IOException,注意到一个文件因为被另一个进程使用而无法删除.我怀疑这个过程确实是我的测试工具,并且进程中的其他一些线程在我预期时没有处理它的文件资源.

有没有一个工具可以用来确定哪个线程阻挡了阻碍锁?如果我可以识别线程,那么我可以检查它的调用堆栈,并至少尝试确定资源尚未处理的原因.该SOS调试工具看起来很有希望,但我不认为这会从我的调查中删除的猜测相当数量的任何特征.

一种想法是识别本机OS线程ID,然后可以通过SOS将其映射到托管线程ID.我将如何完成前者?

.net io file-locking sos ioexception

3
推荐指数
1
解决办法
200
查看次数

Powershell-检查文件是否完成写入

我有一个Powershell代码,它充当给定文件夹路径上的文件侦听器。侦听器启动对另一个程序的命令行调用,该程序打开并播放文件。

问题在于,如果将任何文件放入此文件夹,PowerShell代码都会立即启动命令行调用。如果文件很大(例如100 + mb),这将是一个问题,因为当有人将文件复制到文件夹中时,当命令功能启动并尝试打开文件时,文件可能只完成了5%的“写入”操作(并且失败)。

Powershell中是否有办法检查文件是否仍在写入?这样,我可以建立一个循环,每隔x秒检查一次,并且仅在写入完成后才运行?

如果文件也被写入,它会保持“锁定”吗?可以在Powershell中检查吗?

感谢大家!

powershell file-locking

3
推荐指数
1
解决办法
2826
查看次数

如何让人类和程序访问同一个文件而不踩对方的脚趾

假设我有一个文件urls.txt,其中包含我正在监控的URL列表.我的监控脚本偶尔会编辑该文件,例如,指示每个URL是否可访问.我还想手动编辑该文件,添加或更改URL列表.我怎样才能允许这样我手动编辑时不必考虑它?

以下是一些可能的答案.你会怎么做?

  1. 参与hackery就像让程序检查vim或emacs创建的锁定文件一样.由于这只适合我,这实际上是有效的.

    • 如果人类编辑始终优先,那么只需要总是让人类破坏程序的更改(例如,忽略编辑器警告文件已在磁盘上更改).然后程序可以在下一个循环中重做它的更改.尽管如此,在用户编辑文件时更改文件并不是那么好.

    • 永远不要让人触摸程序正在进行修改的文件.重新思考设计,只有一个文件只有人类编辑,另一个文件只有程序编辑.

    • 为人类提供一个自定义工具来编辑执行相应文件锁定的文件.这可能与锁定文件然后启动编辑器或自定义接口(可能是简单的命令行界面)以插入/更改/删除文件中的条目一样粗糙.

    • 使用数据库而不是平面文件,然后锁定全部自动处理.

(请注意,我编写了URL监控示例,以使其更具体,因为我实际想到的可能是太奇怪和分散注意力 - 这个问题严格来说是关于如何让人类和程序都修改相同的状态文件.)

unix monitoring utilities locking file-locking

2
推荐指数
1
解决办法
150
查看次数

Mac 网络上 SQLite 中的“数据库已锁定”错误

我使用 SQLite(实际上是 PySQLite)创建了一个简单的数据库。当我从本地机器(即 Windows 机器驱动器上的程序和数据库文件)查询或写入数据库时​​,它工作正常。但是,当我将数据库文件复制到我的网络驱动器(时间胶囊)时,Windows 机器虽然可以看到这些文件并且对驱动器具有完全的读/写访问权限,但它甚至会给我一个“SQL 错误:数据库被锁定”执行简单选择时!

Mac 上的网络查询工作正常。

没有花哨的多访问——只有一台机器打开了数据库。似乎是一些奇怪的 Mac 网络问题。发生在 Python 程序或 SQLite3 命令行中。我正在使用 SQLite 3.6.14.2。

有人见过这个问题吗?有什么办法修复吗?真的不想过多地使用 MYSQL,因为这是一个简单的单用户程序,但我想在多台机器上使用它。

谢谢。

sqlite file-locking

2
推荐指数
1
解决办法
3827
查看次数

通过一个进程锁定文件

我有一个应用程序,它同时运行多个进程来读取和写入文件.

private Process PrepareProcess(string workingDirName, string scriptPath, string[] args) {
        var process = new Process {
            StartInfo = {
                WorkingDirectory = workingDirName,
                FileName = scriptPath,
                Arguments = string.Format(string.Join(" ", args))
            }
        };
        return process;
    }
Run Code Online (Sandbox Code Playgroud)

我需要确保文件只能由一个进程同时修改.怎么做?

该进程将运行外部脚本,该脚本将修改文件.我无法管理如何打开文件.我需要管理运行过程.

谢谢!

.net c# process file-locking

2
推荐指数
1
解决办法
722
查看次数

如何在.Net中访问Windows全局文件锁表?

有没有办法,通过.Net或通过删除.Net中的Win32 API来访问Windows全局文件锁表?

我正在寻找一个更好的解决方案来确定一组文件是否被锁定,而不是检查每个单独的文件以查看是否已对其进行锁定.

.net file-locking filelock

2
推荐指数
1
解决办法
119
查看次数

使用Java FileLock有多安全?

使用java.nio.channels.FileLock在进程间锁定文件有多安全?据说如果我们有一个独占锁,其他进程就无法访问该文件.但是,关于另一个SO问题的下面答案表明其他进程也必须检查文件锁,以便我们的进程安全.

(a)您是否知道锁定文件不会阻止其他进程接触它,除非它们也使用锁?

所以我测试了我的代码并尝试使用Windows文本编辑器更改了一个我已经锁定的文件,并且我不会受到伤害,但是当我使用Notepad ++进行测试时却没有.

是否有在Java 6中正确锁定文件的解决方案?

java nio file-locking filelock

2
推荐指数
1
解决办法
2318
查看次数

使用C++锁定/防止在Linux上编辑源文件

如何使用C++以编程方式锁定/解锁或以其他方式阻止/启用编辑Linux上的源文件.

我希望能够锁定源文件,这样如果我在编辑器中打开它,它将不允许我保存回相同的源文件.

我想可能将权限更改为只读(并在以后将其更改为读写):我如何从C++中执行此操作?

c++ linux file-locking

1
推荐指数
1
解决办法
1621
查看次数

永久锁定文件

我正在 VS2010 上使用 C# 开发文件锁定器/解锁器应用程序。我想要的是使用我的应用程序使用密码锁定文件,然后随时解锁。

事实上,我使用以下代码来锁定文件,但仅当应用程序仍在运行时才会锁定文件;当我关闭应用程序时,文件被解锁。

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Configuration;
using System.Windows.Forms;

namespace LockFile
{
    public enum LockStatus
    {
        Unlocked,
        Locked
    }

    public class LockFilePresenter
    {
        private ILockFileView view;
        private string file2Lock = string.Empty;
        private FileStream fileLockStream = null;

        public LockFilePresenter(ILockFileView view)
        {
            this.view = view;
        }

        internal void LockFile()
        {
            if (string.IsNullOrEmpty(file2Lock) || !File.Exists(file2Lock))
            {
                view.ShowMessage("Please select a path to lock.");
                return;
            }

            if (fileLockStream != null)
            {
                view.ShowMessage("The path is already locked."); …
Run Code Online (Sandbox Code Playgroud)

c# encryption file-locking filestream

0
推荐指数
1
解决办法
1746
查看次数