Сегодня утром я прошел через долгий процесс, пытаясь определить запущенное приложение. Это было с целью сообщить об ошибке сегодня утром, но в итоге я поставил вопрос об этом в AskUbuntu.
Я напугал найти ответ на этот раз.
Я попытался запустить gnome-system-monitor (опубликованное имя: «Системный монитор»), но я не мог решить, какое приложение я искал.
Я попытался перейти в меню приложения> О, но это не покажите фактическое имя приложения. Вот скриншот gnome-software> About, в котором отображается только опубликованное имя «Ubuntu Software».
Я сделал поиск в Интернете для «программного обеспечения ubuntu», чтобы узнать, показывали ли какие-либо результаты поиска имя приложения. Я нашел , в котором говорится: «Разработка была завершена в 2015 году, а в Ubuntu 16.04 LTS вместо нее была заменена программным обеспечением GNOME». Я следил за ссылкой на GNOME Software, но имя приложения там тоже не показано.
Поэтому я не смог сообщить об ошибке, поэтому я пришел в AskUbuntu. Я выполнил поиск «программного обеспечения ubuntu» и где-то увидел «gnome-software».
Я открыл терминал, использовал команду gnome-software, и правильное приложение запустилось.
В итоге я задал вопрос в AskUbuntu вместо сообщения об ошибке. Тем не менее, у меня была такая же проблема много раз за последние 10 лет или около того, и я бы очень хотел ее решить раз и навсегда.
Есть ли быстрый и простой способ определить фактическое имя выполняемого приложения?
PS Этот вопрос был отмечен как дубликат «Этот вопрос уже имеет ответ здесь: Программное обеспечение GNOME 1 ответ», который эффективно отвечает «Нет» на мой вопрос «Есть ли простой и простой способ определить фактическое имя текущего пользователя приложения ?», но на самом деле ответ, который я получил от @waltinator, кажется, предоставляет метод (через xprop).
Попробуйте
grep -i "access prompt" /usr/share/applications/*.desktop
/usr/share/applications/gcr-prompter.desktop:Name=Access Prompt
В этом примере «общее» имя приложения - Access Prompt, а имя, которое появляется на выходе чего-то типа ps -o pid,ppid,stime,time,command -u $USER, - gcr-prompter.
Этот подход имеет два ограничения: - он выглядит только в /usr/share/applications (потому что именно там обнаружено большинство файлов .desktop). Но некоторые файлы .desktop могут находиться только в ~/.local/share/applications. - в зависимости от того, как вы определяете «приложение», некоторые приложения могут не иметь файл .desktop. В таких случаях «общее» имя и фактическое имя приложения будут одинаковыми.
Насколько я знаю, для этого не существует способа по умолчанию.
В командной строке вы можете использовать xprop для получения информации о окне (курсор изменится, и вы ожидаете щелкните по окну).
На выходе обычно есть строка, начинающаяся с _NET_WM_PID, которая содержит PID программы, и вы можете использовать, например,
ps -o comm -p THE_PID
, чтобы найти команду программы.
Вы можете поместить все это в сценарий оболочки и использовать zenity для графического отображения:
#!/bin/sh
zenity --info --text "$(ps --no-headers -o comm -p $(xprop | awk '/^_NET_WM_PID/ {print $3}'))"
Сохраните это где-то в виде файла, сделайте его исполняемым и назначьте ему горячую клавишу.
Я предполагаю, что есть случаи, когда он не работает или отображает неправильный результат, но обычно он должен быть в наименее полезным.