aix系统crontab不会自动执行的处理
crontab定时任务不执行的一些原因总结

crontab定时任务不执⾏的⼀些原因总结前⾔最近在⼯作中遇到了⼀些问题,crontab定时任务居然不执⾏,后来我在⽹上找的时候发现⽹上主要说了这5个原因:1 crond服务未启动crontab不是Linux内核的功能,⽽是依赖⼀个crond服务,这个服务可以启动当然也可以停⽌。
如果停⽌了就⽆法执⾏任何定时任务了,解决的⽅法是打开它:crond或service crond start如果提⽰crond命令不存在,可能被误删除了,CentOS下可以通过这个命令重新安装:yum -y install crontabs2 权限问题⽐如:脚本没有x执⾏权限,解决⽅法:增加执⾏权限,或者⽤bash abc.sh的⽅法执⾏也有可能crontab任务所属的⽤户对某个⽬录没有写权限,也会失败3 路径问题有的命令在shell中执⾏正常,但是在crontab执⾏却总是失败。
有可能是因为crontab使⽤的sh未正确识别路径,⽐如:以root ⾝份登录shell后执⾏⼀个/root/test.sh,只要执⾏./test.sh就可以了。
但是在crontab中,就会找不到这个脚本,⽐如写完整:/root/test.sh4 时差问题因为服务器与客户端时差问题,所以crontab的时间以服务器时间为准。
时差这个问题还真是搞⼈,这个我亲⾝体验了,现象如下:(1) 我设置了⼀个定时脚本,⽤date命令观察服务器的时间到了脚本执⾏的时间点,发现没有执⾏(2) 但是我把脚本设置成每分钟执⾏⼀次,就是OK的见⿁了,服务器时间是对的啊?莫⾮是要加个什么时区?于是把脚本的时间减10或者12或者8个⼩时都尝试了下,发现都不⾏。
但是很明显是时间不⼀致导致的不执⾏。
最后⽤如下两⾏解决了问题:cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeservice crond restart5 变量问题有时候命令中含有变量,但crontab执⾏时却没有,也会造成执⾏失败。
Linux定时任务crontab无法执行

Linux定时任务crontab⽆法执⾏今天碰到了个诡异的问题,⾃⼰写的Python脚本,⼿⼯可以执⾏,放在定时任务crontab中,却⽆法执⾏,下⾯讲述了解决过程。
1、⾸先看crontab的进程是否启动:/sbin/service crond status ,有Active: active (running) 字样,表明运⾏正常2、使⽤需要执⾏定时任务的⽤户登录,执⾏命令:crontab -l,查看当前⽤户的crontab⽂件内容(或者直接在root⽤户执⾏:crontab -u trnuser -l ,其中trnuser为⽤户名),发现⼀切正常。
曾经出现过⽤户密码过期的情况,会提⽰:You are not allowed to access to (crontab) because of pam configuration. 这个是⽤户密码过期了。
3、看脚本⾥⾯,有没有相对路径,以免脚本⽆法找到路径⽽不去执⾏。
于是⼿⼯执⾏下⾃⼰的命令,发现也正常。
4、检查crond是否被限制:cat /etc/cron.deny,⽂件为空,正常。
5、检查crond的⽇志:tail -f /var/log/cron,发现⾥⾯提⽰:Jul 28 10:59:01 dcr-app001 crond[26294]: (trnuser) BAD FILE MODE(/var/spool/cron/trnuser) ,初步判断或许是⽂件权限的原因,查看其权限,发现给的权限是774-rwxrwxr-- 1 trnuser trnuser 435 Jul 26 20:59 trnuser对⽐了root和其他⽤户的权限,发现这个权限太⼤了,修改为644解决通过这个问题,找到了解决crontab不能⽤的办法:查看⽇志:/var/log/cron,根据⽇志提⽰逐步解决。
分享一次Linux任务计划crontab不执行的问题排查过程

