Linux 执行命令不挂断

715 阅读2分钟

工作中经常需要通过xshell或者iterm等工具在服务器上执行一些shell脚本或者命令,比如执行某shell脚本,通常我们这样做

sh xxx.sh

很多时候有这样的场景:

  • 我们需要在服务器上连续跑批(每日批处理,假设目前数据回来的比较迟,今天连续回来了5天的数据),我们要连续跑5天的数据.
  • 假设跑 20210221 20210222 20210223 20210224 20210225 5天的数据。
  • 需要跑的脚本的名字叫 batch.sh
  • 执行单日的批处理 sh batch.sh 20210221 跑一天的数据需要1小时。 那连续5天的数据就是5小时. 这个时候,我们如果做一个临时的脚本像这样:
    脚本名字姑且叫 temp.sh ,内容如下:
sh batch.sh 20210221
sh batch.sh 20210222
sh batch.sh 20210223
sh batch.sh 20210224
sh batch.sh 20210225

这个时候不太合适直接sh temp.sh这样执行了,因为你估算temp.sh脚本执行需要5个小时。
5个小时啊~ 是不是影响了我下班?!
这时候你就需要用不挂断的方式来执行temp.sh,这样你可以该干嘛干嘛,只要服务器不出问题,
你该干嘛干嘛,这个时候那你必然需要一份对应的日志文件,
第二天你精神饱满的来工作,总得知道昨天的数据是否跑成功了?没成功的话到底出什么事了?

后台执行temp.sh脚本,所有控制台输出的日志打印到temp.log文件中

nohup sh temp.sh>temp.log 2>&1 &

这里是分享日常实用做法的总结和记录,欢迎交流。有兴趣,可以再具体看一看nohup命令的详细介绍。