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

Linux常见定时任务命令 系统级别的定时任务

目录

Linux常见定时任务命令

crontab命令

命令简介

命令选项

使用方法

注意事项

at命令

命令简介

命令选项

时间设置方式

使用方法

Linux查看与删除系统级别计划任务

计划任务的类型及对应查看和删除方法

一次性任务

周期性任务

注意事项


Linux常见定时任务命令

在Linux系统中,定时任务是系统管理的重要组成部分,它允许管理员或用户安排任务在特定时间自动执行。常见的定时任务命令有 crontabat,以下为你详细介绍:

crontab命令

命令简介

crontab 是一个常用的定时任务管理工具,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于crontab文件中,以供之后读取和执行。通常,crond 守护进程会在后台运行,每分钟检查是否有预定的作业需要执行 。

命令选项

  • -u:指定一个用户。
  • -l:列出某个用户的任务计划。
  • -r:删除某个用户的任务。
  • -e:编辑某个用户的任务 。

使用方法

  1. 编辑crontab文件:使用 crontab -e 命令来编辑当前用户的crontab文件,在编辑器中,可以添加、删除或修改定时任务 。
  2. 添加定时任务:在crontab文件中,每行代表一个定时任务,格式为 分 时 日 月 周 要执行的命令。例如,要在每天凌晨2点执行 /root/backup.sh 脚本,可以添加如下内容:0 2 * * * /root/backup.sh
  3. 查看任务列表:使用 crontab -l 命令可以列出当前用户的所有定时任务 。
  4. 删除任务:使用 crontab -r 命令可以删除当前用户的所有定时任务。

注意事项

  • 如果使用 crontab 来定时执行脚本,无法执行,但直接通过命令(如 ./test.sh )又可以正常执行,这主要是因为无法读取环境变量的原因。解决方法有:所有命令需要写成绝对路径形式;在shell脚本开头添加相关代码;在 /etc/crontab 中添加环境变量,在可执行命令之前添加命令 ./etc/profile;/bin/sh,使得环境变量生效 。
  • 每条任务调度执行完毕,系统都会将任务输出信息通过电子邮件的形式发送给当前系统用户,日积月累,日志信息会非常大,可能会影响系统的正常运行,因此,将每条任务进行重定向处理非常重要。例如,可以在crontab文件中设置如下形式,忽略日志输出:/dev/null 2>&1

at命令

命令简介

at 命令用于设置在某个特定的时间点执行一次性的任务 。

命令选项

  • -m:当指定的任务被完成之后,将给用户发送邮件,即使没有标准输出。
  • -f:从指定文件读入任务而不是从标准输入读入。
  • -t:以时间参数的形式提交要运行的任务 。

时间设置方式

  • 绝对时间
    • hh:mm:小时:分钟(当天,如果时间已过,则在第二天执行)。
    • midnight:深夜。
    • noon:中午。
    • teatime:下午茶时间(下午4点)。
    • today:今天。
    • tomorrow:明天。
    • 指定具体执行日期:mm/dd/yy(月/日/年)或 dd.mm.yy (日.月.年)。
  • 相对计时法now + n unitsnow 是现在时刻,n 为数字,units 是单位(minuteshoursdaysweeks) 。

使用方法

例如,要在明天17点钟,输出时间到指定文件内,可以使用以下命令:

at 17:00 tomorrow 
at> date > /tmp/time.log  
at> <EOT>  # 按下 Ctrl + D 发起执行

在任务设定后,在没有执行之前可以用 atq 命令来查看系统没有执行的工作任务 。

Linux查看与删除系统级别计划任务

计划任务的类型及对应查看和删除方法

在Linux系统中,计划任务主要分为一次性任务和周期性任务,二者的查看和删除方式有所不同:

一次性任务

一次性任务使用at命令进行管理。

  • 查看一次性任务:可以使用at -latq命令来查看系统中所有的一次性计划任务,执行后会显示任务编号和执行时间等信息。例如:
[root@ken~]# at -l 
1 Fri Mar 1 10:00:00 2019 a root
  • 删除一次性任务:使用atrmat -d加上要删除的任务编号来删除指定的一次性计划任务。比如要删除编号为1的任务,可执行以下命令:
[root@ken~]# atrm 1 
# 或者 
[root@ken~]# at -d 1

周期性任务

周期性任务使用crontab命令管理,系统级别的周期性任务配置通常在/etc/crontab文件中,同时也有与cron相关的目录(如/etc/cron.hourly/etc/cron.daily/etc/cron.weekly/etc/cron.monthly )用于存放不同周期执行的脚本。

  • 查看周期性任务
    • 查看当前用户的周期性任务:使用crontab -l命令。
    • 查看系统级别的周期性任务:直接查看/etc/crontab文件的内容,可使用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 
01 * * * * root run-parts /etc/cron.hourly
  • 删除周期性任务
    • 通过编辑crontab文件删除
      • 备份当前的crontab文件,避免误操作导致数据丢失:crontab -l > /tmp/crontab.txt
      • 使用crontab -e命令编辑当前用户的crontab文件,删除对应的任务行;若要编辑系统级别的任务,则编辑/etc/crontab文件(不建议直接修改,可能影响系统稳定性)。
      • 重新加载修改后的crontab文件,使用crontab /tmp/crontab.txt (如果是修改的当前用户的crontab)。
    • 使用sed命令删除:若想删除包含特定关键字的任务,可以使用sed命令。例如删除包含myscript.sh 的任务:
sed -i '/myscript.sh/d'  /tmp/crontab.txt  
crontab /tmp/crontab.txt
- **删除整个`crontab`任务列表**:使用`crontab -r`命令可以删除当前用户的所有周期性计划任务。

注意事项

  • 在删除系统级别计划任务时要格外谨慎,因为这些任务通常对系统的正常运行至关重要,误删可能导致系统出现故障。
  • 每次修改计划任务后,建议查看任务是否按预期被删除或修改,可再次使用相应的查看命令进行确认。

http://www.kler.cn/a/619495.html

相关文章:

  • Redis部署详细步骤
  • WPF 自定义行为AssociatedObject详解
  • 【CSS】解决因float而导致的父类塌陷问题
  • UE4学习笔记 FPS游戏制作30 显示击杀信息 水平框 UI模板(预制体)
  • 蓝桥杯嵌入式十六届模拟三
  • PHP回调后门小总结
  • ubuntu 安装 postgresql
  • 微前端深度解析:架构演进与实践全景
  • 爬虫学习-爬取古诗
  • 宝塔面板面试内容整理-支持的操作系统
  • VUE3 路由传参
  • Ubuntu20.04系统安装IsaacSim4.5与IsaacLab环境
  • NoSQL 数据库深度解析与 20 款产品对比
  • Kubernetes》》k8s》》Replication Controller
  • 【Linux】嵌入式Web服务库:mongoose
  • VS2022 Qt 项目使用数据库报错问题
  • AWS云安全全面详解:从基础防护到高级威胁应对
  • 基于FPGA的智能垃圾分类装置(论文+源码)
  • 服务器是指什么,都有哪些用途?
  • 海康巴斯勒工业相机图像效果差异分析