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配置目录下存在两份.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!