2.Linux的例行性工 作(计划任务)

这篇具有很好参考价值的文章主要介绍了2.Linux的例行性工 作(计划任务)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. 场景:

2. 单一执行的例行性任务--at(一次性)

2.1. 安装

2.2. at命令详解

2.2.1. 格式

2.2.2. 参数

2.2.3. 时间格式

2.2.4. 实验1

2.2.5. 实验2

2.2.6. 注意

2.2.7. at命令执行过程分析

2.2.8. 实验3

3. 循环执行的例行性任务-- crontab(周期性)

3.1. crontd服务

3.2. crontab工作过程

3.3. crontab命令详解

3.3.1. 格式

3.3.2. 参数

3.3.3. 编辑crontab

3.3.4. 特殊字符

3.3.5. 例

3.3.6. 实验4

3.3.7. 实验5

3.3.8. 实验6

3.3.9. 书写定时任务的注意事项

3.4. 系统级别的计划任务


1. 场景:

生活中,我们有太多场景需要使用到闹钟,比如早上 7 点 起床,下午 4 点开会,晚上 8 点购物,等等。 在 Linux 系统里,我们同样也有类似的需求。比如我们想 在凌晨 1 点将文件上传服务器,或者在晚上 10 点确认系 统状态,等等。 但我们不可能一直守在电脑前,毕竟我们也需要下班/睡 觉,还要陪女朋友(new一个也行)。而且即使在上班期 间,如果到点了还需要人工操作,未免效率太低了。 at 命令就是为这个需求而诞生的。使用 at 命令,你可 以在特定时间自动完成你所设定的任务,也可以实现自动 化,非常方便快捷!

2. 单一执行的例行性任务--at(一次性)

2.1. 安装

at命令需要安装

[root@server ~]# yum install at -y 
[root@server ~]# at -V # 大写V 
at version 3.2.2 

启动服务

[root@server ~]# systemctl start atd 
[root@server ~]# systemctl enable --now atd # 设置开机启动 
[root@server ~]# systemctl status atd # 查看状态 

2.Linux的例行性工 作(计划任务),RHCE,linux,python,运维

2.2. at命令详解

2.2.1. 格式
at  - 参数 日期时间
2.2.2. 参数

-m:当任务完成后,即使没有标准输出,也会给用户发送邮件

-l:列出系统上所有用户的at任务,等价于atq

-d:删除或取消一个任务

-v:使用时间格式,列出at任务

-c:可以列出任务之后的命令内容

-f:从文件中读取

2.2.3. 时间格式

2.Linux的例行性工 作(计划任务),RHCE,linux,python,运维

2.2.4. 实验1

延迟执行ls /root ,并将结果写入到at.txt中

[root@server fox]# at 14:20
warning: commands will be executed using /bin/sh
at Mon Jan 22 14:20:00 2024
at> ls /root >at.txt                                                     
at> <EOT>
job 1 at Mon Jan 22 14:20:00 2024

2.Linux的例行性工 作(计划任务),RHCE,linux,python,运维

注意:删除的时候是按住ctrl+back,结束交互界面是ctrl+d

2.2.5. 实验2

不使用交互性命令实现,通过管道符命令执行

[root@server fox]# echo "echo 'hello again' >> at.txt" | at now +1 minute

2.Linux的例行性工 作(计划任务),RHCE,linux,python,运维

2.Linux的例行性工 作(计划任务),RHCE,linux,python,运维

2.2.6. 注意

1.at命令只要指定的时间正确,就可以执行对应的命令

2.at命令的输出结果不会显示到屏幕上

3.at命令中执行的命令最好使用绝对路径,不容易报错

4.过程:输入at 时间 -> 回车 ->输入执行的命令->ctrl+d退出at

5.at命令只会执行一次

2.2.7. at命令执行过程分析

第一步:寻找/etc/at.allow (白名单)是否存在,写在该 文件中用户才可执行at命令

第二步:若/etc/at.allow不存在,则寻找/etc/at.deny(黑名单)文件,写在该文件中的用户不能使用at命令

2.Linux的例行性工 作(计划任务),RHCE,linux,python,运维

第三步:若两个文件都不存在则只有root用户可以使用at命令

注意:若拒绝某用户使用at命令则可以将用户名写入到/etc/at.deny中

涉及到账号的三个文件

/etc/passwd

/etc/group

/etc/ shadow

2.2.8. 实验3

设置某账户at命令不可用

[root@server fox]# useradd cel
[root@server fox]# passwd cel
更改用户 cel 的密码 。
新的密码:                     #123
无效的密码: 密码少于 8 个字符
重新输入新的密码:              #123
passwd:所有的身份验证令牌已经成功更新。
[root@server fox]# tail -1 /etc/passwd  # 倒叙查看账户管理文件
cel:x:1001:1001::/home/cel:/bin/bash
[root@server fox]# vim /etc/at.deny

