crontab定时器执行.sh脚本

CentOS 7下crontab定时执行Shell脚本实战 在运维与开发工作中,定时任务是最基础的自动化手段之一,用于处理日志清理、数据备份、进程守护等周期性操作。crontab作为Linux系统内置的调度工具,凭借轻量、稳定、无需常驻进程等特点,成为单机定时任务的首选方案。理解cron表达式的时间规则,掌握编写健壮Shell脚本的方法,并配合日志输出、锁机制、随机延迟等进阶技巧,能够大幅提升系统的自动化运维效率。无论是每天凌晨的数据库归档,还是每周的日志清理,crontab都能精准触发。本文以CentOS 7环境为例,系统讲解从脚本编写、crontab配置到任务验 阅读详情

Linux 的crontab,执行shell脚本的时候,异常问题整理

整理的原因是:crontab测试真的太耗费时间了!

一、crontab中的脚本不执行,单独执行shell脚本没问题,放crontab中不行

28 15 * * * sh -bx sqoop_startAll.sh create all 2>&1 >> /home/user/sh_starts/logs/sqoop_upload_`date +\%Y\%m\%d`.log

原因是shell脚本需要全路径,这种情况比较好发现并处理。

 

二、crontab中的shell脚本执行了,但是脚本中的脚本没有执行,shell嵌套脚本及脚本调用脚本的情况

#!/bin/bash
## sqoop 读取数据库
echo "sqoop job 执行开始时间: `date '+%Y-%m-%d %H:%M:%S'`"

path=$(cd `dirname $0`;pwd) #获取文件路径
dir=`dirname $path` #获取文件的上一级路径

#不创建job,增量导入,数据库地址没有修改
   [ "$1" = "create" ]; then
        # 删除原来的job
        echo "sqoop job 删除原来job脚本"
        sh $path/sqoopjob_delete.sh 2>&1 | tee -ai /home/user/sh_starts/logs/sqoop_upload_`date +\%Y\%m\%d`.log
        sleep 1s

        #删除原来的表及表数据
        echo "drop sqoop job table 删除原来的表及表数据"
        sh $path/sqoopjob_dropTables.sh 2>&1 | tee -ai /home/user/sh_starts/logs/sqoop_upload_`date +\%Y\%m\%d`.log

        # 创建job
        echo "sqoop 创建新 job "
        sh $path/sqoopjob_create_columns.sh 2>&1 | tee -ai /home/huser/sh_starts/logs/sqoop_upload_`date +\%Y\%m\%d`.log
        sleep 2s
fi

# job执行
echo "sqoop job 执行:$path/sqoopjob_exec.sh"
sh $path/sqoopjob_exec.sh 2>&1 | tee -ai /home/huser/sh_starts/logs/rtdata-sqoop_upload_`date +\%Y\%m\%d`.log
sleep 1s

echo "sqoop job 执行结束时间: `date '+%Y-%m-%d %H:%M:%S'`"

上面文件中的脚本没有执行,原因是各个脚本中的环境变量没有读取到,需要在每个shell脚本中增加设置:

. /etc/profile
. ~/.bash_profile

例如:

#!/bin/bash
#删除sqoop job 的表 drop table
. /etc/profile
. ~/.bash_profile
  
#获取job相关表名称
dir=/home/user/phaseOne
tablesName=`sh $dir/test0703/get_tablesName.sh`

for i in $tablesName
do
        echo "drop table $i;" >>aa.txt
done

tables=`cat aa.txt`
hive -e "use rt1;$tables" 2>&1 | tee -ai /home/user/sh_starts/logs/sqoop_upload_`date +\%Y\%m\%d`.log

rm -f aa.txt

注意:每一步shell执行脚本都需要增加日志记录,否则查找异常就会很困难,而且报错具体是哪层调用的报错也很难找出来。

 

三、crontab注意点:

