Usando GNU awk
Consultando la guía del usuario de GNU awk - 7.5.2 Variables incorporadas que transmiten información con la que me topé:
PROCINFO #
Los elementos de esta matriz proporcionan acceso a información sobre el programa awk en ejecución. Se garantiza que los siguientes elementos (enumerados alfabéticamente) estarán disponibles:
PROCINFO ["pid"]
El ID de proceso del proceso actual.
Esto significa que puede conocer el PID del programa durante el tiempo de ejecución. Entonces, es cuestión de usar system()
para buscar el proceso con este PID dado:
#!/usr/bin/gawk -f
BEGIN{ pid=PROCINFO["pid"]
system("ps -ef | awk '$2==" pid " {print $NF}'")
}
Yo uso ps -ef
, que muestra el PID en la segunda columna. Suponiendo que la ejecución se realiza awk -f <script>
y no hay otros parámetros, podemos suponer que el último campo de la línea contiene la información que queremos.
En caso de que tuviéramos algunos parámetros, tendríamos que analizar la línea de manera diferente o, mejor, usar algunas de las opciones ps
para imprimir solo las columnas que nos interesan.
Prueba
$ awk -f a.awk
a.awk
$ cp a.awk hello.awk
$ awk -f hello.awk
hello.awk
Tenga en cuenta también que otro capítulo de la guía del usuario de GNU awk nos dice que ARGV no es el camino a seguir:
1.1.4 Programas awk ejecutables
Finalmente, el valor de ARGV [0] (consulte Variables integradas) varía según su sistema operativo. Algunos sistemas ponen 'awk' allí, algunos ponen el nombre de ruta completo de awk (como / bin / awk), y algunos ponen el nombre de su script ('consejo'). (dc) No confíe en el valor de ARGV [0] para proporcionar su nombre de script.