2.Linux的例行性工 作(计划任务),RHCE,linux,python,运维

2.Linux的例行性工 作(计划任务),RHCE,linux,python,运维

2.Linux的例行性工 作(计划任务),RHCE,linux,python,运维

[cel@server fox]$ su root
密码: 
su: 拒绝权限
# 安全考虑,openEuler做了用户权限切换限制,解决方法
如下:
# 重新开启一个ssh连接,以root账户登录
[root@server fox]# vim /etc/pam.d/su #注释掉这行auth required pam_wheel.souse_uid

注释该行

2.Linux的例行性工 作(计划任务),RHCE,linux,python,运维

# 保存关闭后,切换到原ssh连接
[cel@server fox]$ su root
密码: 


Welcome to 5.10.0-182.0.0.95.oe2203sp3.x86_64

System information as of time: 	2024年 01月 22日 星期一 14:55:11 CST

System load: 	0.00
Processes: 	159
Memory used: 	4.7%
Swap used: 	0%
Usage On: 	7%
IP address: 	192.168.223.129
Users online: 	3
[root@server fox]# 

2.Linux的例行性工 作(计划任务),RHCE,linux,python,运维

总结:

[root@server ~]# useradd ce1 # 新建账户
[root@server ~]# passwd ce1 # 设置密码
更改用户 ce1 的密码 。
新的密码: # 654321
无效的密码: 密码少于 8 个字符
重新输入新的密码: # 654321
passwd:所有的身份验证令牌已经成功更新。
[root@server ~]# tail -1 /etc/passwd # 倒
叙查看账户管理文件
ce1:x:1001:1001::/home/ce1:/bin/bash
[root@server ~]# vim /etc/at.deny # 设置黑
名单
ce1 # 输入
[root@server ~]# su ce1 # 切换账
户
[ce1@server root]$ cd ~
[ce1@server ~]$ at 14:36 # 测试,at
命令不可用
You do not have permission to use at.
[ce1@server ~]$ su root # 切换到root
账户
密码:
su: 拒绝权限
# 安全考虑,openEuler做了用户权限切换限制,解决方法
如下:
# 重新开启一个ssh连接,以root账户登录
[root@server ~]# vim /etc/pam.d/su #
PAM(Pluggable Authentication Modules)负责系
统中很多应用程序的登录认证,安全设置问题 
# 注释掉第21行:
# auth required pam_wheel.so
use_uid

# 保存关闭后,切换到原ssh连接
[ce1@server ~]$ su root
密码:
Welcome to 5.10.0-153.12.0.92.oe2203sp2.x86_64
System information as of time: 2023年 11月15日 星期三 13:38:45 CST
System load: 0.00
Processes: 139
Memory used: 9.8%
Swap used: 0%
Usage On: 7%
IP address: 192.168.48.130
Users online: 2
[root@server ce1]# cd ~
[root@server ~]#

3. 循环执行的例行性任务-- crontab(周期性)

3.1. crontd服务

1.at 命令是在指定的时间只能执行一次任务, crontab 命令

可以循环重复的执行定时任务,与Windows 中的计划任务

有些类似

2.crond 是 Linux 下用来周期地执行某种任务或等待处理某

些事件的一个守护进程,在安装完成操作系统后,默认会

安装 crond 服务工具,且 crond 服务默认就是自启动

的,若需要安装则执行如下命令:

[root@server ~]# yum install crontabs   #安装,注意包名 
[root@server ~]# systemctl status crond  #查看状态

2.Linux的例行性工 作(计划任务),RHCE,linux,python,运维

3.crond 进程每分钟会定期检查是否有要执行的任务,如果有,则会自动执行该任务,crontab 命令需要 crond 服务支持

4.linux 任务调度的工作主要分为以下两类:

(1)系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存

(2)个人执行的工作:某个用户定期要做的工作,例如每隔10 分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置

3.2. crontab工作过程

1.当系统中有 /etc/cron.allow 文件时,只有写入此文件的用户可以使用 crontab 命令,没有写入的用户不能使用 crontab 命令。同样,如果有此文件,/etc/cron.deny 文件会被忽略,因为 /etc/cron.allow 文件的优先级更高

2.当系统中只有 /etc/cron.deny 文件时,写入此文件的用户不能使用 crontab 命令,没有写入文件的用户可以使用 crontab 命令

3.crontab 执行的每一项工作都会被 记录到 /var/log/cron这个日志文件中

4.当用户使用 crontab 新建工作之后,该项工作就会被记录到/var/spool/cron/目录里面

3.3. crontab命令详解

3.3.1. 格式
crontab [-u user] [-l| -r | -e]
3.3.2. 参数

2.Linux的例行性工 作(计划任务),RHCE,linux,python,运维

