linux定时命令参数 linux定时器命令

linux中,使用哪个命令去定时处理任务

如果必须使用命令的话,一般会可at命令。

成都创新互联专注于企业成都营销网站建设、网站重做改版、安国网站定制设计、自适应品牌网站建设、H5页面制作商城网站建设、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为安国等各大城市提供网站开发制作服务。

定时任务,指定一个时间执行一个任务,只能执行一次。

语法:#

at

[参数]

[时间]

输入要执行的任务命令后按Ctrl+d退出即可。

常见参数:

-m

:当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出

-I

:atq的别名

-d

:atrm的别名

-v

:显示任务将被执行的时间

-c

:打印任务的内容到标准输出

-V

:显示版本信息

-q

:后面加列队

使用指定的列队

-f

:后面加文件

从指定文件读入任务而不是从标准输入读入

-t

:后面时间参数

以时间参数的形式提交要运行的任务

注:该命令的功能实现需要atd服务

如果需要长期定时或周期性的执行某个任务,则需要使用crontab,编写cron脚本来实现。同样,负责安装脚本执行任务的服务一般叫做crond。具体使用方法篇幅较长,请自行百度。

linux下编写定时任务crontab

linux下的crontab服务:

1、crontab 是用来让使用者在固定时间或固定间隔执行程序之用

在linux平台上如果需要实现任务调度功能可以编写cron脚本来实现。

以某一频率执行任务

linux缺省会启动crond进程,crond进程不需要用户启动、关闭。

crond进程负责读取调度任务并执行,用户只需要将相应的调度脚本写入cron的调度配置文件中。

cron的调度文件有以下几个:

1. crontab

2. cron.d

3. cron.daily

4. cron.hourly

5. cron.monthly

6. cron.weekly

如果用的任务不是以hourly monthly weekly方式执行,则可以将相应的crontab写入到crontab 或cron.d目录中。

示例:

每隔一分钟执行一次脚本 /opt/bin/test-cron.sh

可以在cron.d新建脚本 echo-date.sh

内容为

*/1 * * * * root /opt/bin/test-cron.sh

2、cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于Cron 是Linux的内置服务,如果它不自动起来,可以用以下的方法启动、关闭这个服务:

/sbin/service crond start //启动服务

/sbin/service crond stop //关闭服务

/sbin/service crond restart //重启服务

/sbin/service crond reload //重新载入配置

你也可以将这个服务在系统启动的时候自动启动:

在/etc/rc.d/rc.local这个脚本的末尾加上:

/sbin/service crond start

现在Cron这个服务已经在进程里面了,我们就可以用这个服务了

查看服务是否已经运行用 ps -ax | grep cron

3、crontab命令

查看该用户下的crontab服务是否创建成功, 用 crontab -l 命令

命令 which php 查看linux下安装的php的路径

cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:

crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数

crontab -l //列出某个用户cron服务的详细内容

crontab -r //删除没个用户的cron服务

crontab -e //编辑某个用户的cron服务

比如说root查看自己的cron设置:crontab -u root -l

再例如,root想删除fred的cron设置:crontab -u fred -r

在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e

进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls /tmp/ls.txt

任务调度的crond常驻命令crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此 任务调度命令。crond命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

crontab命令选项:

-u指定一个用户

-l列出某个用户的任务计划

-r删除某个用户的任务

-e编辑某个用户的任务

4、cron文件语法:

分 小时 日 月 星期 命令

0-59 0-23 1-31 1-12 0-6 command (取值范围,0表示周日一般一行对应一个任务)

5、 新增调度任务

新增调度任务可用两种方法:

1)、在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。

2)、直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务。

6、 查看调度任务

crontab -l //列出当前的所有调度任务

crontab -l -u jp //列出用户jp的所有调度任务

7、 删除任务调度工作

crontab -r //删除所有任务调度工作

8、 任务调度执行结果的转向

例1:每天5:30执行ls命令,并把结果输出到/jp/test文件中

30 5 * * * ls /jp/test 21

注:21 表示执行结果及错误信息。

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号

HOME=/ //使用者运行的路径,这里是根目录

# run-parts

  01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本

  02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本

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

42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚本

  大家注意”run-parts”这个参数了,如果去掉这个参数的话,后面就可以写::要运行的某个脚本名,而不是文件夹名了。

总结:

编写定时任务的两种方式:1.sudo vim /etc/crontab 2. sudo crontab -e

查看定时任务的两种方式:1.sudo cat /etc/crontab 2.sudo crontab -l

