На платформе со стандартным procfs
с поддержкой procfs -2 вы получаете результат через:
ls -l /proc/<pid>/path/a.out
Файл a.out является символической ссылкой на абсолютный путь к двоичному файлу.
Язык сценариев rsyslog RainerScript имеет несколько вспомогательных функций . Проще всего применить в этом случае, вероятно, поле , которое разбивает строку на поля, разделенные некоторым символом (, заданным его кодом ascii в десятичном виде ), или строкой. Вы выбираете, какое из результирующих разделенных полей вы хотите, начиная с 1. Например,:
field("/a/b/c", 47, 2)
дает результат "а" как 2-е поле,так как первое поле - это пустое место перед первым «/». Таким образом, вы можете использовать
set $.sourceIP = field($!metadata!filename, 47, 3);
Не забудьте ";" что является обязательным. Вы можете использовать ту же функцию, чтобы извлечь 4-е поле, а затем снова разделить на "." символ, чтобы занять 1-е поле.
Для более сложных извлечений существует re _Extract , где вы можете использовать регулярное выражение POSIX ERE для сопоставления некоторой части строки, возможно, что-то вроде
re_extract("/a/b/c.d.log", "([^/]*).log$",0,1,"failed")