我在某台计算机上运行 leafpad 文本编辑器实例,该实例打开了某个文件,我忘记了它的名称和位置(实际上更复杂,但这是一个简化版本)。然后我离开物理机器,通过 SSH 连接到机器并运行 shell。我现在想弄清楚 leafpad 实例打开了哪个文件。
它不在 leafpad 的命令行中(用 检查ps
);并且它不是一个打开的文件,或者至少 - 它似乎没有出现在 上lsof
。
答案1
您不会将使用 打开的文件的名称归档Leafpad
到
/proc/<PID>/fd
或,/proc/<PID>/maps
因为Leafpad
会立即关闭它打开的所有文件。您可以使用 进行检查strace leafpad
,例如:
open("/home/ja/python/memory-popen/a.py", O_WRONLY|O_CREAT|O_APPEND, 0666) = 9
lseek(9, 0, SEEK_END) = 519
close(9) = 0
仅当保存完成后,打开的文件才会重新打开并再次关闭。
正如我在评论中所说,您可以将文件名作为参数传递给
Leafpad
- 然后它将被记录在命令名称中:
$ leafpad ~/python/a.py
$ ps aux | grep '[l]eafpad'
ja 12964 1.3 0.2 325764 22328 pts/11 Sl 16:13 0:00 leafpad /home/ja/python/a.py
作为最后的手段,您可以查找最近打开的文件列表
Leafpad
,但请注意,这与当前保持打开的~/.local/share/recently-used.xbel
文件列表不同:Leafpad
$ grep -B 5 -F '<bookmark:application name="Leafpad"' ~/.local/share/recently-used.xbel | grep -F '<bookmark href='
<bookmark href="file:///home/ja/python/memory-popen/a.py" added="2019-05-21T13:47:23Z" modified="2019-05-21T14:05:20Z" visited="2019-05-21T13:47:23Z">
<bookmark href="file:///home/ja/python/motion/motion.py" added="2019-05-21T14:07:21Z" modified="2019-05-21T14:07:21Z" visited="2019-05-21T14:07:21.275528Z">