3.3.3. 编辑crontab

格式:

[root@server fox]# crontab -e

2.Linux的例行性工 作(计划任务),RHCE,linux,python,运维

写入的命令格式:每一行书写一个工作,每个工作共有6 个字段

2.Linux的例行性工 作(计划任务),RHCE,linux,python,运维

*/5 6-8 * 8 1 /bin/bash /test.sh

8月的每个星期一的6-8点每隔5分钟执行脚本/bin/bash /test.sh

3.3.4. 特殊字符

2.Linux的例行性工 作(计划任务),RHCE,linux,python,运维

* * * * * *表示每隔一分钟更新

3.3.5. 例

2.Linux的例行性工 作(计划任务),RHCE,linux,python,运维

3.3.6. 实验4

编写脚本test1.sh

[root@server fox]# vim test1.sh

#!/bin/bash
while :
do
    echo "this is my test sh"$(date) >>  /root/cro.txt
    sleep 1
done

2.Linux的例行性工 作(计划任务),RHCE,linux,python,运维

设置循环周期性任务

[root@server fox]# crontab -e
* * * * * /bin/bash   /root/test1.sh

注意:crond服务是自动启动的,crontab命令只要保存退出后就会生效

查看任务:

[root@server fox]# crontab -l
* * * * * sh /root/test.sh

删除任务

[root@server fox]# crontab -r # 删除
[root@server fox]# crontab -l # 查看列表
no crontab for root

此实验还需终止循环进程

[root@server fox]# ps -aux | grep test1
[root@server fox]# kill 进程号
3.3.7. 实验5

让系统在每周1凌晨6点重启一次

[root@server fox]# crontab -e
0 6 * * 1 /sbin/shutdown -r now
3.3.8. 实验6

设置邮件发送告警功能,每1分钟发送一封邮件

qq邮箱设置:

2.Linux的例行性工 作(计划任务),RHCE,linux,python,运维

开启pop3/SMTP 服务:

2.Linux的例行性工 作(计划任务),RHCE,linux,python,运维

复制授权码:

2.Linux的例行性工 作(计划任务),RHCE,linux,python,运维

安装邮件服务:

[root@server ~]# yum install mailx -y

配置邮件服务

[root@server ~]# vim /etc/mail.rc
# 最后一行添加以下内容:
set from=2282475145@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=2282475145@qq.com
set smtp-auth-password=vjqqdgexmpvddiei  #授权码
set smtp-auth=login
# 注意:该文件输入完毕有的系统需要强制保存退出,输入wq!

测试邮件服务

[root@server ~]# echo "testmail" | mail - s "testmail" 2282475145@qq.com

设置定时任务

[root@server ~]# crontab -e
MAILTO=2282475145@qq.com
* * * * * echo "警告,SERVER服务器内存较低,速处理" | mail -v -s "告警邮件" 2282475145@qq.com

删除任务

[root@server ~]# crontab -r
[root@server ~]# crontab -l #查看
3.3.9. 书写定时任务的注意事项

1.6 个字段都不能为空,如果不确定则使用*表示任意时间

2.crontab命令任务的最小时间单位为分钟,最大有效时间为月,如:2024年某时执行、3点30分30秒这样的时间日期无法被识别

3.定义时间时,日期和星期最好不要一起出现,由于都是以天为单位,非常让管理员混淆

4.在定时任务中不能,不管是写命令还是在脚本中写命令,最好都用绝对路径,相对路径有时会报错

3.4. 系统级别的计划任务

crontab -e 时每个用户都可以执行的命令,但有时定时任务必须由系统执行,此时就需要编辑/etc/crontab配置文件来实现

主配置文件:

[root@server ~]# vim /etc/crontab

仅能通过root定义,不可以使用普通账户身份去执行计划

任务

方法:在/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

2.Linux的例行性工 作(计划任务),RHCE,linux,python,运维

分析

SHELL=/bin/bash : 指定系统使用那个shell解释器去执行

PATH=/sbin:/bin:/usr/sbin:/usr/bin : 系统执行命令的搜索路径

MAILTO=root : 表示执行任务的信息通过邮件发送给谁

user-name : 表示执行命令的用户是谁

例1:编写脚本testcrontab.sh,将时间写入/t1.txt文件中,每周二11点循环执行

[root@server ~]# vim testcrontab.sh
#!/bin/bash
date >> /t1.txt
[root@server ~]# vim /etc/crontab
0 11 0 0 2 root  /bin/bash   /root/testcrontab.sh

例2:每天6:00点将日志/var/log/messages 文件备份 到/backup目录中,备份后的日志文件名修改为 logfileYYYY-MM-DD-HH:MM:SS

