Если память мне не изменяет, сеанс экрана (если он запущен командой, я думаю, это -x) убьет себя (экран закроется), когда программа завершит работу, так что вы можете просто проанализировать screen -list
и посмотрите, все ли еще там экран (с назначенным вами именем сеанса).
В качестве альтернативы (и то, что я хотел бы сделать), вы могли бы добавить бегущую строку в таблицу, когда скрипт запускается на экране (с такой информацией, как то, что он делает, ожидаемое время завершения, экран, на котором он запущен и т. Д.). Затем просто сделайте на экране удаление строки из базы данных, когда она завершится, и у вас будет хорошее представление обо всем, что происходит, и о том, где это происходит.
Вы можете даже ограничить количество экранов и запустить программу администрирования в фоновом режиме для назначения заданий экранам (проверка базы данных на наличие открытых экранов).