Как отследить количество процессов и ветвлений на пользователя?

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

Здесь, передача lot_url рядом img_url во втором канале походит на хорошее решение меня. Я передал бы их той же строке. Принятия Ваших URL правильно оставляют, Вам не нужно никакое конкретное заключение в кавычки, можно передать их той же строке. Это имело бы преимущество разрешения переменного количества img_urls в каждом lot_url.

second_function(){
    while read lot_url; do
        echo "$lot_url"
        curl -s "$lot_url" | sed -nr -e '
            #extract img src
        ' -e "s>^>$lot_url >"
    done
}

third_function(){
    while read lot_url img_url; do
        echo "<a href="$lot_url"><img src="$img_url" /></a>"
    done
}
5
14.02.2013, 00:37
3 ответа

Попробуйте psacct пакет (учет GNU), это должно сделать примерно все, в чем Вы нуждаетесь, когда-то установленный и включенный (accton), затем lastcomm сохранит отчет о пользовательских процессах (см. также sa и dump-acct). Посмотрите это для ссылки: выполняемый файл журнала команд Пользователя

Вы, возможно, должны были бы обновить версию, чтобы зарегистрировать PID/PPID, видеть https://serverfault.com/questions/334547/how-can-i-enable-pid-and-ppid-fields-in-psacct-dump-acct, иначе я подозреваю, что это занизит сведения на fork() без exec().

Обновление, Если Ваш lastcomm выводы F в 2-м столбце это означает, что процесс был ветвлением (который никогда не звонил exec() заменять себя новым процессом). Вывод dump-acct должен показать Вам PID (и PPID) в формате acct v3.

Альтернатива psacct могла бы быть новым (выход) taskstats, еще нет огромной суммы поддержки его AFAICT, посмотрите Documentation/accounting/taskstats.txt в Вашем источнике версии ядра. Это могло бы помочь получить Вас, запустил http://code.google.com/p/arsenalsuite/wiki/TrackingIOUsage https://code.google.com/archive/p/anim-studio-tools/, который определенный пример кода tasklogger.c, необходимо будет изменить printf() строка в функции print_delayacct2(), во-первых заменять %u с %llu для __u64 типы и во-вторых добавить поле ac_uid (и возможно ac_gid) то, что необходимо отследить пользователем. Вызовите его с чем-то как tasklogger -dl -m 0-1 (где -m 0-1 указывает на центральные процессоры 0-1). Вы будете затем рассматривать детали в реальном времени как каждый процесс выходы.

Существует также модуль жемчуга Linux::Taskstats::Read доступный на CPAN, хотя я не использовал его.

Необходимо будет обработать данные на основе меток времени, если Вы захотите количество параллельного процесса, в расчете на пользователя, это не простое, поскольку это звучит.

Обновите 2 хорошо, вещи проверить на необходимое psacct поддержка:

  1. (официальное) ядро> = 2.6.8 для поддержки учета v3 (или бэкпорт)
  2. ядро с CONFIG_BSD_PROCESS_ACCT и CONFIG_BSD_PROCESS_ACCT_V3 включенный
  3. v3 способный учет (psacct) пакет, как отмечено выше

Все вышеупомянутое должно быть верным в CentOS 6, я проверил 5.x, и это не имеет CONFIG_BSD_PROCESS_ACCT_V3=y, таким образом, необходимо было бы восстановить ядро для включения его.

Оригинал psacct-6.3.2 приблизительно 15 лет, версия Red Hat/CentOS бэкпортировала v3 и поддержку дисплея PID (я не могу протестировать его прямо сейчас, но это должно работать).

Проверять Вашу конфигурацию ядра:

zgrep BSD_PROCESS_ACCT /proc/config.gz /boot/config-`uname -r`
6
27.01.2020, 20:39
  • 1
    , считающего только, не отслеживают должностных лиц, не ветвления. –  Gilles 'SO- stop being evil' 14.02.2013, 00:37
  • 2
    @Gilles, мой делает (psacct-6.4pre1, ядро 2.6.31.6, Slackware 13). Протестированный с кодом, который звонит fork(), и использование удара ( ... ) подоболочки. Ответ, обновленный для разъяснения. –  mr.spuratic 14.02.2013, 11:06

Можно использовать ps -ef для рассмотрения дочернего pid родительский идентификатор является тем, который сделал разветвление или порождение. Вы могли использовать watch запускать скрипт регулярно и делать значить Вас.

0
27.01.2020, 20:39

Можно настроить контрольную подсистему для входа ветвлений (и независимо от того, что другой системный вызов поражает воображение).

auditctl -a exit,always -S clone
0
27.01.2020, 20:39

Теги

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