как получить полную команду приложений X через 'wmctl' и 'ps'? - PullRequest
0 голосов
/ 26 мая 2019

Я работаю над программой , которая может запрашивать запущенные приложения 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 Ответ

0 голосов
/ 26 мая 2019

Я предлагаю использовать 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".

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

...