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

how to get a complete command of X apps via 'wmctl' and 'ps'?

我正在研究 a program,它可以查询 运行ning X 应用程序,保存 运行ning 应用程序的所有命令,稍后它们会重新打开它们。

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

我可以通过 运行ning ps -ef -q $(pgrep -P 123).

得到一个完整的命令

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

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

我建议使用 ps -h -e -o pid,args 命令和 grep

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

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

ps -eo pid,args | grep java

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

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

示例输出

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

更新

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

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

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

但我认为,如果您要对需要某种浏览器模拟器的基于 Web 的应用程序进行逆向工程,我认为这是无用的。