分享⼀次Linux任务计划crontab不执⾏的问题排查过程朋友弄了⼀个⼩项⽬,要我帮忙做下 Linux 系统运维,上线⼀段时间后,发现项⽬偶尔会挂掉导致服务不可⽤。
开发朋友⼀时之间也没空去研究项⽬奔溃的根因,只好由我这个运维先写⼀个项⽬进程⾃拉起脚本,通过 Linux 任务计划每分钟检查⼀下进程是否存在来避免项⽬挂了没⼈管的情况。
⾃拉起脚本很简单,随便写⼏⾏就搞定了:Shell1 2 3 4 5 6 7 8 9 10#!/bin/bashprocesscount=$(pgrep my_app|wc -l)cd $(cd $(dirname $0) && pwd)if [[ 0 -eq $processcount ]]thenecho "[ $(date) ] : my_app is down, start it!" | tee -ai ./checkprocess.log bash ./start.sh #这⾥是项⽬的重启脚本elseecho my_app is OK!fi然后丢到 crontab,1 分钟执⾏⼀次:Shell1* * * * * bash /data/app_server/checkprocess.sh >/dev/null 2>&1本以为万事⼤吉了,结果还是坑了,进程再⼀次挂了,尼玛什么⿁?⼀、检查⽇志根据经验,先看⼀下 crontab 的⽇志:tail /var/log/messages没发现相关⽇志,看来不是打印到了这,于是查看了下 crontab 的默认⽇志位置:tail /var/log/cronShell1 2 3 4Mar 25 21:40:01 li733-135 CROND[1959]: (root) CMD (sh /data/app_server/checkprocess.sh >/dev/null 2>&1) Mar 25 21:40:01 li733-135 CROND[1960]: (root) CMD (/usr/lib64/sa/sa1 1 1)Mar 25 21:40:01 li733-135 CROND[1961]: (root) CMD (/usr/sbin/ntpdate > /dev/null 2>&1)Mar 25 21:41:01 li733-135 CROND[2066]: (root) CMD (sh /data/app_server/checkprocess.sh >/dev/null 2>&1)很明显,任务计划确实在正常执⾏着,看来问题在脚本上了。
高级技巧使用crontab进行任务调度与周期执行

高级技巧使用crontab进行任务调度与周期执行在计算机系统中,任务调度和周期执行对于实现定时任务和自动化操作至关重要。
而crontab是一种在Linux和Unix系统中常用的任务调度工具,它允许用户按照特定的时间间隔来执行命令或脚本。
本文将介绍一些高级技巧,以帮助您更好地使用crontab进行任务调度和周期执行。
一、定时任务调度1. 使用crontab命令进行任务调度Crontab命令允许用户创建、修改和删除crontab表达式,从而实现任务调度。
通过以下命令,您可以编辑当前用户的crontab表:```crontab -e```在打开的编辑器中,您可以按照以下格式添加任务:```* * * * * command_to_be_executed```其中,*代表通配符,分别表示分钟、小时、日期、月份和星期几。
您可以使用具体数值或通配符来设置执行时间。
例如,如果您想每天上午9点执行一次任务,可以这样配置:```0 9 * * * command_to_be_executed```执行时间支持多种设定方式,您可以根据需要选择适合的设定。
2. 编写shell脚本在crontab中执行的命令通常是一个shell脚本。
编写脚本可以使任务执行更加灵活,且便于管理。
您可以使用任何文本编辑器编写脚本文件,以.sh为后缀保存。
例如,创建一个名为my_script.sh的脚本文件,内容如下:```#!/bin/bash# 执行命令或操作command_to_be_executed```注意,在脚本文件的开头添加了`#!/bin/bash`说明文件采用Bash Shell进行解释。
然后,将脚本文件保存到指定的位置,并在crontab中指定该脚本的执行。
3. 使用环境变量和输出重定向在crontab中执行的任务通常没有终端的环境变量,可能会导致一些命令无法正常执行或输出结果无法保存。
为了解决这个问题,您可以在脚本中添加环境变量的设置,并使用输出重定向保存命令的输出结果。
高级技巧使用crontab进行任务调度与定时执行

