Java321技术网

 找回密码
 立即注册
搜索
热搜: centos
查看: 8831|回复: 0
打印 上一主题 下一主题

Linux 定时关机 crontab 定时执行任务

[复制链接]

126

主题

126

帖子

815

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
815
跳转到指定楼层
楼主
发表于 2017-12-25 19:01:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

1、Linux 定时关机

每星期日到星期五 晚22:25 关机

获得root权限

su - root crontab -e 输入i,进入编辑状态输入下述代码

SHELL=/bin/bash

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

25 22 * * 0-6 sync && shutdown -h now


55 22 * * 6 sync && shutdown -h now 每星期六 晚22:55 关机

2、linux下使用linux at命令定时关机。

首先创建一个文件,写入:

#!/bin/sh shutdown -h now

保存为power文件之后

chmod +x power 需要有root权限才能关机,

所以需要输入的命令如下:

sudo at 02:00 tomorrow -f power

之后使用

sudo atq 可以查选定时执行的任务

sudo atrm 可以删除已经预定好的任务。

3、Linux 马上关机命令

halt

init 0

shutdown -h now

4、Linux shutdown 命令详解各参数功能:

-c 取消前一个shutdown命令。

-f 重新启动时不执行fsck(注:fsck是Linux下的一个检查和修复文件系统的程序)。

-F 重新启动时执行fsck。  

-h 将系统关机,在某种程度上功能与halt命令相当。

-k 只是送出信息给所有用户,但并不会真正关机。

-n 不调用init程序关机,而是由shutdown自己进行(一般关机程序是由shutdown调用init来实现关机动作),使用此参数将加快关机速度,但是不建议用户使用此种关机方式。 -t按秒延时关机 -r 关机之后重新启动系统。 now 表示立即执行,now=+0 -f<秒数> 送出警告信息和关机信号之间要延迟多少秒。警告信息将提醒用户保存当前进行的工作。 [时间] 设置多久时间后执行shutdown命令。时间参数有hh:mm或+m两种模式。hh:mm格式表示在几点几分执行shutdown命令。例如“shutdown 10:45”表示将在10:45执行shutdown。+m表示m分钟后执行shutdown。比较特别的用法是以now表示立即执行shutdown。值得注意的是这部分参数不能省略。

5、Linux shutdown

例子

定时关机

sudo shutdown -h 23:00 //表示在23点定时关机延时关机

sudo shutdown +minutes(这个加号不可省略,minutes表示分钟)比如: sudo shutdown -h +120 //两小时候关机

取消前一个关机命令按“Ctrl+C”键或输入命令:shutdown -c 运行15小时后自动关机shutdown -t 54000

本需求的提出是由
清海提出每隔15分钟定时执行某个java类,判断相关的菜的保质期是否过期
贤龙的对积分兑换的时间进行判断,如果时间超过了,则无法兑换,进行提示。
解决方案
[root@developserver ~]# crontab -e
*/15 * * * * java -jar /opt/StoreAutoAlarms_fat.jar
每15分钟执行一次命令


1、crontab file的格式:
crontab 文件中的行由 6 个字段组成,不同字段间用空格或 tab 键分隔。前 5 个字段指定命令要运行的时间

分钟 (0-59)   小时 (0-23)   日期 (1-31)   月份 (1-12)   星期几(0-6,其中 0 代表星期日)  第 6 个字段是要在适当时间执行的字符串
记住几个特殊符号的含义:
"*"代表取值范围内的数字,"/"代表"每","-"代表从某个数字到某个数字,","分开几个离散的数字
%在crontab中被认为是newline,要用\来escape才行。比如crontab执行行中,如果有"date +%Y%m%d",必须替换为:"date +\%Y\%m\%d"创建crontab?

