gaz*_*len 20 command-line bash
在一次采访中,他们问了我这个问题。
有一个 sh 文件已经在运行,但它在开始执行后已被删除。
他们要我找到进程并阅读文件。
我设法找到了过程
ps -ef | grep test.sh
Run Code Online (Sandbox Code Playgroud)
并尝试通过使用阅读它
cat /proc/PID/cmdline test.sh
Run Code Online (Sandbox Code Playgroud)
但它说
no such file or directory
Run Code Online (Sandbox Code Playgroud)
我不知道接下来应该做什么,所以我不得不跳过这个。
也许这是一个简单的问题,但这对我来说确实是一个好问题,我真的很想知道答案。你们能帮忙吗?
Rin*_*ind 24
tail -c +0 -f /proc/{pid}/fd/{fd} > /tmp/file
Run Code Online (Sandbox Code Playgroud)
其中 {pid} 是您的进程的 ID,/tmp/file并将包含其内容。如果您想保留它,请使用其他位置和名称。
lsof应该显示 fd。lsof也可能会在线上显示“已删除”,因此您也可以grep这样做。lsof -nP +L1将列出所有链接少于 1 的文件,删除的文件将有 0。添加一个| grep {pid}以仅搜索您的 PID。lsof -p 22664 | sed -E '$!d;s/.*\s([0-9]+)[a-z]\s.*/\1/'只是得到 fd。less,cat或者cp也可以。我长大了tail:)