从 lsof(Linux 命令行)中提取字段/属性

2024-02-13

随着最近迁移到 Flash 10(或者可能是发行版选择),我和许多其他人不再能够从 /tmp 复制 Flash 视频。不过,我在以下方面找到了解决方法:

首先,执行:

lsof | grep Flash

它应该返回如下输出:

plugin-co 8935    richard   16w      REG        8,1   4139180       8220 /tmp/FlashXXq4KyOZ (deleted)

注意:您可以在这里看到问题.../tmp 文件已释放文件指针。

但是,您可以使用 cp 命令来获取文件:

cp /proc/#/fd/# video.flv

其中第一个 # 是进程 ID (8935),第二个 # 是下一个数字(16,从 16w 开始)。

目前,这可行,但需要一些手动步骤。为了自动执行此操作,我想我可以提取 PID 和 fd 编号并将它们动态插入到 cp 命令中。

我的问题是如何将适当的字段放入变量中?我知道您可以使用 $1 等来获取输入参数,但是如何检索输出?

注意:我可以使用pidof plugin-container找到 PID,但我仍然需要其他数字(因为它告诉要保存哪个特定的 Flash 视频)。


以下命令将返回 PID 和 FD 中的所有文件/tmp文件名以“Flash”开头的文件

lsof -F pfn /tmp/Flash*

输出将如下所示:

p16471
f16
n/tmp/FlashXXq4KyOZ
f17
n/tmp/FlashXXq4KyOZ
p26588
f16
n/tmp/FlashYYh3JwIW
f17

其中字段标识符为 p: PID、f: FD、n: NAME。这-F选项旨在使输出lsof易于解析。

迭代这些并删除字段标识符很简单。

#!/bin/bash
c=-1
while read -r line
do
    case $line in
        f*)
            fds[pids[c]]+=${line:1}" "
            ;;
        n*)
            names[pids[c]]+=${line:1}" "
            ;;
        p*)
            pids[++c]=${line:1}
            ;;
    esac
done < <(lsof -F pfn -- /tmp/Flash*)

for ((i=0; i<=c; i++))
do
    for name in ${names[pids[i]]}
    do
        for fd in ${fds[pids[i]]}
        do
            echo "File: $name, Process ID: ${pids[i]}, File Descriptor: $fd"
        done
    done
done

像这样的行:

fds[pids[c]]+=${line:1}" "

将文件描述符累积在存储在由 PID 索引的数组中的字符串中。对于包含空格的文件名,执行此操作将会失败。如有必要,可以解决这个问题。

使用子字符串运算符删除该行的前导字段描述符字符:${line:1}从位置一开始并包含字符串的其余部分,因此它会删除字符零。

