É possível determinar se um determinado processo em execução é interativo ou meramente semelhante a um daemon (ou seja, um daemon real, ou um tail -f
, ou similar) usando scripts ou qualquer outra linguagem?
Se sim, como?
É possível em mais de uma plataforma (eu uso o bash com mais frequência, mas soluções em outros shells - até mesmo no PowerShell - também seriam apreciadas)?
Responder1
com base no seu comentário à outra resposta, o que você está pedindo é muito difícil.
Você pode verificar as bibliotecas às quais o aplicativo se conecta e, se elas controlam a tela (por exemplo, ncurses), provavelmente é interativo. Embora estes possam ser executados 'não interativos (por sua definição)' em determinadas situações de execução.
Acho que o melhor que você pode fazer é usar strace, que mostraria os syscalls que o aplicativo usa. Se estiver lendo um fd anexado a um tty, será interativo.
Responder2
Se entendi sua pergunta corretamente, um processo interativo deve ter um tty associado a ele.
O seguinte em um sistema Linux deve fornecer todos os processos interativos:
ps -e | grep pts