0

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

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

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

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

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

4

1 回答 1

0

我建议使用ps -h -e -o pid,args带有管道的命令grep

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

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

ps -eo pid,args | grep java

在您的情况下,我建议使用一个小的 awk 脚本,该脚本在当前行中查找作为第三个输入字段给出的 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/|"

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

但我相信,如果您试图对需要某种浏览器模拟器的基于 Web 的应用程序进行逆向工程,这将毫无用处。

于 2019-05-26T13:20:43.323 回答