首页 > 系统相关 >Linux计划任务

Linux计划任务

时间:2024-08-01 20:06:06浏览次数:14  
标签:tmp 10 20 任务 计划 Linux date root crond


计划任务

类型:
一次性计划任务
周期性计划任务

一次性计划任务

前提: atd服务必须运行

at -c : 查看计划任务的具体内容

[root@www Packages]# yum install -y at  ----安装atd服务

[root@www ~]# systemctl start atd   ------启动atd服务

[root@test01 ~]# systemctl status atd  ----查看atd服务状态
● atd.service - Job spooling tools
   Loaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)
   Active: active (running) since 五 2017-02-17 17:26:29 CST; 3h 57min ago
 Main PID: 1269 (atd)
   CGroup: /system.slice/atd.service
           └─1269 /usr/sbin/atd -f

2月 17 17:26:29 localhost.localdomain systemd[1]: Started Job spooling tools.
2月 17 17:26:29 localhost.localdomain systemd[1]: Starting Job spooling tools...


[root@test01 ~]# systemctl is-active atd.service 
active    ----活跃的

制订一次性计划任务

1.date : 查看系统时间

[root@localhost ~]# date 
Wed Mar 13 04:05:17 EDT 2024

[root@fenglei ~]# date +%h             
3月
[root@fenglei ~]# date +%m           ----查看月份
03

[root@fenglei ~]# date +%T			----查看具体时间
19:42:23
[root@fenglei ~]# date +%H v         ----查看时间
19                                 


[root@fenglei ~]# date +%m-%T        ----查看月份和时间
03-19:36:48


[root@localhost ~]# date +%Y-%m-%d    -----查看年月日
2024-03-13
[root@localhost ~]# date +%Y-%m-%d-%T
2024-03-13-04:10:28

2.修改时间

修改时间:
月日时分年

[root@localhost ~]# date  031510102024
Fri Mar 15 10:10:00 EDT 2024
[root@localhost ~]# date  31510102024
date: invalid date ‘31510102024’
[root@localhost ~]# date  031510102024

3.制定一次性任务

# at <TIME>

1.在2024年3月14日20:52 创建2052.txt文件

[root@VM-0-10-centos ~]# date
Thu Mar 14 20:47:31 CST 2024
[root@VM-0-10-centos ~]# at 20:52
at> touch 2052.txt<EOT>
job 12 at Thu Mar 14 20:52:00 2024

(按ctrl+D提交任务,而ETO>表示已经提交任务)

2.从现在开始后的一分钟创建/tmp/aaaa目录
[root@localhost ~]# at now + 1 minute
at> mkdir /tmp/aaaa
at> <EOT>
job 2 at 2016-11-20 13:16

删除at任务
[root@www ~]# atrm  2   ---作业号
[root@www ~]# at -d 3

查看at任务
[root@www ~]# at -l
2	Fri Nov 10 11:26:00 2017 a root

at计划任务的保存位置
/var/spool/at/

周期性计划任务

1.什么是crontab?

Crontab 是一个在 Unix 和 Linux 操作系统上用于定时执行任务的工具。它允许用户创建和管理计划任务,以便在特定的时间间隔或时间点自动运行命令或脚本。Crontab 是 cron table 的缩写,cron指的是 Unix 系统中的一个后台进程,它用于执行预定的任务。

2.安装crontab服务

一般情况下crond服务在安装系统的时候会被默认安装,并自动运行。

centos 或者红帽系统下检查服务是否安装

安装crond:
[root@fenglei ~]# yum -y install crontabs

启动crond服务:
[root@fenglei ~]# systemctl status crond

关闭crond服务:
[root@fenglei ~]# systemctl stop crond

crond设置开机自启动:
[root@fenglei ~]# systemctl enable crond




前提: crond服务必须运行 

[root@test01 ~]# systemctl status crond
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since 五 2017-02-17 17:26:29 CST; 4h 1min ago
 Main PID: 1267 (crond)
   CGroup: /system.slice/crond.service
           └─1267 /usr/sbin/crond -n

3.**制订周期性计划任务 *

# crontab -e 

    时间            COMMAND命令 

查看crontable文件

[root@fenglei ~]# 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


第一行 SHELL 变量指定了系统要使用哪个 shell,这里是 bash

第二行 PATH 变量指定了系统执行命令的路径

第三行 MAILTO 变量指定了 crond 的任务执行信息将通过电子邮件发送给 root 用户(如果 MAILTO 变量的值为空,则表示不发送任务执行信息给用户)

最后一行是 Crontab 的条目,基本格式如下:

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

其中,星号代表通配符,表示可以匹配任何值。每个星号代表不同的时间单位:

