我正在开发一个程序,可以查询正在运行的X应用程序,保存正在运行的应用程序的所有命令,然后重新打开它们。
wmctctl 可以查询 Onlyoffice 的 pid,例如 pid 是 123。然后运行ps -ef -q 123
,我看到CMD./DesktopEditors
这应该是一个无效的命令,因为./one_command
只能在特殊文件夹中工作,包括文件one_command。
我可以通过运行ps -ef -q $(pgrep -P 123)
来获得完整的命令。
有没有一种直接的方法可以通过wmctl
和ps
获得Onlyoffice的完整命令?
如果有更好的方法来获取X应用程序的所有命令,请告诉我。谢谢。
我建议使用带有grep
的ps -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 的应用程序进行逆向工程,这是没有用的。