Раньше я управлял хостом общедоступной оболочки, где пользователи запускали все виды процессов, которые иногда становились мошенническими. У нас были рабочие места root cron, которые выглядели так:
* * * * * (date; ps auxwwww) >> /var/log/ps.log
* * * * * (date; lsof -n) >> /var/log/lsof.log
Мы также установили ротацию для двух файлов журнала, чтобы они не переполнялись.
Когда мы наблюдали проблемы с системой, мы просматривали журнал ps, чтобы узнать имя неконтролируемого процесса и его аргументы, и журналы lsof, чтобы найти исполняемый образ процесса и любые интересные файлы, которые он открыл.
Тем не менее, если искомый процесс, который вы ищете, выполняется в течение нескольких секунд или меньше, маловероятно, что описанные выше сценарии будут выполняться только раз в минуту. Вы можете написать свой собственный скрипт мониторинга, который запускает вышеуказанные команды с большей скоростью, скажем раз в секунду.
Если этого все еще недостаточно, чтобы поймать его, вам понадобится что-то, что будет пылесосить данные из каждого процесса в системе. Машина с Ubuntu 16.04 должна иметь возможность запускать сравнительно недавние инструменты производительности, такие как bpf
http://www.brendangregg.com/blog/2016-06-14/ubuntu-xenial-bcc-bpf.html
Если это не вариант, вы можете попробовать использовать strace для родительского процесса мошеннического процесса, предполагая, что вы знаете, что это такое. Если что-то заканчивается cron или пользователь входит в систему через ssh, тщательно написанная команда strace, которая только фиксирует события процесса и игнорирует все остальное, может сработать, но будьте очень осторожны, поскольку это может быть разрушительным, особенно если вы отслеживаете слишком много вещей в один раз.
Наконец, вы не указываете, какое "зло" происходит в вашей системе - есть способы запуска команд на основе системных событий (обновление файла, появление пакета на сетевом интерфейсе, слишком высокая загрузка ЦП), которые могут работать для вас в зависимости от ваших симптомов.