Есть ли способ захвата команд, выполняемых программами GUI? Или даже простые скрипты bash? Как команда «история» из bash, но доступна для всей системы.Захват выполненных команд из программ
ответ
В оболочке (например, bash) есть опция -x
, и вы можете увидеть все команды, которые выполняются определенным скриптом. запустите sh -x <your_script
и посмотрите вывод. Вы также можете временно включить/выключить этот журнал, выпустив set +x
, set -x
внутри сценария.
относительно программ GUI, ответ зависит от ваших потребностей, какой вид деятельности вы хотите регистрировать. Вы можете использовать strace
, как это предложено в комментариях, и отфильтровать вызовы exec*
. Но, скорее всего, вы примете что-то еще, поскольку большинство действий программы GUI выполняются без выполнения внешних программ.
Например: я использую lxpanel с кнопкой «Свернуть все окна». Я хотел бы захватить команду, выполняемую им, когда я нажимаю на нее. (Я использовал «sudo strace -p 2248 -f 2> & 1 | nl») для отслеживания процесса lxpanel (PID 2248) и дочернего?! Но у меня нет никакого exec там только такого рода вещи: –
только опрос, recvmsg, write, writev, read –
Может быть, lxpanel не запускает exec, каким-либо образом отслеживать «init» или все процессы? «sudo strace -f -p 1» не делает трюк –
вы можете использовать strace для получения вызовов sytem, выполняемых конкретной программой. – Pradheep