Как просмотреть командную строку процессов, выполняемых за прошлые 10 секунд

Можно сделать это с комбинацией BatchMode опция и "парсинг" вывода. (ssh всегда возвраты 255, если этому не удается соединиться по любой причине, таким образом, Вы не можете использовать код возврата для различения типы отказов.)

С BatchMode на, никакая подсказка пароля или другое взаимодействие предпринят, таким образом, подключение, которое требует пароля, перестанет работать. (Я также поместил a ConnectTimeout там, который должен быть скорректирован для установки потребностям. И выбранные действительно плохие имена файлов.)

#! /bin/bash

rm good no_auth other
while read ip host ; do
    status=$(ssh -o BatchMode=yes -o ConnectTimeout=5 $ip echo ok 2>&1)
    case $status in
        ok) echo $ip $host >> good ;;
        *"Permission denied"*) echo $ip $host $status >> no_auth ;;
        *) echo $ip $host $status >> other ;;
    esac
done < list.txt

Вы могли обнаружить другие типы ошибок (как пропавшие без вести открытого ключа сервера) при необходимости в более подробной классификации. Если Вам нужны результаты в единственном, отсортированном файле, просто cat различные выходные файлы вместе, как Вы считаете целесообразным.

4
16.01.2013, 09:35
2 ответа

Если процесс не закончен, Вы могли бы найти их:

ps axho etime,cmd| sed ':a;s/^\(0*\) /\10/g;ta' | sort | less

Но если процесс уже закончен, это менее уверено:

Необходимо знать, где искать...

Предупреждение! следующая работа, только если двоичный файл не находится в кэш-памяти: если от них не получили доступ некоторое время.

Возможно, простое ls -ltru мог быть достаточно:

/bin/ls -ltru /etc/init.d | tail

Если еще, более сложная команда могла бы быть:

find /usr/bin -type f -amin -1

find ${PATH//:/ } -type f -amin -1

find ${PATH//:/ } /home/*/bin -type f -amin -1

обнаружится все файлы получили доступ меньше чем с одной минуты.

Для 10 secs это более трудно:

while read time;do
    read name
    [ $time -lt 10 ] && echo $name
  done < <(find ${PATH//:/ } /home/*/bin -type f -amin -1 -print0 |
    xargs -0 --no-run-if-empty stat -c $(date +%s)$'-%X ;"%n\n"' |
    bc)
2
27.01.2020, 21:00

Попробуйте это:

ps k-etime h -eo etimes,command | while read etime comm; do [ $etime -lt 10 ] && echo -e "$etime\t$comm"; done

Это покажет все процессы, который был запущен через прошлые 10 секунд и все еще работает.

0
27.01.2020, 21:00

Теги

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