[root@server ~]# mkdir /backup # 新建目录
[root@server ~]# vim /etc/crontab # 编辑系统
计划任务
0 6 * * * root /bin/cp   /var/log/messages   /backup/logfile`date +\%Y-\%m-\%d-\%H:\%M:\%S`
# 注意:可以使用* * * * * 进行测试
# 反引号`` 表示将引起的内容识别为命令
# 在crontab系统中%表示换行,需要增加转义符\

2.Linux的例行性工 作(计划任务),RHCE,linux,python,运维文章来源地址https://www.toymoban.com/news/detail-819999.html

到了这里,关于2.Linux的例行性工 作(计划任务)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux计划任务

    计划任务: 固定时间执行固定任务(如闹钟定时报钟) 例如:系统周期性所要执行的备份系统数据、清理缓存等。 计划任务的命令:at命令,crontab命令 at命令                     用于一次性计划任务 crontab命令            用于周期性计划任务 一、at命令 1、at命令

    2024年02月12日
    浏览(62)
  • Linux基础之计划任务

    在Linux的运维中,我们经常会使用到计划任务,所谓计划任务就是在某个时间让计算机做某件事情。我们可以将计划任务分为一次性的调度执行和循环调度执行。 一次性调度执行在实际情况中使用少于循环调度执行。在Linux操作系统中使用 at TIMESPEC 命令即可,这里的TIMESPEC指

    2024年02月13日
    浏览(40)
  • Linux——进程和计划任务管理

    个人简介:云计算网络运维专业人员,了解运维知识,掌握TCP/IP协议,每天分享网络运维知识与技能。 座右铭:海不辞水,故能成其大;山不辞石,故能成其高。 个人主页:小李会科技的主页 目录 程序和进程的关系  命令总结 进程的启动方式 快捷键的讲解 程序和进程的关

    2024年02月05日
    浏览(51)
  • linux 管理进程和计划任务

    目录 一、进程原理 二、进程工作过程 三、进程类型 四、管理进程 五、前后台调度 六、定时任务 七、管理定时任务                 一、进程原理 进程:指正在运行的程序称之为进程 程序:指的是没有运行的代码 线程:真正的执行者,是复制了一部分进程的代码,可以

    2024年02月03日
    浏览(92)
  • Linux 进程和计划任务管理

    保存在硬盘、光盘等介质中的可执行代码和数据· 文件中静态保存的代码 在CPU及内存中运行的程序代码 动态执行的代码 父、子进程         每个程序可以创建一个或多个进程 load average: 0.00, 0.01, 0.05      系统平均负载  1分钟 5分钟 15分钟 查看 load average 的命令有:top  w

    2024年04月23日
    浏览(42)
  • Linux程序、进程和计划任务

    目录 一.程序和进程 1.程序的概念 2.进程的概念 3.线程的概念 4.单线程与多线程 5.进程的状态 二.查看进程信息相关命令: 1.ps:查看静态进程信息状态 2.top:查看动态进程排名信息 3.pgrep:查看指定进程  4.pstree:以树形结构列出进程信息  6.iostat:显示所有设备负载情况  三

    2024年01月19日
    浏览(49)
  • Linux计划任务(Cron):小白完全指南

    在Linux系统中,计划任务(Cron)是一种强大的工具,可以自动执行预定的任务。它非常适合定期运行脚本、备份数据、清理临时文件等一系列重复性任务。本文将向您介绍如何使用Cron来安排和管理计划任务,以帮助小白用户轻松上手。 一、了解基本概念 Cron表达式:Cron使用

    2024年02月07日
    浏览(49)
  • Linux--crontab命令详解--循环执行的计划任务

    循环执行任务是由cron(crond)这个系统服务来控制的。用户想要建立循环的计划任务时,使用的是crontab这个命令,为了避免安全性的问题,和at一样,我们可以限制使用crontab的账号,可以使用的配置文件有: /etc/cron.allow 将可以使用crontab的账号写入,不在这个文件中的账户则不能使用cr

    2024年02月16日
    浏览(47)
  • Django-linux主机计划任务查看服务

    目录 需求 功能介绍 页面效果 代码编写 docker部署   线上主机一百台左右,经常会在某个服务器上放置一些自动化脚本,并配置计划任务,时间长可能忘记计划任务所在服务器,所以开发一个用于收集展示crontab任务的服务 python3.9 / Django 模块:Django~=4.2.3、paramiko~=3.2.0 版本别

    2024年02月16日
    浏览(30)
  • 【运维】Linux定时任务 定时执行脚本

    五分钟执行一次sh脚本 进入编辑页面 crontab -e 按Insert   进行编辑  # 每两分钟执行一次 */2 * * * * /usr/local/start.sh 依次按 :wq 进行保存  即时生效 重启 #设定crond服务为开机自启动 接下来,在介绍 crontab 命令。该命令和 at 命令类似,也是通过 /etc/cron.allow 和 /etc/cron.deny 文件来限

    2024年02月10日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包