linux定时结束java进程_linux进程管理-定时定期执行任务

0.计划任务的命令:

at  安排作业在某一时刻执行

batch  安排作业在系统负载不重时执行

crontab 安排周期性运行的作业

1.at命令用法:

安排命令或者多个命令在指定的时间运行一次

语法;

at [-f filename] 时间

at -d or atrm 删除队列中的任务

at -l 或者 atq 查看队列中的任务

1.1 at指定时间的方式(前提是开启atd服务,所以需要查看系统是否开启atd服务)

绝对计时方法;

midnight noon teatime

hh:mm[today]

hh:mm tomorrow

hh:mm 星期

hh:mm MM/DD/YY

相对计时方法:

now +n minutes

now +n hours

now +n days

例如:

9868a9f8cbaacd40dc6d5e95bce91b8e.png

1.2  at用法:

1、安排定时任务

例如:10分钟以后发个广播:

[root@iz2ze46xi6pjjj69ailg9lz ~]# at now +10 minutes #用相对时间

at> /usr/bin/wall < /etc/motd      #输入命令之后Ctrl+D保存任务

注意:

(1)命令要用绝对路径。

(2)能使用at定时任务的前提是开启atd服务,所以需要查看系统是否开启atd服务:

[root@iz2ze46xi6pjjj69ailg9lz ~]# ps -le|grep atd

4 S 0 529 1 0 80 0 - 6460 hrtime ? 00:00:00 atd

2.查看以及删除定时任务

定时任务原理:

我们安排了一个定时任务实际上是将我们的命令保存在/var/spool/at/目录下面:

[root@iz2ze46xi6pjjj69ailg9lz ~]# ls /var/spool/at/  #查看目录下文件

a0000301832fd6 spool

[root@iz2ze46xi6pjjj69ailg9lz ~]# tail -5 /var/spool/at/a0000301832fd6  #查看文件内容

exit 1

}

${SHELL:-/bin/sh} << 'marcinDELIMITER2474a99d'

/usr/bin/wall < /etc/motd

marcinDELIMITER2474a99d

我们发现linux实际上将我们的定时任务放在文件末尾,在前面做了一系列的读取环境变量的操作,也就是我们的定时任务是在文件的末尾写着的。

查看与删除定时任务:

[root@iz2ze46xi6pjjj69ailg9lz ~]# atq

[root@iz2ze46xi6pjjj69ailg9lz ~]# at now +5 minutes  #新增一个任务

at> /usr/bin/wall gggg

job 4 at Sat Mar 31 15:23:00 2018

[root@iz2ze46xi6pjjj69ailg9lz ~]# at now +10 minutes  #新增一个任务

at> /usr/bin/wall secondwall

job 5 at Sat Mar 31 15:29:00 2018

[root@iz2ze46xi6pjjj69ailg9lz ~]# atq    #查看定时任务

5 Sat Mar 31 15:29:00 2018 a root

4 Sat Mar 31 15:23:00 2018 a root

[root@iz2ze46xi6pjjj69ailg9lz ~]# at -l  #查看任务方法二

5 Sat Mar 31 15:29:00 2018 a root

4 Sat Mar 31 15:23:00 2018 a root

[root@iz2ze46xi6pjjj69ailg9lz ~]# at -d 5  #移除序号是5的任务

[root@iz2ze46xi6pjjj69ailg9lz ~]# atq

4 Sat Mar 31 15:23:00 2018 a root

[root@iz2ze46xi6pjjj69ailg9lz ~]# atrm 4  #移除序号是4的任务

3、at配置文件限制哪些用户可以使用at命令:

/etc/at.allow

/etc/at.deny

规则:

如果/etc/at.allow文件存在,那么只有列在此文件中的用户才可以使用at命令;

如果/etc/at.deny文件存在,那么只有列在此文件中的用户才不可以使用at命令;

如果两个文件都不存在,那么只有超级用户才可以使用at命令;

如果两个文件都存在且都为空,那么所有人可以使用at命令。

2.batch命令用法:

用法与功能与at一样,只是它会检查系统负载值,负载较轻才会执行任务(一般为0.8以下为较轻)。负载值就是我们用w或top查询时候的load average。

3.crontab周期性执行命令的用法:(依赖于crond进程)

作用:用于生成cron进程所需要的crontab文件

语法:

crontab {-l | -e|-r}

-l  显示当前的crontab

-r  删除当前的crontab

-e  使用编辑器编辑当前的crontab文件

crontab -e格式: (时间值的填写方法:将知道的时间值填上,不知道的写上*。)

分钟 小时 天 月 星期 命令/脚本

例如:

(1)每天凌晨四点备份文件:

0  4  *  *  *  备份脚本

(2)每个星期二和星期五下午六点备份文件

0  18  *  *  2,5  备份脚本

(3)一月到三月的星期2和星期五备份文件

0  18  *  1-3  2,5  备份脚本

(4)另一个需求,星期一到星期五的17.30发一条广播,17.45所有电脑自动关机

30  17  *  *  1-5  /usr/bin/wall < news.txt

45  17  *  *  1-5  /sbin/shutdown -h now

(5)3-6月和9-12月每个星期的星期1到星期5的12点到下午2点每隔2分钟执行一次备份脚本

*/2  12-14  *  3-6,9-12  1-5  /bin/cp /root/data/ -r /root/data.bak 2> /root/bak.err

