Сеанс экрана не закрывается после запуска скрипта

Использование псевдонима - это, конечно, вариант, если вы работаете с head из coreutils версии 8.13. Это потому, что

head -n 5 -n 15 file_name

даст вам первые 15 строк имя_файла (при условии, что в файле достаточно строк. Вторая опция -n отменяет первую.

Поэтому вы можете создать псевдоним:

alias head="/usr/bin/head -n 5"

чтобы установить значение по умолчанию равным пяти, а затем использовать:

head -n 15 file_name

То же самое справедливо для tail.

1
12.01.2019, 03:13
2 ответа

Когда вы выполняете что-то вроде

screen -dmS session_1
screen -S session_1 -X stuff "Rscript script_1.R\n"

вы отправляете на терминал (в ранее созданном экране )последовательность символов Rscript script_1.R\n. Таким образом, оболочка выполнит команду, а затем будет ждать следующей команды.

Вам нужно выполнить что-то вроде Rscript script_1.R && exit, чтобы попросить оболочку выйти после успешного завершения вашей команды (пожалуйста, адаптируйтесь к синтаксису вашей оболочки ).

screen -dmS session_1
screen -S session_1 -X stuff "Rscript script_1.R && exit\n"

В любом случае нет необходимости создавать окно, а затем «удаленно управлять» им. Вы можете просто попросить экран выполнить команду для вас.

screen -dm Rscript script_1.R

И последнее, но не менее важное: использовать экран для фонового сценария — одна из самых странных идей, которые я когда-либо слышал. Пожалуйста, используйте cronили atили &вместо (в соответствии с вашими потребностями ).

Если «Rscript» — это не просто случайный пример, прочтите Запуск R-скрипта из командной строки .

R CMD BATCH script_1.R &
1
27.01.2020, 23:42

Если вы хотите «запланировать» сценарий, я думаю, что «Кронтаб» может быть хорошим решением. Другое решение — запустить скрипт в фоновом режиме (с & ).

0
27.01.2020, 23:42

Теги

Похожие вопросы