Linux下计划任务的crontab命令以及无法执行shell脚本的原因 背景 在上午探索了Windows下时间任务创建运行的可视化界面和Schtasks命令行工具且默默失败后,下午我决定不依不饶地去看一下Linux系统下是怎么创建时间任务的。其实我Linux接触得不多,而且今天也是新接触的crontab命令,所以不免会踩坑踩雷,但是最后还是解决了问题,于是噫吁嚱记录一下。 这里我主要想试验一下这个功能,在我的test.py文件里是一个简单的python命令,里面主要... 阅读详情

相关推荐

Linux 系统 Crontab 定时执行 Shell 脚本常用命令及注意事项

Linux 系统 Crontab 定时执行 Shell 脚本常用命令及注意事项Crontab 是 Linux 下的一个工具,它能够让用户根据一定的时间周期去执行指定的任务或命令。使用 Crontab 定时执行 Shell 脚本是常见的需求,下面介绍一些常用的命令以及需要注意的事项。

与其临渊羡鱼,不如退而结网 2186

linux定时任务(crontab)启动sh脚本

linux定时任务

weixin_45753881的博客 6346

Ubuntu crontab 遇到的sh脚本一些问题(手动执行可以,自动执行不行)

在写一个脚本循环时候,出现“let:not found”,这是因为在ubuntu默认是指向bin/dash解释器的,dash是阉割版的bash,其功能远没有bash强大和丰富.并且dash不支持let和i++等功能.,放到crontab -e的文本中,获取环境变量。重启系统日志,然后稍微等下应该就能在/var/log目录下看到cron.log,vi cron.log就可以查看cron运行日志了。打开文件,在文件中找到cron.*,把前面的#去掉,保存退出,输入。以下是crontab -e代码。

专注基础架构领域 2078

采用crontab定时任务执行脚本.sh时遇到问题和解决方法

1、脚本有问题,2、脚本未赋执行权限,3、环境变量问题,4、编辑的时间不对,5、系统时间不对。在CentOS 7中是5个时间,还有很多系统没有实现符号L和问号?,使用会报错避免使用。出现过你上面编辑过的脚本名称的话,就是定时任务已执行。那么首先手工执行下脚本看是否有问题,确保脚本没问题。当然还有其它办法,详情请参阅文后参考文章。如果脚本没问题,剩下最大可能是。,需要在脚本开头加上以下这几句。第一个是crond是否已启用。第二个是设置的时间是否正确。

Leckun的专栏 4126

RV1126开发板性能实测:网络、温度与功耗全解析

本文对RV1126开发板进行了全面的性能实测,重点分析了网络性能、温度表现与功耗特性。测试发现UDP带宽可达500Mbps,但TCP性能受限于协议栈;散热设计对持续性能至关重要,大板子在AI推理和视频推流中表现更稳定。为嵌入式开发者提供了真实的选型参考和优化建议。

d3e4f的博客 270

3dsMax高效导入OSGB倾斜模型的3个关键步骤与插件应用

本文详细解析了在3dsMax中高效导入OSGB倾斜模型的三个核心步骤:建立索引、处理贴图路径以及选择合适的插件。针对导入过程中常见的模型崩溃、贴图丢失和操作卡顿问题,提供了从数据结构理解到插件选型的实战解决方案,帮助用户实现大规模实景模型在3dsMax中的流畅导入与编辑。

weixin_29238147的博客 471

mysql 定时器 执行完成后再次执行_mysql数据自动备份

(1)创建脚本创建名为mysqlbak.sh的脚本,脚本内容如下#!/bin/bash #数据库IP dbserver='192.168.26.1' #数据库用户名 dbuser='root' #数据密码 dbpasswd='root' #数据库,如有多个库用空格分开 dbname='zhjsc' #备份时间 backtime=`date +%Y%m%d` #备份输出日志路径 logpath='/...

weixin_39827306的博客 201

【软碟通 | UltraISO】刻录光盘教程(制作U盘启动盘)