高级技巧使用crontab进行任务调度与定时执行Crontab是一个在Unix和类Unix系统下用来定期执行任务的工具。
通过配置crontab,可以实现自动化定时执行各种任务,如备份文件、生成报表等。
本文将介绍使用crontab进行任务调度与定时执行的高级技巧。
一、理解CrontabCrontab是Unix系统下的一个命令,用于执行定时任务。
每个用户都可以创建自己的crontab文件,用来定义需要在特定时间执行的任务。
Crontab文件通常存储在以下位置:```shell/var/spool/cron/crontabs/ # 系统全局crontab文件/var/spool/cron/username # 用户特定的crontab文件```Crontab文件的格式如下:```分钟小时日期月份星期命令```其中,分钟、小时、日期、月份和星期都可以使用特定的数值或通配符表示。
例如,`*`表示每个取值范围内的所有数值,`*/2`表示每隔两个数值。
二、常用的Crontab任务调度方式1. 执行每小时任务要在每小时的固定分钟执行任务,可以在crontab文件中添加以下行:```0 * * * * command```其中,`0`表示每小时的0分钟。
2. 执行每天任务要在每天的固定小时和分钟执行任务,可以在crontab文件中添加以下行:```30 9 * * * command```其中,`30 9`表示每天的9点30分执行。
3. 执行每周任务要在每周的固定天和时间执行任务,可以在crontab文件中添加以下行:```0 0 * * 5 command```其中,`5`表示每周的星期五执行任务。
4. 执行每月任务要在每月的固定日期和时间执行任务,可以在crontab文件中添加以下行:```0 0 1 * * command```其中,`1`表示每月的1号执行任务。
三、增加任务执行日志为了方便查看任务的执行情况,可以将任务执行日志保存在指定文件中。
crontab介绍+小示例+crontab不执行的原因

crontab介绍+小示例+crontab不执行的原因转自:/ustcgy/article/details/5275096crontab 用来任务定时调度,在Linux 下可以通过创建文件/etc/cron.allow 或者 /etc/cron.deny来控制权限,如果 /etc/cron.allow 文件存在,那么只有这个文件中列出的用户可以使用 cron,同时/etc/cron.deny文件被忽略;如果/etc/cron.allow 文件不存在,那么文件 /cron.deny 中列出的用户将不能用使用 cron。
下面简单演示下限制用户使用 crontab 命令的情况。
--1 修改文件 /etc/cron.deny[root@pgb etc]# ll /etc/cron.deny-rw-r--r-- 1 root root 10 Feb 12 21:52 /etc/cron.deny备注:添加要限制的用户,只需要写入用户名即可。
--2 /etc/cron.deny 文件内容[root@pgb etc]# cat /etc/cron.denypostgres--3 重启 crond 服务[root@pgb cron]# service crond statuscrond (pid 3834) is running...[root@pgb etc]# service crond restartStopping crond: [ OK ]Starting crond: [ OK ]--4 切换到 postgres 用户测试[root@pgb ~]# su - postgres[postgres@pgb ~]$ crontab -lYou (postgres) are not allowed to use this program (crontab) See crontab(1) for more information备注:切换到 postgres 用户后,就不能使用 crontab 命令了。
crontab环境变量的使用方法

crontab环境变量的使⽤⽅法环境:(产品,平台,机型,软件版本,等)AIX5L问题描述:crontab中启动的shell脚本不能正常运⾏,但是使⽤⼿动执⾏没有问题,在$home/.profile中设定了脚本所需要的环境变量。
解答:cron命令的默认shell是/usr/bin/bsh,如果要在cron启动的脚本中使⽤ksh,就必须在脚本中的第⼀⾏添加“#!/usr/bin/ksh”的声明。
如果cron进程启动的shell脚本要⽤登录时的环境变量,就必须在cron启动的shell脚本中添加下⾯的内容,才能够在启动的脚本中使⽤$home/.profile⽂件中的环境变量。
.$home/.profile这是因为cron进程执⾏的shell脚本是不会⾃动加载⽤户⽬录下的.profile⽂件,所以需要脚本⾃⼰加载所需要的环境变量。
================环境变量⽂件加载顺序/etc/profile: 此⽂件为系统的每个⽤户设置环境信息,当⽤户第⼀次登录时,该⽂件被执⾏.并从/etc/profile.d⽬录的配置⽂件中搜集shell的设置./etc/bashrc: 为每⼀个运⾏bash shell的⽤户执⾏此⽂件.当bash shell被打开时,该⽂件被读取.~/.bash_profile: 每个⽤户都可使⽤该⽂件输⼊专⽤于⾃⼰使⽤的shell信息,当⽤户登录时,该⽂件仅仅执⾏⼀次!默认情况下,他设置⼀些环境变量,执⾏⽤户的.bashrc⽂件.~/.bashrc: 该⽂件包含专⽤于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该⽂件被读取.~/.bash_logout: 当每次退出系统(退出bash shell)时,执⾏该⽂件.另外,/etc/profile中设定的变量(全局)的可以作⽤于任何⽤户,⽽~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"⽗⼦"关系.~/.bash_profile 是交互式、login ⽅式进⼊ bash 运⾏的~/.bashrc 是交互式 non-login ⽅式进⼊ bash 运⾏的通常⼆者设置⼤致相同,所以通常前者会调⽤后者。
crontab定时任务不执行的原因