例子
  5 * * * * ls 指定每小时的第5分钟执行一次ls命令
  30 5 * * * ls 指定每天的 5:30 执行ls命令
  30 7 8 * * ls 指定每月8号的7:30分执行ls命令
  30 5 8 6 * ls 指定每年的6月8日5:30执行ls命令
  30 6 * * 0 ls 指定每星期日的6:30执行ls命令
  30 3 10,20 * * ls 每月10号及20号的3:30执行ls命令
  25 8-11 * * * ls 每天8-11点的第25分钟执行ls命令
  */15 * * * * ls 每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令 ]
  30 6 */10 * * ls 每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls命令。 ]

       每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件
  50 7 * * * root run-parts /etc/cron.daily [ 注:run-parts参数表示,执行后面目录中的所有可执行文件。 ]

2、crontab常用的命令
 2.1、新增调度任务
  新增调度任务可用两种方法:
  1、在命令行输入: crontab -e 然后添加相应的任务,wq存盘退出。
  2、直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的任务。
        使用命令crontab -u user -e命令编辑用户user的cron(c)作业。用户通过编辑文件来增加或修改任何作业请求。
        执行命令crontab -u user -r即可删除当前用户的所有的cron作业。
       作业与它们预定的时间储存在文件/usr/spool/cron/crontabs/username里。username使用户名,在相应的文件中存放着该用户所要运行的命令。命令执行的结果,无论是标准输出还是错误输出,都将以邮件形式发给用户。


    crontab -e与vi /etc/crontab 的区别


    1、crontab 会进行语法检查,vi 不会
    2、crontab -e是某个用户的周期计划任务;

 2.2、查看调度任务
  crontab -l //列出当前的所有调度任务
  crontab -l -u jp //列出用户jp的所有调度任务
  2.3、删除任务调度工作
  crontab -r //删除所有任务调度工作
  2.4、任务调度执行结果的转向
  例1:每天5:30执行ls命令,并把结果输出到/jp/test文件中
  30 5 * * * ls >/jp/test 2>&1
  注:2>&1 表示执行结果及错误信息。
  编辑/etc/crontab 文件配置cron
  cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用cron服务做一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。此文件的文件格式是:
  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"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名了
  可用crontab -e命令来编辑,编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/crontab文件

/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 的使用
/etc/cron.allow 和 /etc/cron.deny 文件被用来限制对 cron 的使用。这两个使用控制文件的格式都是每行一个用户。两个文件都不允许空格。如果使用控制文件被修改了,cron 守护进程(crond)不必被重启。使用控制文件在每次用户添加或删除一项 cron 任务时都会被读取。

无论使用控制文件中的规定如何,根用户都总是可以使用 cron。
如果 cron.allow 文件存在,只有其中列出的用户才被允许使用 cron,并且 cron.deny 文件会被忽略。
如果 cron.allow 文件不存在,所有在 cron.deny 中列出的用户都被禁止使用 cron。

3、具体的应用
3.1定时关机
关机需要root的身份在可以执行,
定时关机有如下方法
换到root 的身份
su - root
crontab -e (按a增加下)
01 22 * * * /sbin/shutdown -h now   (或01 22 * * * /sbin/init 0)
保存退出即可以

方法2 vi /etc/crontab 在里面插入
01 22 * * * root   /sbin/shutdown -h now

01 22 * * * root   /sbin/init 0
3.2mysql定时备份
以Linux下定时备份mysql为例说明下
写一个简单的mysql备份shell脚本
vi
#!/bin/sh
da=`date +%Y%m%d%H%M%S`
mysqldump -u root -pdongjj --all-database>/root/mysqlbakup/$da

保存为 mysqlbak.sh
然后crontab-e
0 3 * * * /root/mysqlbak.sh
保存退出
注意:若crontab不执行脚本:
1、确定.sh文件有可执行的权限?
chmod 777 fileName.sh
chmod 777 -R fileName.sh
2、确保sh文件中用到的命令是绝对路径吗?



在指定的时间运行任务
也可以通过at命令来控制在指定的时间运行任务
如:
at -f test-cron.sh -v 10:25
其中-f 指定脚本文件, -v 指定运行时间


回复

使用道具 举报

QQ|Archiver|手机版|小黑屋|Java321技术网   蜀ICP备15030946号-1

GMT+8, 2024-4-23 21:22 , Processed in 0.056680 second(s), 21 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表