Как получить полную команду приложений 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"
,
Но я считаю, что это бесполезно, если вы пытаетесь реконструировать веб-приложение, для которого требуется какой-то эмулятор браузера.