По умолчанию, Экран
закрывается, когда выполняемая им команда закрывается, как вы заметили. Когда вы запускаете screen
отдельно, команда, которую он запускает, представляет собой интерактивную оболочку, которая, конечно, не завершается, когда ее дочерние элементы делают это.
Если вы хотите добиться чего-то подобного из другого скрипта, вы можете сделать
screen -dm -S myscreen
screen -S myscreen -X stuff "export VAR=123; cd /usr/local/myproject^M"
screen -S myscreen -X stuff "./myscript.py && exit^M"
Сначала запускается новый экран, в котором будет запущена оболочка входа в систему, и он не закроется, пока оболочка входа не завершится. Затем вы используете команду screen
stuff
для ввода текста в эту оболочку. В первой строке мы определяем переменные и меняем каталог. Во второй строке мы запускаем сценарий, а затем выходим из оболочки (предполагая, что вы хотите закрыть сеанс экрана, если сценарий завершится успешно). Однако из-за короткого замыкания и ( &&
), если myscript.py
выйдет из строя, выход
никогда не произойдет, и вы сможете повторно подключитесь к сеансу экрана и посмотрите, что произошло.
Обратите внимание, что для правильного ввода ^ M
вам нужно ввести ^ V
(control-v), а затем ^ M
(что то же самое в качестве клавиши ввода).
Репозитории debuginfo
и source
отключены (enabled=0
), поэтому нет никакой разницы между изменением только репозитория epel
или всех трех. Тем не менее, вам, вероятно, следует обновить все зеркальные списки / URL-адреса репозитория EPEL при обновлении одного из них на случай, если вам когда-нибудь понадобится включить какой-либо из этих репозиториев.