【问题标题】:Getting more information on Azure File share file handles - Get-AzStorageFileHandle获取有关 Azure 文件共享文件句柄的详细信息 - Get-AzStorageFileHandle
【发布时间】:2020-01-30 20:47:46
【问题描述】:

我从 azure 存储帐户文件共享中获得了打开的文件句柄,但这些信息似乎很难理解是什么进程启动了它或这个文件句柄在哪个文件上。

获取文件句柄https://docs.microsoft.com/en-us/powershell/module/az.storage/get-azstoragefilehandle?view=azps-2.7.0

https://github.com/Azure/azure-powershell/blob/master/src/Storage/Storage.Management/help/Get-AzStorageFileHandle.md#example-1-list-all-file-handles-on-a-file-share-recursively-and-sort-by-clientip-and-opentime

如何使用此列表中的 handleid 或 sessionid 获取更多信息?

我在 azure docs 和 Internet 上搜索了很多,但没有这方面的信息。

示例脚本和响应:

PS C:\>Get-AzStorageFileHandle -ShareName "mysharename" -Recursive | Sort-Object ClientIP,OpenTime 

HandleId    Path                  ClientIp       ClientPort OpenTime             LastReconnectTime FileId               ParentId             SessionId          
--------    ----                  --------       ---------- --------             ----------------- ------               --------             ---------          
28506980357                       104.46.105.229 49805      2019-07-29 08:37:36Z                   0                    0                    9297571480349046273
28506980537 dir1                  104.46.105.229 49805      2019-07-30 09:28:48Z                   10376363910205800448 0                    9297571480349046273

【问题讨论】:

  • 您还想获取什么信息?
  • @GauravMantri 我想了解是什么进程启动了它或文件句柄在哪个文件上。
  • 到目前为止,我已经阅读了support.microsoft.com/en-us/help/4022301/… 这篇文章,他们说使用 Handle.exe 来验证针对 Azure 文件共享打开的活动句柄。 (docs.microsoft.com/en-us/sysinternals/downloads/handle) 但我仍然不知道如何使用进程资源管理器 (handle.exe) 从 azure 文件共享中查看文件句柄
  • 这篇文章docs.microsoft.com/en-us/azure/storage/files/… 说通过关闭一些句柄来减少并发打开句柄的数量,然后重试。但在关闭文件句柄之前,我想了解哪个进程拥有该文件句柄或该文件句柄在哪个文件或目录上。

标签: azure azure-storage azure-storage-files process-explorer


【解决方案1】:

经过快速研究和本地测试,我相信 命令返回的“路径”是您要查找的文件或目录路径。 文件句柄不仅适用于文件,也适用于文件夹。 这里的诀窍是文件的句柄并不总是被持有。事实上,大多数应用程序一打开文件就释放文件句柄,比如记事本。因此,当您运行该命令时,大多数情况下,您只能看到文件夹的句柄,而不是文件的句柄。

为了验证这一点,我用下面的代码进行了测试:

        static void Main(string[] args)
        {
            string path = args[0];
            var file=File.Open(path, FileMode.OpenOrCreate);
            Console.WriteLine("Press any key to release the handle");
            Console.ReadKey();
            file.Close();
        }

执行File.Open时,进程持有句柄,然后我运行Get-AzStorageFileHandle。显示“test.csv”的句柄:

但是如果你用记事本打开文件,只会显示文件夹句柄。

无论如何,您可以使用返回的“路径”来确定其他人正在持有哪个文件。

顺便说一句,handle.exe 不适用于云环境。你不应该使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多