服务器提交任务和直接运行,linux下任务提交以及如何后台运行任务
有时候 我讲解后台提交任务,一般都要讲半个小时,有时候讲一百遍也不能要求所有人记住每个字眼,因此我写下来这篇博文,希望更多的同行者可以复习并也可以通过博文来理解并解决你的困扰!
登录你的服务器或mac的终端
任务投递步骤
核查软件是否安装,能否--help
参数用法是否正确,查询一下参数的具体含义,根据--help翻译英文
检查输入文件路径
核查输出文件路径
提交任务,如有有报错,解决报错在投递任务
查看任务是否已经在进程上运行着
查看结果路径,是否运行出内容。有的命令不会那么快运行出结果
备注:很多事情,这个只是用来排除疑难杂症的问题的,因为你有经验了后,就能看懂很多报错,就能一下子想到出错地方,但是如果你初学的话,尤其第一次投递一个软件的任务时,可以试试这种方法,他能帮你排除掉90%的报错问题~
任务直接提交
这里不再赘述,conda安装软件sra-tools,请查看我的博文,故直接提交命令
对于初学者,一般是这样提交的,直接在登录节点投递任务;
但是对于一个集群,我们是不会在登录节点投递任务的,因为我们有很多专门跑任务的节点。
那么如果你只能直接投递任务了,下面就是一个简单的例子
source activate rna
prefetch SRR1039510 -O ~
2019-04-11T04:31:32 prefetch.2.9.1: 1) Downloading 'SRR1039510'...
2019-04-11T04:31:32 prefetch.2.9.1: Downloading via fasp...
SRR1039510
2019-04-11T04:42:43 prefetch.2.9.1: fasp download succeed
2019-04-11T04:42:43 prefetch.2.9.1: 1) 'SRR1039510' was downloaded successfully
ls -lh ~/*sra
-rw-r--r-- 1 qmcui qmcui 1.6G Nov 27 2013 /home/qmcui/SRR1039510.sra
任务的下载还是很快,11分钟下载结束,但是这十一分钟内你什么事情都做不了。得重新开一个窗口。
运行过程如图:
下载过程
下载结果
任务提交后,只能等待任务的结束,你才能输入命令,否则提交的任务还在运行的时候,你发现你输入什么都没反应。
重点是,这种情况下运行的任务会因为你网络掉线、服务器掉线、xshell/终端关闭、电脑关闭等突发情况而任务被终止
因此我们希望任务运行时被投递出去,被投递到后台运行,然后很开心的关电脑去睡觉
任务后台提交
后台任务通常用nohup ... &
source activate rna
nohup prefetch SRR1039511 -O ~ &
# 按enter
# 后台提交任务后,命令行就被立刻返回了
# 可以再做别的事情~
ps -ef|grep qmcui|grep prefetch
# 查看qmcui用户提交的所有任务是ps -ef|grep qmcui
cat nohup.out
后台提交prefetch
后台任务必须保存日志信息
但你把任务提交到后台后,运行的提示信息,如果你没有保存、重定向的话,自然也就没有啦。那么如果提交到后台的任务报错了,你就需要报错信息,所以必须看到这样的报错原因,才能准确定向,到底哪里出问题啦,对吧!
因此捕获报错信息很重要!!!我们需要将后台运行任务的正确提示还是报错信息都要保存起来
所以上面的任务就会变形为:
prefetch SRR1039510 -O ~ 1>SRR1039510.download.log 2>&1 &
prefetch SRR1039511 -O ~ 1>SRR1039511.download.log 2>&1 &
prefetch SRR1039512 -O ~ 1>SRR1039512.download.log 2>&1 &
prefetch SRR1039513 -O ~ 1>SRR1039513.download.log 2>&1 &
prefetch SRR1039514 -O ~ 1>SRR1039514.download.log 2>&1 &
大家尝试运行,并查看任务是否投递成功,别忘了ps -ef|grep qmuci;匹配自己的用户名即可哦!学习:https://www.jianshu.com/p/dee6db5afeff
循环提交任务
如果将任务循环起来呢,再来点难度!这里先准备循环前的使用文件,这个文件的怎么准备,是源于循环里你需要用什么数据,文件里就准备什么数据,然后用管道符|传递给循环的代码
# 生成一个如下的SRR_list.txt文件
echo SRR10395{10..14}|sed 's/ /\n/g' >SRR_Acc_List.txt
cat SRR_Acc_List.txt
SRR1039510
SRR1039511
SRR1039512
SRR1039513
SRR1039514
运行示例:
# 理解循环结构
# 这里我没投递,先写了echo "即将投递到服务器上的命令"
cat SRR_Acc_List.txt |while read id;do echo "prefetch $id -O ~ 1>$id.download.log 2>&1";done
prefetch SRR1039510 -O ~ 1>SRR1039510.download.log 2>&1
prefetch SRR1039511 -O ~ 1>SRR1039511.download.log 2>&1
prefetch SRR1039512 -O ~ 1>SRR1039512.download.log 2>&1
prefetch SRR1039513 -O ~ 1>SRR1039513.download.log 2>&1
prefetch SRR1039514 -O ~ 1>SRR1039514.download.log 2>&1
# 查看这些内容是不是你要投递的
# 循环投递任务:
cat SRR_Acc_List.txt |while read id;do prefetch $id -O ~ 1>$id.download.log 2>&1;done
循环后台提交任务
尝试了前面循环提交任务,那循环的任务怎么投递后台?
# 通过测试cat SRR_Acc_List.txt |while read id;do prefetch $id -O ~ 1>$id.download.log 2>&1;done循环语句没错
然后写进去一个.sh文本
cat >prefetch.sh
cat SRR_Acc_List.txt |while read id;do prefetch $id -O ~ 1>$id.download.log 2>&1;done
nohup bash prefetch.sh &
# 即把任务循环投递到后台~
写在最后
虽然第一次学起来有点难度,其实每个人但凡需要学linux投递任务的,这个知识点都是不可避免的,慢慢理解,反正不能躲避,就正面迎击吧
敲重点
其实把任务放在后台最重要的符号是&。
不要再循环的do代码的后面里放入&,你会死很惨,慢慢你就理解啦。
任务投递出去,千万不要以为就万事大吉了,因为还有查看任务是不是真的投递上了。
等你学会后台提交任务,你就可以学习怎么写流程了。
1> 1.log 捕获一种输出,2> 2.log有捕获一种输出。如果想理解清楚,运行下面代码
find / -name '*gz'
find / -name '*gz' 2>~/error.txt
find / -name '*gz' 1>~/result.txt
服务器提交任务和直接运行,linux下任务提交以及如何后台运行任务相关推荐
- Linux下优雅的让程序后台运行
Linux下优雅的让程序后台运行 假设在终端上启动运行了一个程序,跑了几天,如果不小心把terminal关了,那么程序就会终止,这是SIGHUP信号的原因,即使通过bg置为后台运行同样会如此,应该让程 ...
- linux下如何让脚本在后台运行
在服务器中我们经常需要将一些脚本挂在后台继续运行,而不是随着我们切断一段会话就结束了运行,常见的作法有如下几种,下面就进行简单的总结: 0. bg\fg 在 Windows 上面,要么让一个程序作为服 ...
- linux下设置程序后台运行,linux中如何让进程在后台运行
一. nohup / setsid / & 使用场景: 如果只是临时有一个命令需要长时间运行,什么方法能最简便的保证它在后台稳定运行呢? 我们的解决办法就有两种途径:要么让进程忽略 HUP 信 ...
- linux 后台运行jar包命令,Linux 运行jar包命令(Cent OS 7后台运行jar包)
Linux 运行jar包命令如下: 方式一 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? 方式二 java -jar shareniu. ...
- (转)linux下oracle instant client安装和运行
1.首先要知道什么是ORACLE的客户端: Oracle Instant client 是oracle提供的简便客户端, 支持多种平台. 可从oracle网站下载, 下载地址为 http://www. ...
- linux 邮件服务器 并给外网发送邮件,Linux下判断公网IP是否改变,并发送邮件通知...
考虑到大家都是在自己家里架设服务器,IP是动态的,随时可能改变.为保证IP改变的时候能及时更新域名指向地址,在服务器上挂一个脚本判断IP是否已经改变,并主动发送邮件通知--这显得非常重要. 实现方法有 ...
- linux版gaussian运行,linux下运行高斯比windows的优势
转引自GaussianFAQ第一章第四节 (1.4) 难道非要用Linux算高斯吗?Windows算高斯的缺陷是什么? 后续问题:听说Linux很难的.我是电脑小白,在Windows上都不太懂,只会最 ...
- linux下程序如何实现单实例运行
1.技术原理 无论是windows还是linux下,程序设计者都会遇到一个问题,那就是如何实现程序的单实例运行.比如,Windows自带的播放软件Windows Medea Player只能启动一个实 ...
- drcom linux怎么运行,linux下使用drcom登录认证
下载 首先感谢开发者: https://github.com/drcoms/drcom-generic 这个项目基于python实现了d,p,x版drcom认证,请到上述链接查看相关信息, 项目的wi ...
- linux 下进程和线程指定CPU运行
大概的介绍一下linux 的指定CPU运行,包括进程和线程,这个只是最基本的方法,看一下基本就会了,至于其他的进程间通信和线程同步的话,这里暂不做任何介绍. 算了,还是比较整体的介绍一下如何去学习这个 ...
最新文章
- byte数组截取_Go解密:数组、切片
- Springboot 使用thymeleaf模板layout布局
- android 自定义命名空间,Android自定义ActionBar实例
- django源码解析一(请求处理流程)
- python自带的集成开发环境是什么-Python的10大集成开发环境和代码编辑器(指南)...
- 鸟哥的Linux私房菜(基础篇)-第四章、安装 CentOS 5.x 与多重开机小技巧
- 雷蛇鼠标宏文件_Razer推出DeathAdder V2与Basilisk V2游戏鼠标
- 分布式事务理论(学习笔记)
- Jeecg-Boot 快速开发平台,前后端分离—开发工具安装
- 搭建Cockpit服务器,Linux集群管理工具,DevOps开发运维一体化集群系统/持续集成
- 台式计算机windows7系统怎么做,台式电脑怎么在线进行重装win7系统
- 面对一个全新的环境,作为一个Mysql DBA,首先应该了解什么?
- ADB如何无线连接手机操作方法
- html设置背景颜色宽度,如何设置div的背景色和高度 CSS示例代码
- 元宇宙都市传说02:《头号玩家》的隐喻
- c# 微信公众号开发之token验证第三方服务器
- FFmpeg的下载和安装
- 基于UCOS-III的雷电传奇自制小游戏————秉火STM32F103-指南者;PS2手柄
- python33.dll_python33.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家
- 谈谈Spring中的IOC、DI和AOP概念
热门文章
- 苹果内购后台(java)验证订单
- 乒乓球侧旋球MATLAB,【动图】看动图让你了解乒乓球的侧旋转
- 山东理工ACM【1216】杨辉三角
- [软件安装] 动态图像录制工具LICEcap
- 共阳极管的代码_1.共阳极数码管是将发光二极管的_____连接在一起,字符5的共阳代码为_____,字符2的共阴代码为 _____。...
- m3u8手机批量转码_M3U8批量转换器(Android)开发
- 低通滤波器的一阶RC电路模型
- Volatility FAQ
- 农产品区块链溯源:疫情催使下的农产品认知升级
- TSP_旅行商问题 - 遗传算法(四)