find . -type f
我们的一个用户在我们的一台服务器上发出了一条命令,在 中查看时该命令当前正在运行ps aux
。
我如何知道这个命令是从哪个目录发出的。
该过程是否具有类似当前工作目录的环境变量,我可以检索该变量来获取我想要的内容或类似的东西?
注意:上述命令是人为的,实际命令是其他内容。但是否可以找到发出该命令的目录
1
最佳答案
2
您可以使用专门为此目的设计的命令来报告进程的当前工作目录。
- 你可以使用以下
ps aux
命令轻松找到该进程的 PIDps aux | grep "find . -type f"
(或者如果你已经有了它) - 将此 PID 与
pwdx <PID>
您也可以一次性完成此操作:
pwdx $(ps aux | grep '[f]ind . -type f' | awk '{print $2}')
另一种方法(对于某些没有pwdx
但确实有的系统很有用ls
)可以是@Kamil Maciorowski 在评论中提到的:
ls -l /proc/<PID>/cwd
0
|
所指出的,
在进程运行时可以使用或pwdx <PID>
。
我个人更喜欢后者。ls -l /proc/<PID>/cwd
如果该过程已经完成,这将没有任何意义,您可以尝试通过 journactl logs 查看您知道发出命令的时间间隔,例如,journalctl --since "2024-09-27 00:00:00" --until "2024-09-27 <time command stopped>"
如果没有设置任何类型的日志审计方法,则无法保证找到该命令。
可能还有我不知道的其他方法,但我确实建议您实施一种方法来做到这一点。
|
ls -l /proc/PID/cwd
PID
正确的 PID在哪里。不过,我认为find
允许在运行期间更改其当前工作目录,只要结果符合规范;所以你得到的结果可能是也可能不是你想要的。因此这只是一个评论,而不是答案。–
|