crontab定时任务不执⾏的原因1、重启crontab若是遇见“You (cloudlogin) are not allowed to use this program (crontab)See crontab(1) for more information ”则切换到root⽤户,再使⽤命令#crontab -u ⽤户名命令然后再重启2、若是做完了crontab -e添加完任务,并且任务也存在,但是却没有按照任务指定时间执⾏,则检查1)查看⽇志⽇志⽂件位置默认情况下,crontab中执⾏的⽇志写在/var/log下,如:crontab的⽇志⽐较简单,当crond执⾏任务失败时会给⽤户发⼀封邮件。
恰巧在我们的⼀台服务器上发现⼀个任务没有正常执⾏,⽽且crond发邮件也失败了。
通过看mail的⽇志,看到是磁盘空间不⾜造成的。
2)查看crontab 是否启动成功,检测crontab 服务是否启动,/etc/init.d/crond status 没启动则要⽤下⾯命令/etc/init.d/crond start3)查看命令中操作的⽂件是否存在,当前⽤户是否有操作该⽂件的权限我这⾥⽤的是cloudlogin⽤户设置查看命令中操作的⽂件是否存在,并且当前⽤户是否有操作该⽂件的权限若是没有则要赋予权限或者更换⽤户(请参看⽂章进⾏配置)4)若不是上⾯原因,则重启下crond服务,命令为使⽤ /etc/init.d/crond restart或者service crond restart(Centos7下为systemctl restart crond)注意:配置完后都需要重启下crontab使之⽣效。
aix crontab 语法

aix crontab 语法AIX Crontab语法Crontab是一种用于在Unix和Linux系统上定期运行命令或脚本的工具。
在AIX系统上,Crontab也是一种非常有用的工具,可以帮助用户自动化任务,提高工作效率。
本文将介绍AIX Crontab语法,帮助用户更好地使用这个工具。
Crontab语法Crontab语法由五个字段组成,分别是分钟、小时、日期、月份和星期。
每个字段都有一些特定的值,用于指定任务运行的时间。
下面是AIX Crontab语法的详细说明:分钟:0-59小时:0-23日期:1-31月份:1-12星期:0-7(0和7都表示星期日)在每个字段中,可以使用逗号分隔多个值,表示任务将在这些值对应的时间运行。
例如,如果要在每天的上午9点和下午5点运行任务,可以在小时字段中输入“9,17”。
还可以使用“*”符号来表示所有可能的值。
例如,如果要在每小时的第10分钟运行任务,可以在分钟字段中输入“10”。
还可以使用“/”符号来表示间隔。
例如,如果要每隔5分钟运行一次任务,可以在分钟字段中输入“*/5”。
还可以使用“-”符号来表示范围。
例如,如果要在每个月的1号到10号之间运行任务,可以在日期字段中输入“1-10”。
示例下面是一些示例,演示如何使用AIX Crontab语法:1. 在每天的上午9点和下午5点运行任务:0 9,17 * * * command2. 每隔5分钟运行一次任务:*/5 * * * * command3. 在每个月的1号到10号之间运行任务:0 0 1-10 * * command4. 在每个星期日的上午10点运行任务:0 10 * * 0 command总结AIX Crontab语法是一种非常有用的工具,可以帮助用户自动化任务,提高工作效率。
本文介绍了AIX Crontab语法的详细说明和示例,希望能够帮助用户更好地使用这个工具。
AIX 里的crontab如何使用