*/1 * * * * appuser cd /app/webserver/website/api-cb.chuchujie.com/master/current/script/ ./back_coupon.sh 2 10 /dev/null 21

查看定时任务是否运行:

sudo tail -f /var/log/cron //定时任务日志(查看刚才设置的任务是否执行)

注:脚本有可执行权限

sh a.sh(不需要执行权限)

./sh (需要执行权限)

1.当shell脚本具有可执行权限时,用sh filename与./filename执行脚本是没有区别的。./filename是因为当前目录没有在PATH中,所有"."是用来表示当前目录的。

linux定时清理nohup命令下产生的日志

nohup命令 将程序以忽略挂起信号的方式运行起来,被运行的程序的输出信息将不会显示到终端。一般用于将程序的输出、报错信息重定向到一个指定路径的指定文件。

语法 :nohup [command] [args] []    

nohup命令 最后要带个作为结束

例:nohup python XXX.py abc/def/XXX.log 21

args: 0 – stdin (standard input),1 – stdout (standard output),2 – stderr (standard error) ;

21是将标准错误(2)重定向到标准输出(1),标准输出(1)再被重定向输入到文件,即XXX.log中。

nohup命令的缺点:日志文件文件越来越大,占内存且查看麻烦。因为这个日志文件和程序是共生死的,因为只要程序运行起来,就一直对log文件进行读写,直接删除XXX.log会导致程序也被结束了。

目前想到的一些相关方法如下,并未完全解决问题。

参考: linux下nohup日志输出过大问题解决方案

split命令:

参数:-b:值为每一输出档案的大小,单位为 byte。

       -C:每一输出档中,单行的最大 byte 数。

       -d:使用数字作为后缀。默认这个数字后缀是两位的,例如00,01,11. -a: 指定位数,例如 -a 4表示后缀是四位的。

       -l:值为每一输出档的列数大小。

       PREFIX:代表前导符,可作为切割文件的前导文件。

例如:

可以用split命令把很大的日志文件分成多个小文件,分割完成后 原文件不变 。不会影响nohup运行的程序。

缺点:split文件分割依赖手动,当程序出故障或调试时,将日志分割以便查看最新的日志信息。没法定时做到定时自动清理。

首先介绍find命令的参数

参考: linux find命令详解

在这里主要用到的是这几个参数:

-atime n 查找系统中最后n*24小时访问的文件

-ctime n  查找系统中最后n*24小时被改变文件状态的文件

-mtime n  查找系统中最后n*24小时被改变文件数据的文件

+n: n天前; -n: n天之内

find命令还可以和下一条命令连用(xargs或exec)

注:{}表示find到的东西;{}和 \;之间要有一个空格

我感觉exec不是很好用,怪怪的

cat dev/null

在 Linux 中, null 设备基本上被用来丢弃某个进程不再需要的输出流,或者作为某个输入流的空白文件,这些通常可以利用重定向机制来达到。

所以 /dev/null 设备文件是一个特殊的文件,它将清空送到它这里来的所有输入,而它的输出则可被视为一个空文件。另外,你可以通过使用 cat 命令显示 /dev/null 的内容然后重定向输出到某个文件,以此来达到清空该文件的目的。通过使用cat /dev/null,文件大小为0字节。

用cat删除文件:

但是我发现对于nohup的程序的日志,这样是无效的。因为nohup的程序持续不断地在读写日志文件,此时无法重定向,我试了几次,日志文件都压根没动。

crontab用于设置定时任务

参考:  linux crontab定时执行shell脚本

crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

语法

 crontab(选项)(参数)

选项

 -e:编辑该用户的计时器设置;

 -l:列出该用户的计时器设置;

 -r:删除该用户的计时器设置;

 -u用户名称:指定要设定计时器的用户名称。

参数

 crontab文件:指定包含待执行任务的crontab文件。

首先crontab -e,就会进入vi编辑界面。然后直接把新的命令输进去就行了。

minute hour day month week command /XXX/XXX.log 顺序:分 时 日 月 周

minute: 表示分钟,可以是从0到59之间的任何整数。

hour:表示小时,可以是从0到23之间的任何整数。

day:表示日期,可以是从1到31之间的任何整数。

month:表示月份,可以是从1到12之间的任何整数。

week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

/n表示每个n的单位执行一次

command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

意为每周的1:00执行,且输出重定向到黑洞目录。


名称栏目:linux定时命令参数 linux定时器命令
文章来源:http://scyanting.com/article/doppiec.html