ubuntu设置定时任务的三种方法
“ 老子曰:天道轮回。谁,都是一个定时的轮回”
01
—
corn
cron,是一个Linux定时执行工具,可以在无需人工干预的情况下运行作业。
1、添加定时任务
推荐使用crontab -e命令添加自定义的任务
参数说明
m h dom mon dow command
m 分钟 0-59
h 小时 0-23
dow 天1-31
mon 月 1-12
dow 星期 1-6 0表示星期天
command 就是要执行的命令
除了这些固定值外,还可以配合星号(*),逗号(,),和斜线(/)来表示一些其他的含义:
- 星号 表示任意值,比如在小时部分填写 * 代表任意小时(每小时)
- 逗号 可以允许在一个部分中填写多个值,比如在分钟部分填写 1,3 表示一分钟或三分钟
- 斜线 一般配合 * 使用,代表每隔多长时间,比如在小时部分填写 */2 代表每隔两分钟。所以 */1 和 * 没有区别
1. * * * * * date >> /home/postgres/time.log # 每隔一分钟执行一次任务
2. 0 * * * * date >> /home/postgres/time.log # 每小时的0点执行一次任务,比如6:00,10:00
3. 6,10 * 2 * * date >> /home/postgres/time.log # 每个月2号,每小时的6分和10分执行一次任务
4. */3,*/5 * * * * date >> /home/postgres/time.log # 每隔3分钟或5分钟执行一次任务,比如10:03,10:05,10:06
2、重启cron服务
service cron restart
02
—
nohup命令
编写java程序,编写一个主函数,在主函数里边写入一下代码
public static void main(String[] args) throws Exception {
// 一天的毫秒数
long daySpan = 24 * 60 * 60 * 1000;
// 规定的每天时间15:33:30运行
// final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 15:33:30");
final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 02:00:00");
// 首次运行时间
Date startTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(sdf.format(new Date()));
// 如果今天的已经过了 首次运行时间就改为明天
if (System.currentTimeMillis() > startTime.getTime()) {
startTime = new Date(startTime.getTime() + daySpan);
}
ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(1,
new BasicThreadFactory.Builder().namingPattern("example-schedule-pool-%d").daemon(true).build());
long initialDelay=1000L;
long period = 100L;
executorService.scheduleAtFixedRate(() -> {
//do something
//delay--这是以毫秒为单位的延迟之前的任务执行。
//period--这是在连续执行任务之间的毫秒的时间
},initialDelay,period, TimeUnit.HOURS);
}
生成jar包,并上传到服务器的某路径
执行如下命令
java -jar XXX.jar &
当前窗口不被锁定,输出的日志会显示在屏幕上,当关闭窗口的时候,停止执行。
nohup 不挂断运行的命令,当终端或者账户关闭的时候,程序依旧运行。
当前的命令默认会把日志输出到nohup.out文件中,执行如下命令
nohup java -jar XXX.jar &
指定输出文件,执行如下命令
nohup java -jar XXX.jar >log.out &
查看后台启动命令是
jobs
但是它只能查看当前连接中断的后台命令,当关闭终端再次打开的时候可以执行如下命令查看
ps -ef
03
—
screen
还有一种更加强大的方式是使用screen,首先创建一个断开模式的虚拟终端,然后用-r选项重新连接这个虚拟终端,在其中执行的任何命令,都能达到nohup的效果,这在有多个命令需要在后台连续执行的时候比较方便:
1、安装命令
apt-get install screen
2、常用命令
创建screen会话
screen java -jar start.jar
或者
screen
离开screen,但是保留里面的程序操作是
Ctrl+a d
恢复会话
先查看当前screen里的会话 screen -ls
screen -r (进程名或进程号) :实际执行命令时是没有括号的,这里只是为了说明
关闭会话
Ctrl+c或者exit
常用快捷键
Ctrl+a c :在当前screen会话中创建窗口
Ctrl+a w :窗口列表
Ctrl+a n :下一个窗口
Ctrl+a p :上一个窗口
Ctrl+a 0-9 :在第0个窗口和第9个窗口之间切换
screen启动会话时如果是直接执行 screen java -jar start.jar 会有两个进程在跑,解决办法是
先执行screen,在会话窗口里面再执行你要的程序或任务
文/戴先生@2017年10月11日
---end---
- 两条报警信息的分析(第一篇) (r6笔记第70天)
- R-求y=sin(X) 0-PI 面积代码
- Facebook 发布 wav2letter 工具包,用于端到端自动语音识别
- Java企业面试——Java基础
- 从Java的类型转换看MySQL和Oracle中的隐式转换(二)(r6笔记第68天)
- R包—iGraph
- 深度学习中 GPU 和显存分析
- 数据库SQL优化大总结1之- 百万级数据库优化方案
- Golang语言社区--LollipopGO开源项目搭建商城路由分发
- Shapes and line types for R
- Python基本常用包整理(data analysis and machine learning),附查询包版本语句
- 一次 PyTorch 的踩坑经历,以及如何避免梯度成为NaN
- 递归与伪递归区别,Python 实现递归与尾递归
- N元分词算法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 用matplotlib实现画中画
- 为matplotlib设置不同的主题
- 模式利器 | MEIC污染源清单向WRF-Chem模式网格插值分配工具——meic2wrf
- Windows给力!可以扔掉Linux虚拟机了!
- 好慌,Redis这么多集群方案,要用哪种?
- 你真的了解MySQL 8.0 数据字典吗?
- 《调教命令行09》磁盘很廉价,放小电影最合适了
- 既保护隐私又快速训练,Facebook开源Opacus库,利用差分隐私训练PyTorch模型
- 为什么Java中1000==1000为false而100==100为true?
- Java自动化测试 (元素定位 23)
- Java自动化测试(webdriver常用API 24)
- Java自动化测试(特殊元素处理 25)
- 那些Vue开发遇到的坑---响应式系统
- 基于Ansible和Devops的一键测试环境部署实践
- STM32硬核DIY机械键盘|蓝牙USB双模|灯控