AIX 里的crontab如何使用crontab命令用途提交、编辑、列出或除去cron 作业。
语法crontab [ -e [UserName] | -l [UserName] | -r [UserName] | -v [UserName] | File ]描述这个crontab 命令提交、编辑、列出或除去cron 作业。
一个cron 作业是一个命令,其运行是由cron 守护进程在规则的调度间隔执行的。
要提交一个cron 作业,指定crontab 命令用-e 标志。
crontab 命令调用一个编辑会话,允许创建一个crontab 文件。
在这个文件中,为每个cron 创建条目。
每个条目必须是一种cron 守护进程可接受的格式。
要得到创建条目的信息,参阅crontab 文件条目格式。
当创建完条目和退出文件后,crontab 命令将它拷贝到/var/spool/cron/crontabs 目录,并把它放到一个文件中,此文件的名称是当前的用户名。
如果以用户名命名的文件已存在于crontabs 目录中,crontab 命令会覆盖它。
同样的,可以通过指定文件参数创建crontab 文件。
如果此文件已经存在,格式必须是cron 守护进程所需要的。
如果文件不存在,crontab 命令就调用编辑器。
如果EDITOR 环境变量存在,此命令就调用它指定的编辑器。
否则,crontab 命令调用vi 编辑器。
要列出crontab 文件的内容,就指定crontab 命令并采用-l 标志。
要除去存在的文件,采用-r 标志。
可选的UserName 参数可被crontab 文件的所有者或者root 用户来使用,为指定的用户编辑、列出、除去或验证cron 作业的状态。
如果UserName 是无效的,就会产生错误消息并退出程序。
如果可选的UserName 参数没有被指定,这个crontab 标志对于root 用户和当前用户可用。
安全性只有root 用户和crontab 文件的所有者可以在-e、-l、-r 和-v 标志后面使用UserName 以编辑、列出、除去或验证指定用户的crontab 文件。
linux中crontab不生效的处理

linux中crontab不⽣效的处理
⼀、问题描述
定时任务在命令⾏直接执⾏可以正确执⾏,但是加⼊定时任务之后没有执⾏结果
⼆、排查过程
原定时任务填写⽅式:
vi /etc/crontab
* * * * * root /opt/demo.sh
1、已经是填写绝对路径
2、查看corn执⾏⽇志,等待查看打出的⽇志有⽆正确执⾏所填写的任务
tail -f /var/log/cron
此处我查看⽇志,是已经正确执⾏了,如果没有,查看报错,对应解决
3、已经正确执⾏了任务,是否因为脚本的环境变量问题,所以在要执⾏的脚本中开头添加:
#!/bin/bash
source /etc/profile
4、若果还是不⾏,修改定时任务填写⽅式,⼿动切换到脚本路径之后再执⾏脚本
* * * * * root cd /opt/ && /bin/sh demo.sh。
Linux中crontab定时任务不执行的原因

Linux中crontab定时任务不执⾏的原因最近在linux中遇到了个crontab定时任务不执⾏的case,在这给⼤家分享⼀下,避免踩到我遇到的坑。
先贴脚本吧为了⽅便展⽰,把脚本⼊参,都写死了#!/usr/bin/env bash# 1输出⽂件,到log 例如: bg# 2 ⽬标⽂件⽬录 不带最后的/ 例如:/opt/flume/home/hdp_lbg_ectech/rawdata/xxx/web_vip_bg# 3 执⾏的时候选择前⼏天的⽇志例如:1LAST_DAY=$(date +"%Y-%m-%d" -d "1 days ago")LAST_HOUR_DAY=$(date +"%Y%m%d" -d "1 days ago")#执⾏jar获取bg⽇志java -jar /opt/script/xxx/vipbg/vip-bg-job-1.0-SNAPSHOT-shaded.jar /opt/script/xxx/vipbg/bg.log#具体到⽂件名SRC_FILE=/opt/script/xxx/vipbg/bg.log#指定⽬标⽬录,按⽇期创建⽬录DEST_DIR_NAME=/opt/flume/home/hdp_lbg_ectech/rawdata/xxx/web_vip_bg/$LAST_HOUR_DAYDEST_FILE_NAME=$(basename $SRC_FILE)#FLUME会忽略隐藏⽂件,所以可直接拷贝过去TMP_FILE=$DEST_DIR_NAME/.$DEST_FILE_NAMEDEST_FILE=$DEST_DIR_NAME/$DEST_FILE_NAME.$SRC_IP#判断源⽂件是否⾮空,空⽂件Flume会直接删除的,且⽬标⽂件不存在,避免重复拷贝数据if [ -s "$SRC_FILE" ] && [ ! -f "$DEST_FILE" ];then#使Flume具有删除该⽬录下⽂件的权限,不然FLUME收集不上去mkdir -p $DEST_DIR_NAME && chmod 777 $DEST_DIR_NAME#必须先cp到⼀个临时⽂件再mv过去,直接cp过去会造成数据丢失cp $SRC_FILE $TMP_FILE && mv $TMP_FILE $DEST_FILEfi#删除tmp中转⽂件rm -rf /opt/script/xxx/vipbg/bg.logecho "删除源⽂件成功"有些⽬录⽤了xxx代表这个脚本单独考出来可以执⾏,放到crontab⾥⾯就不执⾏了,百度了下,⼤多都说需要使⽤绝对路径,看了下我们的脚本,就是下⾯这句有问题:复制代码代码如下:java -jar /opt/script/xxx/vipbg/vip-bg-job-1.0-SNAPSHOT-shaded.jar /opt/script/xxx/vipbg/bg.log初步判断是java这需要使⽤jdk的⽬录路径,做了两个实验测试了下。
crontab任务执行不成功的检查步骤

