Как получить полную команду приложений X через 'wmctl' и 'ps'?

Я работаю над программой, которая может запрашивать запущенные приложения X, сохранять все команды запущенных приложений, и они открывают их позже.

Я столкнулся с проблемой. wmctctl может запросить pid Onlyoffice, например, pid - 123. Затем запустите ps -ef -q 123Я вижу, что CMD ./DesktopEditors которая должна быть неверной командой, потому что ./one_command Работать можно только в специальной папке, включающей файл one_command.

Я могу получить полную команду, запустив ps -ef -q $(pgrep -P 123),

Есть ли прямой способ получить полную команду Onlyoffice только через wmctl а также ps?

Если есть лучший способ получить все команды приложений X, пожалуйста, дайте мне знать. Благодарю.

1 ответ

Я предлагаю использовать ps -h -e -o pid,args Команда по трубопроводу с grep

Это должно обеспечить полный путь к команде с его аргументами и параметрами.

Например, найдите все запущенные Java-программы с их аргументами (может быть обширным):

ps -eo pid,args | grep java

В вашем случае я предлагаю небольшой скрипт awk, который ищет pid, указанный как 3-е поле ввода в текущей строке:

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",

Но я считаю, что это бесполезно, если вы пытаетесь реконструировать веб-приложение, для которого требуется какой-то эмулятор браузера.

Другие вопросы по тегам