screen和给cluster提交jobs

###screen###

gnu screen非常实用于ssh到服务器,然后可以打开多个窗口,每个窗口就是一个终端,可以在其中执行多个独立进程,也方便长时间复杂计算的时候退出ssh跑走玩睡一觉第二天在看scrren已经跑完啦/

screen -S [名字]
#启动一个名为[]的窗口

如果提示错误说没有[]的话就source .bash-profile和.bashrc

快捷命令由[Ctrl]-a + 一个键完成:

C-a+? 列出所有命令和快捷键    
C-a+d 离开一个窗口但不杀死
C-a+k 杀死该窗口
C-a+c 创建一个新窗口
C-a+w 列出所有窗口
C-a+A 给当前窗口重命名,回车确认
C-a+n/p 切换到下一个/上一个窗口
C-a+数字 切换到数字所标窗口
C-a+: 后跟命令 可:quit杀死所有窗口,可:split分屏
C-a+<ESC> 进入复制模式,回车来选择一段文本
C-a+] 粘贴
C-a+Q 关闭除当前区域外的所有区域

跑走后或者第二天再次ssh到服务器,可以用命令恢复之前的窗口:

screen -ls 查看所有窗口列表
screen -r 恢复全部
screen -r [pid号] 恢复指定窗口
screen -x [名字] 恢复指定窗口

###提交jobs到服务器cluster###

最简单的命令是交互式:

qsub -I
qsub -I -q [queque_name]  #在我所服务器上分了四种queue,可以指定时间,如果不指定,会从2核开始尝试比较费劲所以最好指定
long: 1 week, 130 cores
medium: 24 hours, 250 cores
short: 1 hour 30 minutes, 550 cores
vshort: 10 minutes, 2 core

查看:

qstat -t -u [user_name] 只查看指定用户名提交的jobs
showq -i 全部jobs的列表
qstat -q 所有queues的状态

取消/删除:

qdel [job_id]
qdel all 所有你的jobs

或者可以通过脚本提交:

qsub 某脚本.sh