建立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