Почему вы хотите, чтобы задание выполнялось cron
, к которому (по определению) не подключен терминал, чтобы что-то делать с экраном? Согласно Wikipedia , «GNU Screen - это программное приложение, которое может использоваться для мультиплексирования нескольких виртуальных консолей, позволяя пользователю получить доступ к нескольким отдельным сеансам терминала».
Однако, если для этого есть какая-то причина, вам, вероятно, потребуется создать файл блокировки, который процесс проверяет перед продолжением. На этом этапе вам нужно запустить сценарий оболочки из записи cron
(что в любом случае обычно является хорошей техникой), и сценарий оболочки может проверить, завершился ли предыдущий запуск задачи, и завершится, если нет. Если предыдущее воплощение завершено, то текущее воплощение создает файл блокировки, содержащий его PID, и запускает задание. Когда он завершается, он удаляет файл блокировки. Вам следует просмотреть команду shell trap
и убедиться, что файл блокировки удален, если сценарий оболочки завершается в результате перехватываемого сигнала (вы не можете перехватить KILL и некоторые сигналы управления процессом).
Судя по другому ответу, программа screen
уже создает файлы блокировки; вам, возможно, не нужно делать ничего особенного, чтобы создать их - но вам нужно будет определить, существуют ли они. Также проверьте руководство GNU для screen
.