前言 今天老师说办公室的电脑有点卡,让我给重新安装一个 Windows 7 系统。于是就用软碟通(UltraISO)在 U 盘上刻录了一个 Windows 7 镜像,然后给老师重装了系统。顺便把制作 U 盘启动盘的教程也分享给大家。 软件 UltraISO v9.7.1.3519:点击跳转(密码:dd2k) 教程 将 U 盘插到电脑上,然后鼠标右击选择格式化(制作启动盘必须格式化) 点击文件-打开 选择下载好的系统镜像(如:Windows 7) 点击启动-写入硬盘映像 选择硬盘

XavierJ的博客 2万+

linux上java -jar方式运行项目及输出文件nohup.out的清理, linux上定时器的用法

linux上java -jar方式运行项目及输出文件nohup.out的清理, linux上定时器的用法

老照片 1698

足球大数据分析入门:从赔率到预测的完整流程(附数据集)

本文提供了一份足球大数据分析的完整实战指南,涵盖从数据采集、清洗、特征工程到模型构建与评估的全流程。文章详细介绍了如何利用公开数据集与API获取数据,并通过逻辑回归、随机森林等模型进行比赛结果预测,最后强调了模型评估与策略回测的重要性,帮助读者构建自己的分析框架。

r7s8t的博客 408

RepHead一种重参数化检测头用于提升YOLOv8在困难样本上的检测性能

在目标检测任务中,困难样本通常是指那些由于特殊背景、遮挡、低分辨率或极度小物体等因素,导致模型难以识别的样本。这类样本对传统YOLO系列模型的影响较大,常常造成漏检或误检。重参数化(Reparameterization)是一种深度学习中常用的技术,旨在通过对网络参数的变换,使得模型在训练过程中能够更加灵活地适应不同的数据特征。通过对原始网络结构的参数进行重新表达,能够引导模型在训练过程中学习到更加有效的特征。本文详细介绍了YOLOv8的改进——RepHead检测头,并深入分析了它在解决困难样本检测中的应用。

博客 1210

Linux系统设置Postgresql数据库定时自动备份

文件后缀为.sh 如:(db_backup.sh)

O_ODD的博客 667

第二节:Vben Admin 最新 v5.0 (vben5) + Python Flask 快速入门 - Python Flask 后端开发详解(附源码)

大家好,我是cuiwin!本节内容,我们从零开始开发基于Python(Flask)的后端项目,对接Vue Vben Admin(vben5)。登录mysql数据库执行: 创建数据库。

cuiwin的专栏 2268

Linux中使用定时任务来发送get或post请求

linux中使用定时任务来发送get或post请求

adminstate的博客 1062

NR PUCCH(二)PUCCH format 2/3/4

继续看PUCCH2/3/4:PUCCH format 0和1所携带的信息bits少,UCI bits2bits,信息bit需要经过编码等过程下面分别来看。

ModemProtocol的博客 539

深度学习实战35-图卷积神经网络GCN模型的搭建与应用

大家好,我是微学AI,今天给大家介绍一下深度学习实战35-图卷积神经网络GCN模型的搭建与应用,GCN是一种用于处理图结构数据的深度学习模型,它可以捕捉节点之间的拓扑关系和局部特征,并进行图级别的预测和分类任务。下面将介绍如何搭建并应用GCN模型。

微学AI的博客 2226

crontab 脚本无法执行问题

如果我们使用 crontab 来定时执行脚本,无法执行,但是如果直接通过命令(如:./test.sh)又可以正常执行,这主要是因为无法读取环境变量的原因。 解决方法: 1、所有命令需要写成绝对路径形式,如:/usr/local/bin/docker。 2、在 shell 脚本开头使用以下代码: #!/bin/sh . /etc/profile . ~/.bash_profile 3、在/etc/crontab中添加环境变量,在可执行命令之前添加命令. /etc/profile;/...

eli的博客 2595

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