上面将错误的信息重定向到/root/bak.err文件夹中

总结:时间范围用-,多个时间用,逗号隔开,没两分钟可以在分钟处*/2,每两小时在天的位置*/2.

总结:

(1)这些选项都不能为空,必须填入

(2)如果不知道具体的值用*代替

(3)每个时间段可以指定多个值,用逗号隔开;时间范围的话用-

(4)命令应该给出绝对路径

(5)用户必须具有运行所对应的命令或程序的权限。

1.周期性任务的例子:

(1)每隔3分钟发送一条广播,内容从news.txt读取

[root@iz2ze46xi6pjjj69ailg9lz ~]# crontab -e

输入内容如下,输入完成之后保存即可:

*/3 * * * 6 /usr/bin/wall < /root/news.txt

保存之后可以到/var/spool/cron/目录下查看

[root@iz2ze46xi6pjjj69ailg9lz cron]# pwd

/var/spool/cron

[root@iz2ze46xi6pjjj69ailg9lz cron]# cat root

*/3 * * * 6 /usr/bin/wall < /root/news.txt

定时执行的原理:

将我们写的命令保存到/var/spool/cron/目录下,以用户命名,然后定期执行文件,我们也可以手工编辑这个文件。

(2)其他例子:

172154a11bbd095a49e5e5e719521a85.png

2.查看周期性任务的两种方式:

[root@iz2ze46xi6pjjj69ailg9lz cron]# cat /var/spool/cron/root  #直接读取文件

*/3 * * * 6 /usr/bin/wall < /root/news.txt

*/1 * * * * /usr/bin/ls

[root@iz2ze46xi6pjjj69ailg9lz cron]# crontab -l  #用crontab命令读取

*/3 * * * 6 /usr/bin/wall < /root/news.txt

*/1 * * * * /usr/bin/ls

[root@iz2ze46xi6pjjj69ailg9lz cron]#

3.删除周期性任务的两种方式

第一种:直接删除所有的任务

[root@iz2ze46xi6pjjj69ailg9lz cron]# crontab -r

[root@iz2ze46xi6pjjj69ailg9lz cron]# crontab -l

no crontab for root

第二种:编辑/var/spool/cron/root文件,删除指定行也就完成了删除任务

注意:crond周期执行任务依赖于crond进程,因此需要开启crond进程:

[root@iz2ze46xi6pjjj69ailg9lz ~]# pkill crond  #杀掉进程

[root@iz2ze46xi6pjjj69ailg9lz ~]# ps -le | grep crond

[root@iz2ze46xi6pjjj69ailg9lz ~]# which crond

/usr/sbin/crond

[root@iz2ze46xi6pjjj69ailg9lz ~]# crond  #开启crond进程

[root@iz2ze46xi6pjjj69ailg9lz ~]# ps -le | grep crond

1 S 0 22973 1 0 80 0 - 31554 hrtime ? 00:00:00 crond

4.crontab的配置文件: /etc/crontab文件 介绍了配置文件的格式

[root@iz2ze46xi6pjjj69ailg9lz /]# cat /etc/crontab #查看/etc/crontab文件

SHELL=/bin/bash

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

MAILTO=root

# 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,f

ri,sat

# | | | | |

# * * * * * user-name command to be executed

0 */6 * * * root /bin/wipefs

5、 /etc/下面有每周、每天和每日执行的脚本文件夹,我们将一个脚本放进去即可实现对应的执行脚本:

[root@iz2ze46xi6pjjj69ailg9lz etc]# ll /etc/ | grep cron

-rw-------. 1 root root 541 Mar 31 2016 anacrontab

drwxr-xr-x. 2 root root 4096 Aug 18 2017 cron.d

drwxr-xr-x. 2 root root 4096 Aug 18 2017 cron.daily

-rw-------. 1 root root 0 Mar 31 2016 cron.deny

drwxr-xr-x. 2 root root 4096 Jun 10 2014 cron.hourly

drwxr-xr-x. 2 root root 4096 Jun 10 2014 cron.monthly

-rw-r--r--. 1 root root 480 Jan 21 08:26 crontab

drwxr-xr-x. 2 root root 4096 Jun 10 2014 cron.weekly

centos7,调用执行上面每日、每月、每周文件夹下面的脚本是在:/etc/anacrontab通过anacron在调用

[root@iz2ze46xi6pjjj69ailg9lz etc]# cat /etc/anacrontab

# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh

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

MAILTO=root

# the maximal random delay added to the base delay of the jobs

RANDOM_DELAY=45

# the jobs will be started during the following hours only

START_HOURS_RANGE=3-22

#period in days delay in minutes job-identifier command

1 5 cron.daily nice run-parts /etc/cron.daily

7 25 cron.weekly nice run-parts /etc/cron.weekly

@monthly 45 cron.monthly nice run-parts /etc/cron.monthly

6.限定哪些用户可以使用crond命令:

/etc/cron.allow

/etc/cron.deny

规则:

如果/etc/cron.allow文件存在,那么只有列在此文件中的用户才可以使用at命令;

如果/etc/cron.deny文件存在,那么只有列在此文件中的用户才不可以使用at命令;

如果两个文件都不存在,那么只有超级用户才可以使用at命令;

如果两个文件都存在且都为空,那么所有人可以使用at命令。

https://www.cnblogs.com/qlqwjy/category/1035596.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值