Использование GNU awk
Проверка руководства пользователя GNU awk - 7.5.2 Встроенные переменные, передающие информацию, на которую я наткнулся:
PROCINFO #
Элементы этого массива предоставляют доступ к информации о запущенной программе awk. Следующие элементы (перечислены в алфавитном порядке) гарантированно будут доступны:
PROCINFO [ "Pid"]
Идентификатор процесса текущего процесса.
Это означает, что вы можете знать PID программы во время выполнения. Затем, это вопрос использования system()
для поиска процесса с данным PID:
#!/usr/bin/gawk -f
BEGIN{ pid=PROCINFO["pid"]
system("ps -ef | awk '$2==" pid " {print $NF}'")
}
Я использую ps -ef
, который отображает PID на 2-й столбец. Предполагая, что выполнение g выполнено, awk -f <script>
а других параметров нет, мы можем предположить, что последнее поле строки содержит информацию, которую мы хотим.
Если бы у нас были какие-то параметры, мы должны были бы проанализировать строку по-другому - или, лучше, использовать некоторые параметры ps
для печати только тех столбцов, которые нам интересны.
Тестовое задание
$ awk -f a.awk
a.awk
$ cp a.awk hello.awk
$ awk -f hello.awk
hello.awk
Также обратите внимание, что в другой главе руководства пользователя GNU awk говорится, что ARGV - это не тот путь:
1.1.4 Исполняемые программы awk
Наконец, значение ARGV [0] (см. Встроенные переменные) варьируется в зависимости от вашей операционной системы. Некоторые системы помещают туда «awk», другие вводят полный путь к awk (например, / bin / awk), а некоторые помещают имя вашего скрипта («advice»). (dc) Не полагайтесь на значение ARGV [0] в качестве имени вашего скрипта.