当前位置: 首页 > news >正文

at命令和cron命令

第一章 例行性工作

1、单一执行的例行性工作

单一执行的例行性工作:仅处理执行一次就结束了 .

1.1 at命令的工作过程
  • /etc/at.allow:里面的用户是可以使用at命令的 --- 但实际上这个allow文件不存在,所以指全部的人都可以使用该命令;

  • /etc/at.deny:黑名单

  • 注:两个文件如果都不存在,只有root能使用

相关命令: 
#at工作调度对应的系统服务
[root@localhost ~]# ps -ef | grep at
[root@localhost ~]# systemctl status atd   --- 查看atd状态做实验前,可以直接重启atd,方便:
[root@localhost ~]# systemctl restart atd    #atd就相当于是at的守护进程
​
#at的工作文件存放目录
[root@localhost ~]# ll  /var/spool/at
​
#at工作的日志文件
[root@localhost ~]# ll /var/log/cron
​
监测时间:watch -n x cat 文件
​
查看日志:tail -f /var/log/cron
1.2 at命令详解

命令格式:at [参数] [时间]

参数:
-m 当任务完成之后,即使没有标准输出,将给用户发送邮件
-l atq的别名,可列出目前系统上面的所有该用户的at调度
-d 是atrm的别名,可以取消一个在at调度中的工作
-v 使用较明显的时间格式,列出at调度中的任务列表
-c 可以列出后面接的该项工作的实际命令内容(脚本)
-f 从文件中读取作作业
时间格式:
HH:MM  在今天的HH小时MM分钟执行,如果今天的这个时间点已经过了,则明
天执行
HH:MM YYYY-MM-DD  强制规定在某年某月的某一天的特殊时刻进行该工作  MMDDYY
now + 2 minutes 从现在开始几分钟minutes, hours, days, or weeks

实验例子: 

#定义三分钟之后显示hello
[root@server ~]# at now + 3 minutes
​
用命令查看写的命令任务:at -l  = atq去查看
删除单一命令:at -d 序号 = atrm 序号
写命令:按ctrl+d结束提交

2、循环执行的例行性工作crond

循环执行的例行性工作:每隔一定的周期就需要执行一次

2.1 crontab的工作过程
  • /etc/cron.allow #写在该文件的人可以使用cron命令

  • /etc/cron.deny #黑名单

  • 两个文件如果都不存在,只有root能使用

相关命令: 
#crontab工作调度对应的系统服务
[root@localhost ~]# systemctl status crond#crontab工作的日志文件
[root@localhost ~]# ll /var/log/cron#用户定义计划任务的文件所在目录
[root@localhost ~]# ll /var/spool/cron/
2.2 crontab命令详解
[root@localhost ~]# crontab  --help
Usage:crontab [options] filecrontab [options]crontab -n [hostname]
​
Options:-u <user>  define user-e         edit user's crontab  --- 编辑用户的循环任务-l         list user's crontab-r         delete user's crontab  (清空)-i         prompt before deleting-n <host>  set host in cluster to run users' crontabs-c         get host in cluster to run users' crontabs-s         selinux context-V         print version and exit-x <mask>  enable debugging

crontab计划任务的时间格式:

0-590-231-311-120-7
注意:若存在冲突,则是或的关系;(在周不是*的情况下)
在周是*的情况下,日期的优先级高一点;
当想把IP地址信息写入一个文件里面的时候,需要在循环执行任务里面加上路径PATH。 --- 跟系统的计划任务一样

[root@master01 ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@master01 ~]# crontab -l
* * * * * ip a show ens160 > /root/ens160
[root@master01 ~]# watch -n 1 ls -l /root/

 

发现我们写的任务执行不了:

将路径写入到crontab -e里面:

现在就可以正常执行任务了:

date 月日时分年秒

crontab计划任务的时间格式中的特殊符号:

特殊字符含义
*代表任何时刻
,代表分隔时段
- 0-59代表一段时间范围
/数字指定时间的间隔频率,例如每 3 分钟进行一次,*/3

注:%在crontab里面有特殊含义,如果有命令里面需要使用%,需要使用\转义。

#每天早上9点整说good morning
[root@server ~]# crontab -e
0 9 * * * wall "good morning"

