С учетом введенных вами данных и запрошенных выходных данных:
$ awk -F: '$0 == "End" { printf "\n" } $1 ~ /^String[12]$/ { gsub( /\"/, "", $2 ); printf( "%s ", $2)}' input
Hello World
HelloAgain
NewEntry Foo
Я думал, чтоsystemd-analyze
может быть ответом, но это не выглядит так.
Есть МНОГО , которые он может сделать, но функциональность больше связана с тем, «сколько времени потребовалось для запуска служб», а не «как долго они работали для ». Последнее может быть не то, что он делает. systemd-analyze plot > plot.svg
выводит гистограмму SVG со временем начала юнитов (время, затраченное на инициализацию, выделено ), но, опять же, похоже, что оно не поддерживает «время окончания» (некоторые столбцы обрезаются раньше, но неясно, означает ли это, что их служба завершилась в точке отключения -)или была создана для поддержки процессов, запущенных с перерывами при одной и той же загрузке...
К счастью, поскольку интересующая вас служба является вашей собственной, вы можете изменить ее и добавить сообщения «Started @» и «Finished @», которые можно прочитать с помощью journalctl -u foo.service
или записать в файл журнала.
Однако для общих служб, которые вам неудобно изменять, нужны другие ответы.