Consegui resolver isso com o% inicial /usr/local/bin/run_on_login.sh
fork em outro script que é executado como um processo em segundo plano, aguarda alguns segundos e depois analisa o comando 'last'.
No exemplo, pam_exec executa este script:
#!/bin/bash
# /usr/local/bin/run_on_login.sh
nohup /usr/local/bin/parse_last.sh >/dev/null 2>&1 &
Que aciona esses scripts:
#!/bin/bash
# /usr/local/bin/parse_last.sh
sleep 5
# (truncated for brevity)
last -iF | head -n 50 | awk '{print "something"}'