crontab任务执行不成功的检查步骤crontab -e添加定时任务后,发现任务没有执行,而手动执行脚本可以成功,此时可以通过以下步骤进行排查:1,检查cron服务是不是在运行service crond status在运行的时候会看到crond is running…如cron不在运行启动服务Service cron start2,检查用户比如以apps用户登录,crontab -e添加的任务就会以apps用户执行那么检查用apps手动执行脚本是否可以成功;如果脚本要以root权限去执行,则切到root用户,crontab -e 加上任务或者直接sudo crontab -e添加任务可以检查日志/var/log/var 看到底是以什么用户去执行的,还可以看error信息3,不要用相对路径,尽量用绝对路径,脚本中先cd到指定路径下,再执行命令最保险,因为相对路径可能会和/etc/crontab中的路径会冲突4,检查系统时间是否为当前时间修改为当前时间date -s xx:xx:xx,再date检查一下修改是否成功修改不成功,关闭linux时间自动同步功能:service ntpd stop5,检查任务格式是否正确,一行代表一个任务,每行结束回车* * * * * command分钟小时日期月份星期0-59 0-23 1-31 1-12 0-7(0和7都代表周日)特殊字符意义:* 代表任何,代表分隔时段,0 10,20 * * * command 表示10点和20点都执行一次- 代表一个时间范围 20 8-10 * * * command 表示8点到10点的每个小时的20分钟都执行一次/n 代表每隔多长时间 /5 * * * * command 表示每隔5分钟执行一次。
linux系统用户下的crontab任务不执行问题处理

linux系统⽤户下的crontab任务不执⾏问题处理需求:需要每⼀天对数据库做⼀个备份,oracle数据库,linux系统。
备份命令采⽤最简单的导出\导⼊。
⾸先确认服务器是否开启任务计划服务,只有root⽤户才能对crond服务进⾏开启和关闭[root@enfo124 ~]# service crond statuscrond (pid 1758) is running...[root@enfo124 ~]# service crond stopStopping crond: [ OK ][root@enfo124 ~]# su - cognos[cognos@enfo124 ~]$ service crond statuscrond is stopped[cognos@enfo124 ~]$ su - root[root@enfo124 ~]# service crond startStarting crond: [ OK ][root@enfo124 ~]# service crond statuscrond (pid 2805) is running...[root@enfo124 ~]# su - cognos[cognos@enfo124 ~]$ service crond statuscrond (pid 2805) is running...最初sh⽂件内容为------------------------------------------------------------#!/bin/bashexpdp username directory=kettledb dumpfile=enforc_$(date +%Y%m%d%H%M).dmp logfile=enforc_$(date +%Y%m%d%H%M).log -----------------------------------------------------------⽂件名字与路径/home/oracle/bin/export_enforc.sh部署开始,切换⾄oralce⽤户,查看oracle⽤户的crontab 计划(crontab -l)。
crontab里的特殊符号%导致命令不能执行

crontab⾥的特殊符号%导致命令不能执⾏有群⾥的⼩伙伴说crontab⾥的任务不执⾏,具体是这样的*/1****/bin/date "+%Y-%m-%d %H:%M:%S" >>/data/tmp/test.log我试了下在命令⾏可以执⾏,定时任务确实不执⾏,于是去翻了下⽇志:#tail -f /var/spool/mail/rootX-Cron-Env: <HOME=/root>X-Cron-Env: <PATH=/usr/bin:/bin>X-Cron-Env: <LOGNAME=root>X-Cron-Env: <USER=root>Message-Id: <20200108081701.8FD502100481@D3L40.localdomain>Date: Wed, 8 Jan 202016:17:01+0800 (CST)/bin/sh: -c: line 0: unexpected EOF while looking for matching `"'/bin/sh: -c: line 1: syntax error: unexpected end of fileFrom root@D3L40.localdomain Wed Jan 8 16:18:01 2020说是语法错误,结尾不对,明明是两个双引号啊,这样就有可能是⾥⾯有特殊字符导致命令意外中断了,于是查了下万能的百度发现:The “sixth” field (the rest of the line) specifies the command to be run. The entire command portion of the line, up to a newline or % character, will be executed by /bin/sh or by the shell specified in the SHELL variable of the crontab file. Percent-signs (%) in the command, unless escaped with backslash (), will be changed into newline characters, and all data after the first % will be sent to the command as standard input. There is no way to split a single command line onto multiple lines, like the shell’s trailing “”.⼤概是在crontab⾥%当换⾏符⽤了,想要正常使⽤就得加反引号\,\%这样来⽤。
linux计划任务问题:shell文件可以手动执行,计划任务却一直失败!