第二个循环只是一个演示,用于展示对数组的迭代。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 lsof(Linux 命令行)中提取字段/属性 的相关文章

  • 如何根据 HTTP 请求使用 Python 和 Flask 执行 shell 命令并流输出?

    下列的这个帖子 https stackoverflow com questions 15092961 how to continuously display python output in a webpage 我能够tail f网页的日志
  • 如何在 shell 脚本中并行运行多个实例以提高时间效率[重复]

    这个问题在这里已经有答案了 我正在使用 shell 脚本 它读取 16000 行的输入文件 运行该脚本需要8个多小时 我需要减少它 所以我将其划分为 8 个实例并读取数据 其中我使用 for 循环迭代 8 个文件 并在其中使用 while
  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c
  • 无法从 jenkins 作为后台进程运行 nohup 命令

    更新 根据下面的讨论 我编辑了我的答案以获得更准确的描述 我正在尝试从詹金斯运行 nohup 命令 完整的命令是 nohup java jar home jar server process 0 35 jar prod gt gt var
  • 在哪里可以找到并安装 pygame 的依赖项?

    我对 Linux 比较陌生 正在尝试安装 python 的 pygame 开发环境 当我运行 setup py 时 它说我需要安装以下依赖项 我找到并安装了其中之一 SDL 然而 其他人则更加难以捉摸 Hunting dependencie
  • fopen 不返回

    我在 C 程序中使用 fopen 以只读模式 r 打开文件 但就我而言 我观察到 fopen 调用没有返回 它不返回 NULL 或有效指针 执行在 fopen 调用时被阻止 文件补丁绝对正确 我已经验证过 并且不存在与权限相关的问题 任何人
  • 加载数据infile,Windows和Linux的区别

    我有一个需要导入到 MySQL 表的文件 这是我的命令 LOAD DATA LOCAL INFILE C test csv INTO TABLE logs fields terminated by LINES terminated BY n
  • 如何使用GDB修改内存内容?

    我知道我们可以使用几个命令来访问和读取内存 例如 print p x 但是如何更改任何特定位置的内存内容 在 GDB 中调试时 最简单的是设置程序变量 参见GDB 分配 http sourceware org gdb current onl
  • 如何判断 Bash 中是否存在文件?

    这会检查文件是否存在 bin bash FILE 1 if f FILE then echo File FILE exists else echo File FILE does not exist fi 我如何只检查文件是否存在not ex
  • CentOS:无法安装 Chromium 浏览器

    我正在尝试在 centOS 6 i 中安装 chromium 以 root 用户身份运行以下命令 cd etc yum repos d wget http repos fedorapeople org repos spot chromium
  • 将 PDF 转换为 600dpi 的 TIFF 和 jpg 96 dpi

    我想使用 ImageMagick 从 Python 脚本将 pdf 转换为 600 dpi 的 tiff 和 96 dpi 的 jpg 我使用 imagemagick 命令行完成了这项任务 但我想使用python中的Imagemagick将
  • os.Mkdir 和 os.MkdirAll 权限

    我正在尝试在程序开始时创建一个日志文件 我需要检查是否 log如果不创建目录 则目录存在 然后继续创建日志文件 好吧 我尝试使用os Mkdir 也os MkdirAll 但无论我在第二个参数中输入什么值 我都会得到一个没有权限的锁定文件夹
  • 如何查找所有以句号结尾的单词?

    我有一个包含许多以 a 结尾的单词的文件 其中大部分是缩写 例如 etc p s 如何输出一个仅显示一次所有这些单词的列表 所有单词前面都有一个空格 因此可以使用该空格来查找单词的开头 没有一个单词出现在该行的开头 文件中没有句子 因此句点
  • Linux:在文件保存时触发 Shell 命令

    我想在修改文件时自动触发 shell 命令 我认为这可以通过注册 inotify 挂钩并调用来在代码中完成system 但是是否有更高级别的 bash 命令可以完成此任务 尝试 inotify 工具 我在复制链接时遇到问题 抱歉 但 Git
  • 获取变量的名称作为输入并使用该名称更改变量

    我从脚本用户那里获取变量的名称作为第一个参数 并将该变量的值回显到控制台 bin bash variablename 1 echo The value of variablename is variablename 这太棒了 我无法开始工作
  • Linux 可执行文件与 OS X“兼容”吗?

    如果您在基于 Linux 的平台上用 C 语言编译一个程序 然后将其移植以使用 MacOS 库 它会工作吗 来自编译器的核心机器代码在 Mac 和 Linux 上兼容吗 我问这个问题的原因是因为两者都是 基于 UNIX 的 所以我认为这是真
  • Linux:如何从特定端口发送TCP数据包?

    如何打开原始套接字以从特定 TCP 端口发送 我希望所有连接始终来自临时端口以下的一系列端口 如果您正在使用raw套接字 然后只需在数据包标头中填写正确的 TCP 源端口即可 相反 如果您使用 TCP 套接字接口 socket connec
  • 如何从 bash 数组中删除元素而不展平数组

    我想创建一个采用 bash 数组的函数 如下所示 a element zero element one element two 并删除一个元素 如 元素一 并留下一个数组 如下所示 a element zero element two 这样
  • 在 bash 脚本中提取 XML 值 [重复]

    这个问题在这里已经有答案了 我正在尝试从 xml 文档中提取一个值 该文档已作为变量读入我的脚本中 原始变量 data is
  • 有谁知道在哪里定义硬件、版本和序列号。 /proc/cpuinfo 的字段?

    我想确保我的 proc cpuinfo 是准确的 目前它输出 Hardware am335xevm Revision 0000 Serial 0000000000000000 我可以在代码中的哪里更改它以给出实际值 这取决于 Linux 的

