求助:Google Colab基础版如何后台运行二进制命令
解决方案
方案1:修正Bash后台执行命令
你之前的命令语法错误是多了冗余分号,用以下命令可实现需求:
!nohup PATH_TO_BINARY_IN_GOOGLE_DRIVE > /dev/null 2>&1 & sleep 30
nohup:让进程脱离终端会话,避免Colab单元格结束后进程被终止> /dev/null 2>&1:重定向标准输出和错误输出,防止输出占满缓存导致进程异常&:将二进制进程放到后台运行sleep 30:让当前单元格等待30秒后再释放,确保进程启动稳定,之后即可执行后续单元格
方案2:Python subprocess 控制进程
用Python脚本精确控制进程生命周期,避免Bash语法问题:
import subprocess import time # 启动二进制进程,后台运行 proc = subprocess.Popen( ["PATH_TO_BINARY_IN_GOOGLE_DRIVE"], stdout=subprocess.DEVNULL, stderr=subprocess.STDOUT, start_new_session=True ) # 等待30秒 time.sleep(30)
subprocess.Popen:非阻塞启动进程,不会卡住当前单元格start_new_session:确保进程独立于Python会话运行,即使单元格执行完毕也能继续- 等待30秒后,单元格自动释放,后续代码可正常执行
方案3:Bash脚本实现先运行再转入后台(精准控制前台转后台)
如果需要二进制先运行30秒再转入后台,用以下命令:
!bash -c 'PATH_TO_BINARY_IN_GOOGLE_DRIVE & pid=$!; sleep 30; disown $pid'
PATH_TO_BINARY_IN_GOOGLE_DRIVE &:启动进程并后台运行pid=$!:记录进程IDsleep 30:等待30秒disown $pid:将进程从当前会话移除,避免会话结束时被终止
内容的提问来源于stack exchange,提问作者dtb
相关产品推荐
相关产品推荐

