Что-то постоянно причиняет вред моей системе, но я не смог определить, какая это программа. Это происходит несколько раз в час. Я нашел PID в журнале, но программа очень недолговечна, так что к тому времени, когда я смогу ps -fp pid , она исчезла.

Могу ли я как-нибудь настроить ведение журнала, чтобы увидеть, какие все PID были впоследствии? Какая программа говорит, что pid 12345 был с отметкой времени? Я пытался запустить find /proc/ -maxdepth 2 -name cmdline -mmin -3 -not -type d|while read l;do echo -n $l;cat $l;done и варианты этого часто, но безуспешно , Я использую Ubuntu 16.04.

2 ответа2

1

Раньше я управлял хостом общедоступной оболочки, где пользователи запускали все виды процессов, которые иногда становились мошенническими. У нас были рабочие места 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, которая только фиксирует события процесса и игнорирует все остальное, может сработать, но будьте очень осторожны, поскольку это может быть разрушительным, особенно если вы отслеживаете слишком много вещей в один раз.

Наконец, вы не указываете, какое "зло" происходит в вашей системе - есть способы запуска команд на основе системных событий (обновление файла, появление пакета на сетевом интерфейсе, слишком высокая загрузка ЦП), которые могут работать для вас в зависимости от ваших симптомов.

0

Вы можете попытаться создать задачу cron, которая будет извлекать новый процесс и записывать его в файл.

Например, команда, выполняющаяся каждую минуту и выполняющая ps, выбирающая только процесс, который моложе, чем последнее выполнение cron, и записывает его в файл. С шансом вы поймаете это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .