查看原文
其他

Linux系统下超cool的定时任务

王通 基因学苑 2023-08-18

Linux系统有很多炫酷的操作,只要掌握这些操作,有时候可以节省大量的时间,提高效率。如果不会使用这些,那么就得设置好闹钟,半夜爬起来,开启,登录服务器,运行脚本,退出,关机,睡觉,失眠……

例如以下工作场景:

场景一:服务器在白天使用的人数较多,资源比较紧张,需要将任务放到晚上开始执行,例如夜里1点钟;

场景二:每月对下载的nt库进行一下同步,保持最新的状态;

at一次性定时任务

at命令可以完成一次性的定时任务,顾名思义,一次性计划任务只执行一次,一般用于满足临时的工作需求。例如上面的场景一就可以使用at命令实现这种功能。at的使用也非常简单,只需要写成“at 时间”的形式就可以。

# 敲at命令,设置时间,然后输入要执行的任务
$ at 00:05
> nohup sh spades.sh &
#ctrl+D 退出
  • at -l :查看已设置好但还未执行的一次性计划任务;

  • atrm : 要想将其删除,可以用“atrm 任务序号”;

也可以使用管道一次性写好任务。让at命令接收前面echo命令的输出信息,以达到通过非交互式的方式创建计划一次性任务的目的。

echo "nohup sh spades.sh &" | at 00:05

crontab周期性定时任务

at命令适合一次性的任务,对于那种周期性的任务,例如上面的应用场景二,Linux为我们提供了crontab命令。这条命令的使用也非常简单。无论是管理员还是普通用户都可以使用。

  • crontab -e :创建、编辑计划任务;

  • crontab -r:删除某条计划任务;

  • crontab -l:查看当前计划任务;

  • crontab -u:管理员使用,可以编辑普通用户的定时任务;

crontab的语法也比较容易,敲crontab -e就会自动调用vim打开编辑窗口。依然一次输入“分、时、日、月、星期 命令”。这是使用crond服务设置任务的参数格式,缺一不可。如果有些字段没有设置,则需要使用星号(*)占位。

应用场景二:每月自动同步nt库。

#每月1号,3:15分,自动同步nt库
$ crontab -e
15 03 1 * * /usr/bin/rsync -avzP rsync://ftp.ncbi.nlm.nih.gov:/blast/db/FASTA/nt.gz nt.gz

注意事项:

  • 在crond服务的配置参数中,可以像Shell脚本那样以#号开头写上注释信息,这样在日后回顾这段命令代码时可以快速了解其功能、需求以及编写人员等重要信息。

  • 计划任务中的“分”字段必须有数值,绝对不能为空或是*号;

  • “日”和“星期”字段不能同时使用,否则就会发生冲突。


---------- END ----------

(添加作者微信,请注明单位姓名)



您可能还会感兴趣的

生物信息暑期班(北京站)开始报名
基因学苑文章列表(201906)

上传数据,直接分析,1T内存服务器来了
手把手教你生信分析平台搭建专栏合集
生物信息重要资源站点合集
不会编程,如何进行批量操作
一个人全基因组完整数据分析脚本
一个细菌基因组完整分析脚本
如何在Linux下优雅的装X


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存