随机推荐

  • 使 Eclipse 出现错误时不运行项目

    是否可以使 Eclipse Helios SR2 在出现错误时不运行您的项目 而不是提示答案或无论如何运行 设想 在 Eclipse 中 我点击了 运行 按钮 有编译错误 Eclipse 询问我是否仍要继续运行 我有 是 和 否 两个选项
  • 标签“bg”不存在

    这是我的标签代码 from Tkinter import Tk BOTH Canvas Text END import Tkinter as tk from ttk import Frame Button Style Label Entry
  • SUMIF 单元格不是公式

    我正在尝试创建一个 Excel 电子表格 其中包含公司每位员工的一行 其中每列引用他们每周的工作时间 最初 单元格中填充的是另一张工作表中的预期每周工作小时数 但随后会手动替换为人们每周实际工作的小时数 我希望能够对人们实际工作的小时数进行
  • Web 共享 API 级别 2 PDF 支持

    我正在为我的 PWA 应用程序使用网络共享级别 2 除了 PDF 之外 所有媒体格式都可以正常工作 Web api 返回 PDF 的 base64 字符串 在客户端 我正在从中创建 blob 对象 但是当我分享它时 抛出异常 权限被拒绝 v
  • 没有 .NET 的 Windows 身份验证标头。可能的?

    我想知道是否有人知道一种无需托管在 ASP 站点上即可使用 Windows 身份验证的方法 这是一个可以访问 LDAP 的 Intranet 所以我想知道是否有办法强制客户端向我提供数据 就好像数据来自 ASP 站点一样 我只需要登录域和用
  • 重新排序 Django 模型中的字段

    我想向 django 应用程序中的每个模型添加一些字段 这次是created at updated at and notes 为 20 多个模型中的每一个模型重复代码似乎很愚蠢 因此 我决定使用抽象基类来添加这些字段 问题是从抽象基类继承的
  • gcc std::unordered_map 实现速度慢吗?如果是这样 - 为什么?

    我们正在用 C 开发高性能关键软件 我们需要一个并发哈希映射并实现它 因此 我们编写了一个基准测试来弄清楚 我们的并发哈希映射与std unordered map But std unordered map似乎非常慢 所以这是我们的微基准测
  • 如何在发生错误时中止 Firestore 事务

    我正在使用 FirestorerunTransactionhttps 云函数中的方法 运行 Express 我想要的是确保如果任何读取或写入失败 其他事务读取或写入将不会运行或在需要时回滚 交易 admin firestore runTra
  • Thymeleaf 获取当前语言环境

    如何获取 thymeleaf 模板中的当前区域设置 Thymeleaf 上下文是区域设置感知的 因此在每个请求上注入区域设置会很奇怪 我可以在模板中请求一些变量吗 div div 使用 locale表达式 div div
  • 未找到架构 arm64 的符号

    面临 ObjC 文件引用问题 我尝试了 pod 分解 删除 DerivedData 清理项目 添加 Objc 和 inherited FLAGS I am using cocoapods Xcode 9 Swift 4 Please rev
  • 无效的表达术语

    int hour 10 if hour gt 0 lt 12 Console WriteLine It s morning else if hour gt 12 lt 18 Console WriteLine It s afternoon
  • 当在 T-SQL 存储过程中声明变量时,它是保存在内存中还是 tempdb 中?

    我们正在尝试优化一些 T SQL 存储过程以减少 tempdb 争用 但我无法弄清楚 SQL Server 如何存储非表变量 那么像 INT 和 DATETIME 这样的简单数据类型呢 感觉他们就活在记忆里了 VARCHAR VARCHAR
  • 有没有办法将 json 对象转换为 json l 文件

    我有一系列对象 我需要将其转换为 jsonl 格式 并使用 lambda 函数中的节点将其作为响应发送 我一直在尝试将其更改为字符串并添加 n 以使其成为新行 但它不起作用 生成 jsonlines 的简单代码 jsonlines 实际上只
  • 如何在一个标头下使用 JNAerator 和多个动态库?

    我正在使用 JNAerator 生成一个可以包含在项目中的单个 jar 文件 并且我希望支持每个操作系统的动态库并将所有内容都归档到这个单个 jar 中 到目前为止 在摆弄 JNAerator 时 我已经能够使用如下命令包含单个动态库 ja
  • Android 注释 REST 设置标头

    我正在使用 Android 注释 最近发现了一个错误Spring Rest 模板使用导致 EOFException https stackoverflow com questions 13182519 spring rest templat
  • 从外部访问WEBrick服务器

    我希望能够从家外的计算机访问我的开发服务器 我尝试过跑步rvmsudo rails server p 80 但是当我尝试使用我的 IP 访问我的计算机时 我进入了路由器的配置页面 有任何想法吗 在这里测试 对我来说是这样的 d 守护进程服务
  • Openshift 端口转发

    已经有很多关于它的话题了 但我被困住了 我配置ssh成功了 现在我想配置端口转发以与 TOAD 连接 我用的是这个 https blog openshift com getting started with port forwarding
  • 如何最好地继承原生 JavaScript 对象? (特别是字符串)

    我是一个长期浏览者 但还是第一次参与者 如果我缺少任何礼仪细节 请告诉我 另外 我到处搜索 包括这个网站 但我还没有找到关于我想要做什么的清晰而简洁的解释 如果我错过了 请为我指出正确的方向 好吧 我想扩展一些原生 JavaScript 对
  • 重大地点变更如何运作?

    谁能确认重大位置变更是如何运作的 当用户移动时 iPhone 的蜂窝接收器从一个蜂窝塔切换到另一个蜂窝塔时 会计算移动吗 移动是通过在 可见 蜂窝塔之间进行三角测量来计算的 以最好地计算用户的位置 移动是根据与desiredAccuracy
  • 从 lsof(Linux 命令行)中提取字段/属性

    随着最近迁移到 Flash 10 或者可能是发行版选择 我和许多其他人不再能够从 tmp 复制 Flash 视频 不过 我在以下方面找到了解决方法 首先 执行 lsof grep Flash 它应该返回如下输出 plugin co 8935