第一个星号表示分钟(0-59)
第二个星号表示小时(0-23)
第三个星号表示一个月中的某一天(1-31)
第四个星号表示月份(1-12或者用缩写,如1表示一月,2表示二月)
第五个星号表示星期几(0-7或者用缩写,0和7都表示星期日,1表示星期一,以此类推)

注意:
#周和日最好不要同时用
#定时任务一定会是绝对路径






# crontab -e 

    时间            COMMAND命令 


时间:
    分  时  日   月   周 

    分钟:0----59 
    时:  0----23
    日期:1----31
    月:  1----12
    周:  0----6    7

示例:

每天晚上11:30       30  23 * * * 

每天零点             0 0 * * * 

每周五下午4点整      0 16 * * 5 

连续的时间           5 8-14 * * * 

不连续的时间         5 8,10,12 * * * 

每5分钟             */5 * * * * 

*/5 * * * *  date >> /tmp/date.txt  每5分钟一次
00 10 * * *  date >> /tmp/date.txt  每天的10点
20 10 * * *  date >> /tmp/date.txt  每天10点20
20 10 10 * *   date >> /tmp/date.txt 每月的10号的10点20
20 10 10 10 *  date >> /tmp/date.txt 每年10月10号10点20
20 10 10 10 7  date >> /tmp/date.txt 每个周日或者每年的10月10号10点20分
20 10,15,20 10 * *  date >> /tmp/date.txt 每月10号10点,15点,20点的20分
20 10,15,20 10-15 * *  date >> /tmp/date.txt 每月10号到15号的10点,15点,20点的20分
10,20,30 10 10-15 * *  date >> /tmp/date.txt 每月10号到15号的10点的10分,20分,30分

50 23 * * * 

COMMAND命令:
    1   建议写命令的完整路径 /bin/mkdir /abc
    2   只能写一条命令(shell脚本)
    
    
    
    



首先运行 crontab -e 的命令:

示例: 每5分钟在/tmp目录创建当时时间的日志文件 

[root@localhost ~]# crontab -e
*/5 * * * * touch /tmp/file-$(date +\%Y\%m\%d\%H\%M\%S) 
保存并退出编辑器

示例:每个月15号,30号的8点30分,13点50分在/var/dir1目录创建一份日志文件
crontab -e
30 8 15,30 * * touch /var/dir1/log_$(date +\%Y\%m\%d_\%H\%M).txt
50 13 15,30 * * touch /var/dir1/log_$(date +\%Y\%m\%d_\%H\%M).txt

注意:
	# 写命令时%在周期性计划任务中是结束的意思,因此在使用%时,需要加\右斜杠转义 
	# &> /dev/null	不给用户发送邮件 
	# %T :时间,等于%H:%M:%S
	# %F :日期,等于%Y-%m-%d


示例:每半个小时分别显示内存,CPU、磁盘使用状态信息  	
	
(1) 创建脚本文件  
#!#bin/bash
echo "内存剩余容量为:"
free -m  |grep Mem | awk -F" " '{print $4}'

echo "磁盘剩余容量为:"
df -Th | grep sda3 |awk -F" " '{print $5}'

echo "系统平均负载:"
echo "一分钟负载为:"
        uptime  | awk -F":" '{print $5}' |cut -d, -f 1
echo "五分钟负载为:"
        uptime  | awk -F":" '{print $5}' |cut -d, -f 2
echo "十五分钟负载为:"
        uptime  | awk -F":" '{print $5}' |cut -d, -f 3
        
  [root@localhost tmp]# crontab -l
*/1 * * * * /bin/bash /tmp/test.sh   >>  /tmp/test.txt      
--------------------

脚本2:
[root@localhost tmp]# cat system.sh 
#!/bin/bash


echo "内存使用情况:"

free -m

echo  "cpu使用情况:"

lscpu |grep  CPU\(s\) |head  -1

echo "硬盘使用情况: "

df -Th



(2)编辑计划任务 

[root@test01 ~]# crontab -e
*/1 * * * * /bin/bash /tmp/1.sh   >>  /tmp/test.txt &> /dev/null


删除周期性计划任务

# crontab -r 			>>> 会删除所有计划任务

作业:备份etc目录,要求:

  1. 每两分钟备份/etc目录到/tmp/back
    # crontable -e
    # */2 * * * * rsync -avz /etc/ /tmp/back

    rsync   -----用于文件和目录的快速、可靠的远程同步和备份。
    
  2. 每天备份的文件名包含当天的日期,如2016-03-09_etc.tar.gz

    先写个脚本

    !/bin/bash

    backup_dir="/tmp/back"
    date_format=$(date +%Y-%m-%d)
    backup_file="${backup_dir}/${date_format}_etc.tar.gz"

    rsync -avz /etc/ "${backup_dir}/"

    然后清理旧的备份文件,保留最近7天的备份

    find "${backup_dir}" -name "*.tar.gz" -type f -mtime +7 -delete

    最后将以上脚本保存为backup.sh文件,并赋予执行权限,就可以执行shell

    chmod +x backup.sh
    crontab -e
    */2 * * * * sh backup.sh

