2019-09-03 17:10:35 hyfstyle 阅读数 1021
  • 嵌入式Linux任务编程

    本课程主要讲解Linux环境进程与线程的概述,进程创建,进程间通信编程,多线程编程。 学习条件: 1.C编程基础 2.Linux编程基础

    8616 人正在学习 去看看 沈寒

手动执行脚本正常,定时任务总是不执行解决方案:

  1. 首先检查crond任务是否正常:service crond status
    重启下定时任务:service crond stop、service crond start 、service crond restart

  2. 在调度的脚本中加载环境变量试试 脚本中添加 source /etc/profile

crontab -e编辑定时任务时加上./etc/profile; 与在脚本里加 source /etc/profile 效果一样,例如0 6 * * * ./etc/profile;sh /home/hadoop/ktl_wks/start_1.sh

crontab其实并不知道定时脚本所需要的特殊环境,所以在脚本中要提供所有必要的路径和环境变量,要注意以下:

  • 脚本中涉及文件路径时写全局路径
  • 脚本执行要用到java或其他环境变量时,通过source命令引入环境变量
  • 当手动执行脚本OK,但是crontab 不执行时。一般都是环境变量惹的祸,可以尝试在crontab中直接引入环境变量或者在脚本中加载环境变量解决问题
  • 新创建的定时任务,至少要过2分钟才可以执行,如果重启crontab则可以马上执行。
  • 每条定时任务执行完毕之后,系统会自动将输出发送邮件给当前系统用户。日积月累,会给系统造成负担, 所以每条定时任务命令后面最好进行重定向处理(定时任务执行的结果正常输出并已经作了一定的处理,,例如追加到某个特定日志文件): >/dev/null 2>&1 例如 0 8 * * * /home/hadoop/ktl_wks/start_JXC_DD.sh >> /home/hadoop/ktl_wks/start_JXC_DD_run.log 2>&1
  • crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题。或者查看定时任务日志看是否有执行报错:tail -100f /var/log/cron
  • crontab%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义\%,所以date +%Y%m%dcrontab里是不会执行的,要换成date +\%Y\%m\%d
  • 命令 crontab -r 会删除该用户的所有crontab定时任务。删除crontab目录 /var/spool/cron 中用户的Crontab文件,定时任务就没有了,所以这个命令危险性很大。
2016-07-26 14:27:55 xiaoshunzi111 阅读数 10369
  • 嵌入式Linux任务编程

    本课程主要讲解Linux环境进程与线程的概述,进程创建,进程间通信编程,多线程编程。 学习条件: 1.C编程基础 2.Linux编程基础

    8616 人正在学习 去看看 沈寒

现在总结一下:

定时任务没有被执行有以下两种可能:

1、被执行的脚本没有执行权限,这种情况 直接授权

chmod 755 xxx.sh

2、被执行的脚本编码有问题,这种情况直接转码
  
dos2unix xxx.sh

我们也可下载一个windows版的dos2unix,转完码后再上传到Linux服务器

补充:linux定时任务

每天早上6点
0 6 * * * echo "Good morning." >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。

每两个小时
0 */2 * * * echo "Have a break now." >> /tmp/test.txt 

晚上11点到早上8点之间每两个小时和早上八点
0 23-7/2,8 * * * echo "Have a good dream" >> /tmp/test.txt

每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * 1-3 command line

1月1日早上4点
0 4 1 1 * command line SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号 HOME=/

每小时执行/etc/cron.hourly内的脚本

01 * * * * root run-parts /etc/cron.hourly

每天执行/etc/cron.daily内的脚本

02 4 * * * root run-parts /etc/cron.daily

每星期执行/etc/cron.weekly内的脚本
22 4 * * 0 root run-parts /etc/cron.weekly

crontab权限问题到/var/adm/cron/下一看,文件cron.allow和cron.deny是否存在

用法如下:

1、如果两个文件都不存在,则只有root用户才能使用crontab命令。
2、如果cron.allow存在但cron.deny不存在,则只有列在cron.allow文件里的用户才能使用crontab命令,如果root用户也不在里面,则root用户也不能使用crontab。
3、如果cron.allow不存在, cron.deny存在,则只有列在cron.deny文件里面的用户不能使用crontab命令,其它用户都能使用。
4、如果两个文件都存在,则列在cron.allow文件中而且没有列在cron.deny中的用户可以使用crontab,如果两个文件中都有同一个用户,
以cron.allow文件里面是否有该用户为准,如果cron.allow中有该用户,则可以使用crontab命令。