linux计划任务问题:shell文件可以手动执行,计划任务却一直失败!1. 如果是sh脚本:直接在脚本前面加上: source /etc/profile2. 如果是python:source /etc/profile && python /mypath/myscript.py ...原因:crontab 不能自动从用户profile文件中读取环境变量参数。
具体解释如果没有生效,可以重启crontab服务,/etc/init.d/crond restart ;参考网页如果依然无法解决问题那么需要查看你的文件编码是否有问题:在执行shell脚本时提示这样的错误主要是由于shell脚本文件是dos格式,即每一行结尾以\r\n来标识,而unix格式的文件行尾则以\n来标识。
查看脚本文件是dos格式还是unix格式的几种办法。
(1)cat -A filename 从显示结果可以判断,dos格式的文件行尾为^M$,unix格式的文件行尾为$。
(2)od -t x1 filename 如果看到输出内容中存在0d 0a的字符,那么文件是dos格式,如果只有0a,则是unix格式。
(3)vi filename打开文件,执行 : set ff,如果文件为dos格式在显示为fileformat=dos,如果是unxi则显示为fileformat=unix。
解决方法:(1)使用linux命令dos2unix filename,直接把文件转换为unix格式(2)使用sed命令sed -i "s/\r//" filename 或者sed -i "s/^M//" filename直接替换结尾符为unix格式(3)vi filename打开文件,执行 : set ff=unix 设置文件为unix,然后执行:wq,保存成unix格式。
注意如果直接执行shell脚本,而放到定时任务中不成功,此时需要查看定时任务执行日志,如下命令可输出定时任务执行日志(./etc/profile; 为引入环境变量):*/5 * * * * ./etc/profile;/bin/sh /opt/bak.sh -> /opt/execronlog.txt 2>&1 &查看日志cat /opt/execronlog.txt:the input device is not a TTY若使用docker:#!/bin/bashsource /etc/profiledocker exec -it 3473faa6479a mysqldump -uroot -p1qaz@WSX oa > /data/mysql/backup/oa_$(date +"%Y%m%d%H%M%S").sql改为docker exec -i 3473faa6479a mysqldump -uroot -p1qaz@WSX oa > /data/mysql/backup/oa_$(date +"%Y%m%d%H%M%S").sql参考:https:///k8080880/article/details/78178502?utm_ medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase。
crontab定时任务不执行的原因分析与解决方法

crontab定时任务不执⾏的原因分析与解决⽅法前⾔实现Linux定时任务有:cron、anacron、at等,cron是服务名称,crond是后台进程,crontab则是定制好的计划任务表然⽽今天真是长知识⽤了 crontab 这么久才知道原来也需要启动添加了定时任务但是并不好使[root@dev-gl-lh1 ApiAgent]# cat /etc/crontabSHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=/# For details see man 4 crontabs# Example of job definition:# .---------------- minute (0 - 59)# | .------------- hour (0 - 23)# | | .---------- day of month (1 - 31)# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# | | | | |# * * * * * user-name command to be executed# 缓存coin 映射数据*/5 * * * * root /usr/bin/php /data/application/SwooleMoney/script/bin/cli.php CacheData cacheCoinMap# 缓存交易对信息*/1 * * * * root /usr/bin/php /data/application/SwooleMoney/script/bin/cli.php CacheData cacheSymbol# 删除深度数据*/1 * * * * root /usr/bin/php /data/application/SwooleMoney/script/bin/cli.php CacheData clearExchangeDepths >/tmp/clearExchangeDepths.log~~每分钟执⾏⼀次脚本但等到花都谢了都没等到⽇志# 查看crontab 状态[root@dev-gl-lh1 ApiAgent]# /etc/init.d/crond statuscrond dead but pid file exists# 启动crontab 服务[root@dev-gl-lh1 ApiAgent]# /etc/init.d/crond startStarting crond:得嘞⽇志有输出了脚本成功执⾏, 涨知识了.总结以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作具有⼀定的参考学习价值,如果有疑问⼤家可以留⾔交流,谢谢⼤家对的⽀持。
AIX CRON

