Как узнать, какая программа выполняет данную программу?

На экране grub нажмите e, чтобы открыть параметры grub. Замените quietна nomodeset quiet splash. Чтобы сделать это изменение постоянным после того, как вы доберетесь до рабочего стола, отредактируйте его в /etc/default/grubи запуститеsudo update-grub

0
31.03.2020, 23:25
2 ответа

В Linux вы можете получить PID родительского процесса из переменной $PPIDили /proc/pid/status. Родительский процесс не всегда является вызывающим процессом в случай демонов для примера, но обычно это так. При этом вы может преобразовать каждую программу в оболочку, которая сначала будет регистрировать PID его родительский процесс в файл, а затем выполнить исходный двоичный файл. я не используйте sxkhd, но поскольку вы используете X11, давайте использовать xeyes в качестве пример. Создайте скрипт xeyesсо следующим содержимым и сделайте его исполняемым:

#!/usr/bin/env sh

printf "PPID: %d\n" "$PPID" >> /tmp/XEYES_RUN
xeyes.orig "$@"

Теперь переименуйте исходный двоичный файл xeyes в xeyes.orig:

sudo mv "$(command -v xeyes)" "$(dirname $(command -v xeyes))"/xeyes.orig

Заменить исходный xeyesскриптом-оболочкой:

sudo cp./xeyes "$(dirname $(command -v xeyes.orig))"

Вызов xeyesв обычном режиме:

xeyes

Теперь при каждом запуске xeyes PID родительского процесса будет добавлено к /tmp/XEYES _RUN. Если запустить из командной строки будет PID вашей оболочки, например /bin/bash.

0
19.03.2021, 02:30

Из оболочки в Linux:

readlink "/proc/$PPID/exe"

В любой стандартной оболочке переменная $PPIDотносится к родительскому процессу. В C вы можете получить это с помощью getppid(). В большинстве языков есть способ получить его (, например. getppidв perl, os.getppidв python и т. д. ).

После того, как вы получили PID родительского процесса, сопоставление его с исполняемым файлом будет привязано к конкретной системе. psсообщит вам имя процесса или аргументы командной строки, но они ненадежны, , так как они (обычно )не включают полный путь и могут быть изменены процессом самим собой или любым другим процессом, запущенным от имени того же пользователя.

В Linux на исполняемый файл процесса указывает /proc/<pid>/exe. Это «волшебная» символическая ссылка :, даже если исходный исполняемый файл был удален или переименован, вы все равно можете прочитать его (, например. для копирования в другое место )или повторного выполнения.

0
19.03.2021, 02:30

Теги

Похожие вопросы