2018-06-13 22:04:39 h294590501 阅读数 264
  • 嵌入式Linux任务编程

    本课程主要讲解Linux环境进程与线程的概述,进程创建,进程间通信编程,多线程编程。 学习条件: 1.C编程基础 2.Linux编程基础

    8616 人正在学习 去看看 沈寒

linux定时任务

预先设定好的时间一到,或指定的间隔时间一到,
由 Linux 系统自动调用并执行预先定义好的系统指令,来完成具体的业务功能。

通过 Linux 中的 crontab 命令,我们预先设定好的时间一到,或指定的间隔时间一到,就执行定时任务。

时间间隔的单位可以是分钟、小时、日、月、年及以上的任意组合。

这个命令非常适合做定时性,周期性的工作,如:数据备份,程序自动运行等。

安装 crontab 服务

在默认情况下,Linux 系统没有安装和启动 crontab 这个定时任务服务,
我们得联网下载并安装启动这个 crontab 服务。
语法:yum install package
解释:下载并安装指定的安装包或服务

1. yum(全称为 Yellow dog Updater, Modified):是一个软件包管理器。能够从指定的服务
器自动下载安装包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,
无须繁琐地一次次下载和安装。yum 提供了查找、安装、删除某一个、一组甚至全部软件包
的命令,而且命令简洁而又好记。

2. package:表示需要指定的安装包或服务,如 crontabs 定时服务
命令:
yum install crontabs 安装 crontab 服务,注意 crontabs 后面有个 s

启动/停止/重启/加载定时任务

在默认情况下,当你下载并安装 crontab 定时任务这个服务后,crontab 已经启动,不用再启动了。
当然你也可以根据需求停止定时任务这个服务。

语法:service 服务 start/stop/restart/reload
解决:将指定的服务启动/停止/重启/加载
命令:
1. service crond start 启动定时任务服务
2. service crond stop 停止定时任务服务,但定时任务还在,下次可以再启动
3. service crond restart 重启定时任务服务
4. service crond reload 重新加载定时任务配置文件

定时任务配置

语法:crontab [参数]
解释:定时任务的配置
1. -u user 给指定用户设置定时任务
2. -l 显示当前用户所有的定时任务
3. -e 编辑当前用户的定时任务,一行一个定时任务
4. -r 删除当前用户的定时任务

命令:
crontab -l 显示当前用户所有的定时任务
crontab -e 编辑当前用户的定时任务,一行一个定时任务

当输入 crontab -e 后,会启动 vi 编辑器,来编写新的定时任务,一行写一个定时任务。
定时任务配置格式如下:
分 时 日 月 年 需要执行的命令,中间至少有一个空格


命令:
* * * * * date >> /mydate.txt 
每年每月每日每时每分执行 date 命令,将结果输出到/mydate.txt 文件中,

如果 mydate.txt 文件不存在,则系统创建。
其中>>表示将结果输出到什么位置。

*/1 * * * * date >> /mydate.txt  每隔 1 分钟
*/2 * * * * date >> /mydate.txt  每隔 2 分钟


当保存并退出 vi 编辑器后,定时任务立刻生效。
等一分钟,显示当前用户所有定时任务,和执行的输出内容。

命令:
crontab -l 显示当前用户所有的定时任务

cd / 定位于根目录
ls 显示当前目录下的内容
more mydate.txt 查看当前目录下 mydate.txt 文件的内容


其它定时任务配置示例:
30 21 * * * date >> /mydate.txt
每晚的 21:30,将时间输出到/mydate.txt 文件中

10 10 1,10,20,30 * 2017,2018 date >> /mydate.txt
每月 1,10,20,30 号,的 10 点 10 分,将时间输出到/mydate.txt 文件中。

2019-12-16 21:34:44 weixin_39734304 阅读数 17
  • 嵌入式Linux任务编程

    本课程主要讲解Linux环境进程与线程的概述,进程创建,进程间通信编程,多线程编程。 学习条件: 1.C编程基础 2.Linux编程基础

    8616 人正在学习 去看看 沈寒

定时任务的创建: crontab -e 进入任务编辑状态
格式为:
* * * * * 命令
分时日月周

2 1 * * * aaa # 代表每天 1:02 分执行 aaa 命令
*/2 * * * * aaa # 代表每 2 分钟执行 aaa 命令

执行结果会被发送到 root 的邮件里,如果不想收到定时任务地信息
You have new mail in /var/spool/mail/root
可以把输出重定向:
2 1 * * * aaa > /dev/null 2>&1
每周日凌晨 3 点执行:
0 3 * * 0 command
每隔 2 分钟:
*/2 * * * * command

没有更多推荐了,返回首页