AIX下的cron使用小结2010-07-17 10:51转载自anydb最终编辑epsilondragon1、cron介绍cron 在AIX系统里是一个守护进程(Daemon),用来自动运行UNIX命令。
有了cron 后,用户可以安排类似于windows下的“任务计划”,定期自动运行某些任务(命令或者脚本)。
cron的运行是通过crontab来驱动的。
cron 进程运行时,会读取/etc/cronlog.conf配置文件来指定运行日志的存储信息。
如果用户未配置cronlog.conf,则cron进程将运行的日志信息存储在/var/adm/cron/log 文件里。
可以通过查看日志信息验证所设置的任务是否正常运行。
aix自带了cron,要验证cron是否正在运行。
输入cron命令即可查看bash-3.00# cron! cron 已在运行。
公元2009年08月04日星期二 14时15分04秒cron 守护进程运行的命令和crontab文件条目是相对应的。
如果不重新定向cron作业的输出为标准输出或标准错误,cron守护进程就会通过电子邮件告知您任何命令输出或错误。
如果在crontab文件中指定了不正确的cron作业,这个cron守护进程不运行这个作业。
cron 守护进程只在cron守护进程被初始化时检查crontab文件。
当用crontab命令改变crontab文件时,指示变化的消息被发送到cron守护进程。
这消除了在规则的调度间隔检查新的或改变的文件的开销。
2、crontab介绍⑴、语法crontab的语法为:crontab [ -e [UserName] | -l [UserName] | -r [UserName] | -v [UserName] | File ] 。
crontab 命令用来提交、编辑、列出或除去cron作业。
一个cron作业是一个命令,其运行是由cron守护进程在规则的调度间隔执行的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AIX的crontab不执行的问题及解决方法。
===========================================================
作者: zjc4u
发表于: 19:13
分类: 小技巧
出处:
---------------------------------------------------------------
今天发现 P570 crontab 不运行,
查看/var/adm/cron/log 文件,里面报错信息如下:
# tail log
! 0481-095 The cron job is being rescheduled.
Fri Mar 2 09:22:00 BEIST 2007
! cron: 0481-087 The c queue maximum run limit has been reached.
Fri Mar 2 09:22:00 BEIST 2007
! 0481-095 The cron job is being rescheduled.
Fri Mar 2 09:22:00 BEIST 2007
! cron: 0481-087 The c queue maximum run limit has been reached.
Fri Mar 2 09:22:00 BEIST 2007
! 0481-095 The cron job is being rescheduled.
Fri Mar 2 09:22:00 BEIST 2007
! cron: 0481-087 The c queue maximum run limit has been reached.
Fri Mar 2 09:22:00 BEIST 2007
! 0481-095 The cron job is being rescheduled.
Fri Mar 2 09:22:00 BEIST 2007
! cron: 0481-087 The c queue maximum run limit has been reached.
Fri Mar 2 09:22:00 BEIST 2007
! 0481-095 The cron job is being rescheduled.
Fri Mar 2 09:22:00 BEIST 2007
! cron: 0481-087 The c queue maximum run limit has been reached.
Fri Mar 2 09:22:00 BEIST 2007
! 0481-095 The cron job is being rescheduled.
Fri Mar 2 09:22:00 BEIST 2007
问题原因:
crontab 没有定时执行是因为“! cron: 0481-087 The c queue maximum run limit has been reached.”。
修改/var/adm/cron/queuedefs 文件。
在里面加上这样一句:"",然后kill PID,其中PID为cron进程号,新的cron设置就会生效。
Maximum number of jobs in the queue by default was 50. The errorc messages 0481-087, 0481-095 usually appears when this max. number
is reached. So you can increase the maximum number of jobs in /var/adm/cron/queuedefs , vi the queuedefs file and change the b to c and the 50 to 200. by including this entry"" in the file. After making the changes to the file, killcron and it will respawn again with the new settings.
解决方法:
#
#
# here is an example of a low prority (nice 20), 50 entry batch queue #
在/var/adm/cron/queuedefs/queuedefs加以C队列为1000就可以了。
ps -ef|grep cron
kill -9 con服务的进程号
cron的服务会自动重启,问题解决。