Python使用subprocess自动建立screen窗口,并执行命令

建立screen

指定screen名字,建立对应的screen会话

# create the screen
screenName = "s1"
cmdCreateScreen = ['screen', '-dmS', screenName]
subprocess.call(cmdCreateScreen)

发送要执行的命令给对应的screen会话

这里,我要在刚才建立的screen里面跑命令: python3 main.py demo.txt
你可以通过mainPy修改要跑的py文件,通过argsPy修改传参
类似的,bash脚本也可以放在这里运行
注意,cmdPy中的'\n'很重要

# send cmd to the screen
mainPy = "main.py"
argsPy = "demo.txt"
cmdPy = 'python3'+' '+mainPy+' '+argsPy+'\n'

cmdToScreen = ['screen', '-x', '-S', screenName, '-p', '0', '-X', 'stuff', cmdPy]
subprocess.call(cmdToScreen)

结束screen会话

# quit the screen
quitToScreen = 'screen '+' -S '+screenName+' -X quit\n'
subprocess.call(quitToScreen, shell=True)

screen常用命令

screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>]
       [-r <作业名称>][-s ][-S <作业名称>]

参数说明:
-ls / --list 显示目前所有的screen作业。
-S 指定screen作业的名称。
-d 将指定的screen作业离线。
-r 恢复离线的screen作业。

删除作业:
screen -S name -X quit
exit(删除窗口)

在每个screen session 下,所有命令都以 ctrl+a(C-a) 开始。注意,是先按ctrl+a,然后保持ctrl不放,放开a,再按另一个键。

C-a d detach,暂时离开当前session
C-a w 显示所有窗口列表
C-a c 创建一个新的运行shell的窗口并切换到该窗口
C-a n Next,切换到下一个 window
C-a p Previous,切换到前一个 window
C-a 0 1... 切换到第 0 1... 个 window
C-a [Space] 由视窗0循序切换到视窗9
C-a a 在两个最近使用的 window 间切换
C-a x 锁住当前的 window,需用用户密码解锁

C-a z 把当前session放到后台执行,用 shell 的 fg 命令则可回去。
C-a t Time,显示当前时间
C-a k kill window,强行关闭当前的 window
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容