Uma opção é executar os programas como o comando principal da tela e, em seguida, a tela sairá quando eles forem concluídos.
Se o acima não for útil, você pode estimar quantos processos estão sendo executados observando quantos estão conectados ao shells tty.
São necessários alguns idiomas
Extraia o pid da tela de screen -ls
:
screen -ls | sed -nr 's/^\t+([0-9]+).*//p'
Pesquisa que tem esse pid como pai:
ps h --ppid $screen_pid -o tty
Veja quantos processos estão conectados a essa tty:
ps a -o tty | grep $shell_tty | wc -l
Juntando tudo
screen -ls | sed -nr 's/^\t+([0-9]+).*//p' | while read screen_pid; do
shell_tty=$(ps h --ppid $screen_pid -o tty)
number_of_processes=$(ps a -o tty | grep $shell_tty | wc -l)
if (( number_of_processes > 1 )); then
# more than the shell is running
else
# can be killed
fi
done