Gnu-Screen

腳本執行後螢幕會話未關閉

  • May 25, 2021

我編寫了一個 bash 文件,其中包含螢幕命令。然後使用子程序從 python 腳本呼叫此 bash 文件。一切正常。但是,在腳本(成功)執行並保持打開狀態後,螢幕會話不會關閉。這是不受歡迎的行為。

以下是 bash 文件的範例:

#!/bin/bash
VIRTUAL_ENV_DISABLE_PROMPT=true
source generic_path/bin/activate
cd generic_directory
screen -dmS session_1
screen -S session_1 -X stuff "Rscript script_1.R\n"

我懷疑,我必須更改螢幕命令中的某些內容,對吧?你能告訴我,我必須改變什麼,所以腳本執行後螢幕會話會自動關閉。

當你執行類似

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

您將字元序列發送到終端(在先前創建的螢幕中)Rscript script_1.R\n。這樣,shell 將執行命令,然後等待下一個命令。

當您的命令成功完成時,您需要執行類似Rscript script_1.R && exit要求 shell 退出的操作(請適應您的 shell 語法)。

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

無論如何,沒有必要創建一個視窗然後“遠端控制”它。您可以簡單地要求螢幕為您執行命令。

screen -dm Rscript script_1.R

最後但並非最不重要的一點是,使用螢幕將腳本置於後台是我聽過的最奇怪的想法之一。請使用cronorat&代替(根據您的需要)。

如果“Rscript”不僅僅是一個隨機範例,請閱讀從命令行執行 R 腳本

R CMD BATCH script_1.R &

引用自:https://unix.stackexchange.com/questions/493891