В сценарии:
echo "${1//$/\\$}"
Это - замена простой строки, встраивают в оболочку. Синтаксис ${[VARIABLE_NAME]//[PATTERN]/[REPLACEMENT]}
для глобальной замены литеральной строки.
Не уверенный, почему Вы хотели бы сделать это. Сценарий на самом деле просто сообщает о строке, которую Вы отправили в него; \$sad\$test
оценивает к точно той же строке как '$sad$test'
, кроме последнего использует одинарные кавычки для выхода $
.
Традиционным способом зарегистрироваться и отследить пользовательское процессорное время является учет процесса. На Linux установите GNU бухгалтерские утилиты, обычно обеспеченные названным пакетом acct
. Я не уверен, насколько точный это будет при отслеживании времени, проведенного в очень недолгих процессах, но это, по крайней мере, перечислит все процессы, когда-либо выполняемые.
Выполненный lastcomm
для получения списка всех команд, выполняемых любым пользователем и время, проведенное в каждом (округленный к ~10ms для недолгих процессов, ожидайте видеть много из 0.00
). Выполненный sa
отобразить различные суммы и статистику. В частности, sa -m
отображает общие количества в расчете на пользователя. Статистика, накопленная sa
выполненный от последнего вращения бухгалтерских журналов (обычно расположенный в /var/log/account/
).
Обратите внимание, что Вы не собираетесь ловить все процессы путем выборки с промежутками, не большой разницей. Вы пропустите почти все недолгие процессы и последние несколько секунд долгих процессов. Учет процесса действительно перечисляет все прошлые процессы.
В /proc/$pid/stat
, пользовательское время является временем, проведенным, делая вычисление, в противоположность системному времени, проведенному, делая ввод-вывод. Какой рассчитать зависит от того, что Вы хотите сделать с информацией.
Подсчет всего PIDs является правильным. Я не знаю то, что родительский PID имеет отношение к этому.
На системной стороне, Вашем описании /proc/uptime
кажется неправильным. Википедия имеет его правильный, как я пишу. Первое поле является реальным временем, истекшим начиная с загруженной системы минус любое время, проведенное приостановленный или спящий режим. Второе поле является накопленным временем, проведенным в неактивной задаче на всех центральных процессорах. Я не уверен, что это действительно означает; это - конечно, не общее время простоя на моей машине. В ядре значение суммировано в uptime_proc_show
от переменных, обновленных в account_idle_time
.
sa
ожидайте процесса для выхода прежде, чем сообщить, что это - процессорное время? – Stefano Palazzo 25.02.2012, 13:48