标签:tmp,10,20,任务,计划,Linux,date,root,crond
From: https://www.cnblogs.com/fenglei7093/p/18337402

相关文章

  • Linux文件查找、打包压缩
    一、文件查找1、which/whereis/whatiswhich只能查询命令[[email protected]~]#whichrpmwhereis可以查询命令和配置⽂件的位置[[email protected]~]#whereisrpm[[email protected]~]#whereispasswdwhatis[[email protected]~]#whatisrpm和下⾯命令⼀样的效果,查询rpm命令......
  • 【nginx网站部署】【nginx部署网站】【linux-nginx】静态页面部署 静态网站部署 nginx
    ============================================第一步:安装:===============================1、安装:sudoapt-getinstallnginx 输入y2、测试是否成功: sudonginx-t 输出: nginx:theconfigurationfile/etc/nginx/nginx.confsyntaxisok nginx:config......
  • 解决飞书 Linux 在屏幕分享时候的回音问题
    问题在Linux桌面环境中使用飞书时,有一个十分诡异的现象:触发条件:使用飞书会议;自己进行屏幕分享;自己没有mute,即自己没有关闭麦克风。现象:其他人讲话时会听到他自己的回音;我自己听到的声音则是正常的。我的使用环境:飞书版本:7.18.11Debian12+KDE+Wayland+Pi......
  • 为团队配置Linux环境,简单高效的项目共享方案
    前言最近好久没写博客了,事情太多了,我还搞了个新的好玩的项目,等后续做得差不多了来写篇文章介绍一下。在我们目前的AI项目中,团队需要共同使用一台GPU服务器来做模型训练和数据处理。为了让每个团队成员都能高效地使用这台服务器,我们决定设置一个多用户共享环境。这样,无论是代码开......
  • 检测Linux服务器CPU、内存、负载、IO读写、机房带宽和服务器类型的脚本
    脚本内容:#!/usr/bin/envbash####RED='\033[0;31m'GREEN='\033[0;32m'YELLOW='\033[0;33m'SKYBLUE='\033[0;36m'PLAIN='\033[0m'about(){ echo"" echo"=============================......
  • 每天学一个 Linux 命令(17):chmod
    命令简介chmod命令用来变更文件或目录的权限。文件或目录权限有读取、写入、执行这3种,另外还有3种特殊权限。用户可以使用chmod去设置文件与目录的权限,设置方式采用文字或数字皆可。链接文件的权限无法直接变更,如果用户需要对链接文件修改权限,其真实作用是作用在原始文件上。......
  • Linux操作系统基础学习笔记(4)
    Linux操作系统基础学习笔记(4)前言4、Linux文件和目录管理常规命令格式(1)列出目录内容和属性(文件)(2)打印工作路径(3)切换工作路径(4)查看文件类型(5)复制文件或目录(6)查找文件或目录(7)创建目录(8)移动或重命名(9)删除文件(不能用来删除文件夹)(10)创建空文件(11)挂载(12)链接(有点像windows的快捷......
  • 伯克利Linux系统管理:基本命令与技巧 课堂与实验(系统简洁保姆级学习)
    目录一、前言:二、学习内容:2.1上课内容2.2实验内容三、问题描述四、解决方案:4.1进入目录并确认你的所在目录4.2目录中有一个隐藏文件,隐藏文件的秘密是什么?4.3一个消息拆分在所有文件中怎么找到这个消息?4.4用一个命令删除目录所有内容?4.5怎么在不打开文件情况下读取......
  • Metasploit Pro 4.22.2-2024072501 (Linux, Windows) - 专业渗透测试框架
    MetasploitPro4.22.2-2024072501(Linux,Windows)-专业渗透测试框架Rapid7Penetrationtesting,releaseJul25,2024请访问原文链接:https://sysin.org/blog/metasploit-pro-4/,查看最新版。原创作品,转载请保留出处。世界上最广泛使用的渗透测试框架知识就是力量,尤其是......
  • C# & Unity 面向对象补全计划 之 接口
    本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正本系列旨在通过补全学习之后,给出任意类图都能实现并做到逻辑上严丝合缝1.接口在C#中,接口(interface)是一种定义了一组方法、属性和事件的类型接口只包含成员的声明,而不包含任何实现,实现接口的类必须......