如何通过'wmctl'和"ps"获得X应用程序的完整命令?



我正在开发一个程序,可以查询正在运行的X应用程序,保存正在运行的应用程序的所有命令,然后重新打开它们。

wmctctl 可以查询 Onlyoffice 的 pid,例如 pid 是 123。然后运行ps -ef -q 123,我看到CMD./DesktopEditors这应该是一个无效的命令,因为./one_command只能在特殊文件夹中工作,包括文件one_command。

我可以通过运行ps -ef -q $(pgrep -P 123)来获得完整的命令。

有没有一种直接的方法可以通过wmctlps获得Onlyoffice的完整命令?

如果有更好的方法来获取X应用程序的所有命令,请告诉我。谢谢。

我建议使用带有grepps -h -e -o pid,args命令

这应该提供带有参数和选项的完整命令路径。

例如,查找所有正在运行的 Java 程序及其参数(可能很广泛):

ps -eo pid,args | grep java

在您的情况下,我建议使用一个小的awk脚本,该脚本查找当前行中作为第3个输入字段给出的pid:

wmctrl -l -p|awk '{system("ps -h --pid "$3" -o args")}'

示例输出

nautilus-desktop --force
/usr/libexec/gnome-terminal-server
/usr/libexec/gnome-terminal-server

更新

将当前目录./转换为完整路径。 假设./表示当前工作目录。 添加以下管道。

wmctrl -l -p|awk '{system("ps -h --pid "$3" -o args")}'|sed "s|^./|$PWD/|"

使用find / -name "DesktopEditors"查找计算机中DesktopEditors的脚本或程序。

但我相信,如果您尝试对需要某种浏览器模拟器的基于 Web 的应用程序进行逆向工程,这是没有用的。

相关内容

  • 没有找到相关文章

最新更新