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 指定运行时间