Você apenas encadeia os comandos 1. your_script
e 2. kill this screen session
Deixe foo.sh
ser seu script. O comando para matar uma sessão de tela é kill
. Você emite comandos para uma sessão de tela com screen -X
, tornando screen -X kill
o comando shell / bash para matar a sessão de tela em que você está atualmente. Você faria
screen -S the_session_for_my_job
para criar a sessão de tela e, em seguida, você faria
/path/to/foo.sh; screen -X kill
Isso matará a sessão de tela, independente do número de janelas, e o fará depois que foo.sh terminar.
Uma maneira mais complicada é observar os ids do processo e emitir o comando kill quando um determinado PID desaparecer.
Deixe 12345 o PID do processo que você deseja assistir. Então você faria
while ps a | grep ^12345;do sleep 2; done; screen -X kill
O loop while observa a lista de processos de um processo com o PID 12345. Se tal processo existir, ele dormirá 2 segundos antes de verificar novamente. Se nenhum processo com este PID existir, o loop while terminará. Então o comando kill é emitido.