手把手教我自己熟练地在工作站上丢job - 2020.02.05

手把手教我自己熟练地在工作站上丢job - 2020.02.05

这篇blog的核心思想是:怕忘

趁着前一段在家自我封闭,我在组里的工作站上搭建好了需要跑的code,下面好像就可以开始做科研了。但是在正式做事情之前,还要手把手教自己怎么熟练地在工作站上丢job。核心内容只有两个,1. shell script,2. nohup。

Shell script批量作业

我们的目标是用nohup去执行命令,所以我们首先要有事儿干。这个事呢,可以是批量地执行某项命令。比方说,我们尝试写一个简单的可以建立99个文件夹的脚本 - dirs_maker.sh。

for((i=1; i<=99; i++)); do
	{
		sleep 1
		echo "make a directory named dir$i."
		mkdir dir$i
		echo "done, dir$i."
	}
done

不过这样仅通过循环去生成99个文件夹还是有点慢,我们可以利用 & 去让后台并行地执行命令。

for((i=1; i<=99; i++)); do
	{
		sleep 1
		echo "make a directory named $i."
		mkdir dir$i
		echo "done, dir$i."
	} &
done
wait

这样执行命令就快多了。至于说 & 是什么意思,参见shell 管道命令 &、&&、||、>、>>

nohup

nohup = no hang up

有的时候可能我们要执行的任务有点大,跑起来可能要想当长的时间,但又担心断开ssh链接导致进程中断。这时候nohup命令可以让我们的进程 never hang up。

语法很简单:

nohup Command [Arg ...] [&]

所有输出的内容,都将附加到当前路径下的nohup.out文件中。如果当前路径不可写,则附加到$HOME/nohup.out中。如果你希望在后台运行命令,可以在最后加上一个&。

例子:

nohup sh dirs_maker.sh &

执行完这个例子,你会发现在当前路径下多了99个文件夹以及nohup.out。nohup.out中会是上面那些echo所返回的输出。

然后如果你想知道如何查看/终止在后台运行的命令,可以参看nohup和&后台运行,进程查看及终止

感觉用top这个命令去查看后台运行的命令更方便一些,退出按q。

References

For how to use nohup

  1. https://blog.csdn.net/themanofcoding/article/details/81948094
  2. https://baike.baidu.com/item/nohup/5683841?fr=aladdin
  3. https://www.cnblogs.com/jinxiao-pu/p/9131057.html#_label0

Fin

到这里,我想对于像我这种菜鸟级的选手就足够了。要是哪天我成长了,再回来添新东西。

Regards,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值