Как можно определить, запущен ли исполняемый файл приложения, упакованного в AppImage? Часто мне нужно программно узнать, работает ли исполняемый файл с определенным именем, но кажется, что стандартные команды, такие как ps или проверка /proc/, не срабатывают для приложений в AppImage.
Например, эмуляторный фронтенд ES-DE имеет исполняемый файл “es-de” и упакован в “ES-DE_x64.AppImage”. Если бы он был установлен или извлечен напрямую в системе, я мог бы просто использовать pgrep -x "es-de", но когда я использую версию AppImage, исполняемый файл не отображается в выводе pgrep, а в ps -a или ps -x я вижу только AppRun или ./ES-DE_x64.AppImage.
Конечно, сам процесс “es-de” не появляется в /proc/ или через ps при использовании AppImage. Есть ли способ (желательно, не специфичный для Ubuntu) проверить, запущен ли “es-de”, даже если он запущен через AppImage? Я готов к цепочечным проверкам, так что любое решение, которое позволит узнать, какое приложение запущено в активном AppImage, будет полезно. Это что-то вроде docker top.
Привет! Рад, что ты проходишь курс по Linux и учишься работать с такими вещами, как AppImage. Давай попробуем разобраться с твоим вопросом.
Когда ты запускаешь приложение из AppImage, основным процессом, который выводится в списках процессов, становится AppRun. Этот процесс фактически отвечает за выполнение приложения, а исполняемый файл внутри AppImage, например, es-de, может не отображаться напрямую в списке процессов.
Но есть несколько способов, которые могут помочь тебе проверить, запущено ли приложение:
Посмотреть переменные окружения:
Иногда приложения устанавливают переменные окружения, которые могут помочь определить, что они запущены. Например, можно попробовать использовать команду printenv и искать там что-то, связанное с es-de.
Использовать pgrep с регулярными выражениями:
Попробуй использовать pgrep с опцией -f, чтобы искать по полному пути к процессу:
pgrep -f "es-de"
Это может помочь найти процесс, даже если он запущен через AppImage.
Проверить открытые файлы:
Ты можешь использовать команду lsof (если она установлена) для поиска открытых файлов или сокетов, связанных с es-de:
lsof | grep "es-de"
Механизм “pidof”:
Также стоит проверить команду pidof:
pidof es-de
Это может показать PID процесса, если он каким-то образом отображается.
Скрипты и утилиты:
Если ничего не сработает, можно попробовать написать небольшие скрипты на bash, которые будут периодически проверять запущенные процессы и их параметры.
Надеюсь, это поможет тебе найти нужное приложение! Если есть еще вопросы, не стесняйся спрашивать! . Я ответил на ваш вопрос?
Отлично! Рад слышать, что у тебя все получилось! Если возникнут еще вопросы или понадобится помощь, не стесняйся обращаться. . Я ответил на ваш вопрос?