注:wall命令用于向系统当前所有打开的终端上输出信息。 通过wall命令可将信息发送给每位同意接收公众信息的终端机用户,若不给予其信息内容,则wall命令会从标准输入设备读取数据,然后再把所得到的数据传送给所有终端机用户。

2.3 系统的计划任务(对系统所有用户都生效的任务文件)
[root@localhost ~]# cat /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,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

若是有很多任务需要一起执行,就把这些任务放在一个文件夹里面,然后用run-parts写入到/etc/crontab中;

例子:
[root@master01 ~]# bash /root/write.sh
[root@master01 ~]# cat /root/write1.sh 
同时想要执行这些任务。
将这两个任务放在一个文件里面
[root@master01 ~]# mkdir /root/Write  --- 创建一个Write文件夹,专门放write.sh和write1.sh 
[root@master01 ~]# mv write.sh write1.sh /root/Write
[root@master01 ~]# vim /etc/crontab
* * * * * root run-parts /root/Write
完成!
课堂练习:
2.3.1实验一:定义三分钟之后显示hello
at now + 3 minutes
at > wall hello
2.3.2实验二 : 每天早上9点整,说good morning
crontab -e 
00 09 * * * wall "good morning"

注释

  • wall命令用于向系统当前所有打开的终端上输出信息。

  • 通过wall命令可将信息发送给每位同意接收公众信息的终端机用户,若不给予其信息内容,则wall命令会从标准输入设备读取数据,然后再把所得到的数据传送给所有终端机用户。

2.3.3实验三:指定某些用户不可以执行计划任务
/etc/at.deny
​
/etc/cron.deny
2.3.4实验四:系统级别例行性任务
[root@localhost ~]# vim /etc/crontab 
2.3.5实验五:创建一个以当前时间的文件,循环行的工作;例如:当前时间为11:48,文件为file-11-48.txt
date命令:date +%R = date +%H%M

注意:记得加转义字符\,不然识别不了!就执行不了任务。

2.3.6实验六:写一个循环任务,直接将一个write.sh文件的内容追加到/root/file
步骤:
1.创建一个write.sh文件,并写入内容echo hello >> /root/file
2.[root@master01 ~]# bash /root/write.sh  ---执行一次
3.[root@master01 ~]# cat /root/file  --- 可以看到file文件里面已经有内容了
hello
4.[root@master01 ~]# vim /etc/crontab  --- 将该任务写进系统计划任务里面
* * * * * root bash /root/write.sh
http://www.lryc.cn/news/462686.html

相关文章:

  • 搜维尔科技:使用Manus Primel Xsens数据手套直接在Xsens及其插件中捕获手指数据
  • Avalonia UI获取Popup显示位置,可解决异常显示其他应用程序的左上角
  • 新版Win32高级编程教程-学习笔记01:应用程序分类
  • 无需编程知识 如何用自适应建站系统创建专业网站 带完整的安装代码包以及搭建部署教程
  • 萤石云服务支持云端视频AI自动剪辑生成
  • Flink移除器Evictor
  • R语言实现多元线性回归高杠杠点,离群点分析
  • overfrp内网穿透:使用域名将内网http/https服务暴露到公网
  • springboot034在线商城系统设计与开发-代码(论文+源码)_kaic
  • 什么是第三范式(3NF)?为什么要遵守第三范式?
  • 大数据比对,shell脚本与hive技术结合
  • 【Linux安全基线】- CentOS 7/8安全配置指南
  • PDF.js的使用及其跨域问题解决
  • Linux Redis查询key与移除日常操作
  • 开源两个月,antflow后端项目全网获近100星
  • 设计模式——工厂方法模式(2)抽象工厂模式(3)
  • 简单聊聊System V下的IPC + 内核是如何管理该IPC
  • 【WRF工具】服务器上安装convert_geotiff
  • RPC通讯基础原理
  • JavaScript 第18章:安全性
  • 基于workbox实现PWA预缓存能力
  • 探索Web3生态系统:社区、协议与参与者的角色
  • 无人机电机故障率骤降:创新设计与六西格玛方法论双赢
  • samba禁用时拷贝服务器文件到本地的脚本
  • C#代码 串口通信晋中A2板,控制直流电机
  • 3 机器学习之假设空间
  • 基于STM32的风速风向传感器设计
  • 域名申请.
  • mysql5.7与mysql8.0身份认证插件的区别
  • 进化吧!原始人