linux定时任务 crontab和shell脚本

crontab命令:

参  数: 
-e  编辑该用户的计时器设置。 
-l  列出该用户的计时器设置。 
-r  删除该用户的计时器设置。

 需要注意的是crontab里的cron表达式并不是标准的,它有自己的格式

*    *    *    *    *    command
M    H    D    m    d    command
分   时   日   月   周   命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令或脚本内容
图片中是每5分钟运行一次 *.sh脚本 ,脚本里是sql命令: mysql -uroot -p'xxx' 库名 -e "sql语句"
crontab不能设置秒级运行,如果需要每隔5秒运行一次,可以将*.sh写成每5秒执行一次cleanSignStatus.sh的shell脚本.
比如 crontab -e:标记定时任务:***** command sh xxx/crontab.sh
crontab.sh内容:

#!/bin/bash

step=1 #间隔的秒数,不能大于60

for (( i = 0; i < 60; i=(i+step) )); do
$(sh /home/hap1/cleanSignStatus.sh)
sleep $step
done

exit 0

crontab.sh需要有可执行权限
写一个启动java的脚本文件startup.sh(这个脚本文件要和启动jar包放到同一目录下):

#!/bin/bash
nohup java -Xms1024M -Xmx1024M -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/javaapp/eMeeting-uat/file-upload/dump -jar file-upload-0.0.1-SNAPSHOT.jar >/dev/null 2>&1 &

/dev/null:表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,不显示任何信息。

2>&1:表示标准错误输出重定向等同于标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。

这条命令的意思就是在后台执行这个程序,并将错误输出2重定向到标准输出1,然后将标准输出1全部放到/dev/null文件,也就是清空.

所以可以看出" >/dev/null 2>&1 "常用来避免shell命令或者程序等运行中有内容输出。

如果不加>/dev/null 2>&1 ,输出内容会在nohup.out里,加上后不会输出到nohup.out,如果项目中有logback-spring.xml等配置文件,则会按配置文件配置的目录保存输出内容,如果启动命令没有>/dev/null 2>&1并且项目用了logback-spring.xml,那输出日志会在nohup.out和logback配置目录下存在两份.

posted @   杨吃羊  阅读(176)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示