crontab shell 每5秒执行_Crontab 让linux定时执行shell脚本

我之所以用它,是因为最近做在做一个个人项目,每天都会推送新的图片,而客户端每天都是安装当前时间来获取该图片的。 而如果我再没有最新的图片推送时,会把以昨天时间作为名称的图片定时修改为最新日期的名称,这样保证每天都能拿到图片;当然另一种方式是客户端缓存图片,但是如果缓存或者文件夹被清掉了,完了,你使用的图片就是异步加载框架指定的加载失败时显示的图片,体验不是很好。 当然啦!~你或许有很多办法避免,...

weixin_39810196的博客 277

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

linux 定时执行shell 脚本

our_sky的博客 783

shell脚本直接执行没有问题,crontab定时执行失败的解决方法

在实行一个shell脚本(调用java程序修改一个excel文件)时,单独sh可以得到想要的结果。 但是放到crontab定时执行后,却没有得到一个新的excel文件,log也没有报错。 查看了路径,文件权限都没有问题,最后在网上查了一下,发现这样可以解决问题: 将crontab执行的语句进行修改:   15 11 * * * /home/loganalysis/dealexcel.sh

JkunZhang的专栏 3万+

关于centos指定用户定时执行脚本的配置

目的:开机定时通过用户appyw(两台机器上的appyw用户已做ssh互信)定时每5分钟执行一次文件copy的脚本; 操作: 1. 使用root账户登录到linxa(linxa、linxb为上述ssh互信的两台机器的主机名)机器上,配置定时任务,创建文件拷贝的脚本file-copy.sh; [root@linxa~] cd /opt [root@linxa~] vi file-co...

feishahui的专栏 835

Linux定时清理日志(sh脚本+ crontab定时器)

在应用疯狂打日志的情况下,服务器很容易被塞满磁盘。可以写一个shell脚本, 再加上crontab定时器, 达到定期清理日志文件的目的, 防止日志文件占用过多磁盘空间...

宅狗程序猿 9669

crontab 每天凌晨12点定时器_crontab命令定时备份执行脚本

一、tar 命令备份参数:-c: 建立压缩档案、-z:有gzip属性的、-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名有三个文件我们将当前目录下的文件全部打包利用date生成特定文件名称tar -czf log-`date +%Y%m%d`.tar.gz ./二、crontab我们先查看下命令crontab命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存...

weixin_39950083的博客 1万+

Linux中利用crontab定时器来完成脚本的执行

1.crontab指令的使用: 使用crontab你可以在指定的时间执行一个shell脚本或者一系列Linux命令。例如系统管理员安排一个备份任务使其每天都运行 如何往 cron 中添加一个作业? # crontab –e 0 5 * * * /root/bin/backup.sh 这将会在每天早上5点运行 /root/bin/backup.sh Cron 各项的描述 以下是 cron...

qq_735311015的博客 211

Linux定时器:crontab

Linux定时器:crontab (随笔) #进入定时器任务页面。就像使用vi进入文本一样操作。 crontab -e #每三分钟执行一次脚本 0 */3 * * * /home/script/test.sh #每天12点也就是中午十二点运行脚本(此脚本必须具有执行命令:chmod +x /home/script/test_two.sh) 00 12 * * * /home/script/tes...

ly8951677的博客 1280

crontab shell 每5秒执行_定时启动Shell脚本

一.定时器crontab 命令允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个crontab 文件来保存调度信息。可以使用它运行任意一个shell脚本或某个命令。二.crontab命令1.作用:用于生成cron进程所需要的crontab文件2.crontab的命令格式# crontab -e 3.使用编辑器编辑当前的crontab文件。4.crontab文件格式minute hour d...

weixin_29230901的博客 1094
上一篇: shell 查看文件命令
下一篇: sqoop 报错Could not register mbeans java.security.AccessControlException: access denied (“javax.manage
lcl_bigdata
博客等级 码龄11年 268粉丝 67原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值