Linux计划任务书以及定时任务的编写

一、程序可以通过两种方式执行:

  1. 手动执行
  2. 利用调度任务,依据一定的条件自动执行

自动执行可通过一下两个命令来实现:

(1)At (单一工作调度)

(2)Cron (循环工作调度)

二、At

  1. 功能:依据预先定义好的时间,执行指定进程,但只执行一次
  2. 语法格式:at [选项] [time]
  3. 参数:-c → 可以列出后面接的该项工作的实际明林内容

-l → 列出目前系统上面所有该用户的at调度

4.at的守护进程:atd

5.查看、启动、关闭atd

#systemctl stop atd

#systemctl start atd

#systemctl restart atd

#systemctl status atd

6.at是个一次性的计划任务。at的执行主要依靠系统服务atd。系统中有两个文件/etc/at.allow和/etc/at.deny,这两个文件规定了系统谁可以使用at,谁不可以使用at.

7、如果两个都存在只检查/etc/at.allow, 只有在/etc/at.allow中规定的用户才可以使用,即采用执行大于 禁止的原则。

8、如果只有/etc/at.deny存在,每个不在该文件中用户都可以使用。

9、如果两个都不存在,只有超级用户可以使用

三、at可接受的时间格式:

1、日期:

MM/DD/YY

MMDDYY

DD.MM.YY

2、时间:

HH:MM

HH:MMam

HH:MMpm

3、特殊日期:

Midnight(0am)

noon(12am)

Teatime(4pm)now(现在)

now + N(minutes,hours,day,weeks)

4、时间输入规范:

(1)只输入时间。不输入日期,会被当作是今天的某一时刻。

(2)如果只输入日期,不输入时间,会被认为是被输入日期的现在这个时刻。

(3)支持输入一个完整的时间

5、示例:

(1)晚上十一点重启:

#at 23:00

at>reboot

Ctrl D

(2)时间格式范例:

#at 23:00

#at 12/31/18

#at 23:00 12/31/18

#at noon

#at 0:00pm 12/31/18

#at teatime +30 minutes

#at 4:00pm +4 days

#at now + 4 weeks

四、at队列管理

1、at编辑后,将进入队列中。由atd服务扫描任务并等待任务的执行,at队列所在文件:/var/spool/at

2、命令:atq

功能:查看at队列

语法结构:atq [选项]

3.命令:atrm

功能:删除at队列中的指定任务

语法格式:atrm [队列ID]

4.示例:

1)查看at队列

#atq

2)看at队列中任务一的内容:

#at -c 1

3)删除at队列中的任务2

#atrm 2

五、cron

1、命令:crontab

2、功能:实现周期性计划任务的执行

3、语法格式:crontab [选项]

4、参数:-l → 查看cron计划任务列表

-e → 以默认文本编辑器,编辑cron计划任务列表

-r → 删除cron计划任务列表

-u → 指定用户。如果不指定用户,-l,-e,-r都认为是对当前用户操作。

  1. cron的守护进程是crond

6、cron编辑的格式

1)shell及mail格式定义:(查看crontab文件:cat /etc/crontab)

SHELL=/bin/bash

SHELL是指定处理计划任务的命令是由那个shell来执行

MAILTO=root

MAILTO是指定计划任务运行完成或运行遇到障碍,都会发 邮件给某个用户,给以提示

2)时间格式定义 (记忆口诀:分、时、日、月、周)

注:星期中,0、7同样表示周日

如图:

crontab文件中的时间格式及 "*"在时间格式中所代表的含义

第一列,代表每一分钟(minute 0-59)

第二列,代表每一小时(hour 0-23)

第三列,代表一个月中的每一天(day of month 1-31)

第四列,代表一年中的每个月 (month 1-12)

第五列,代表一个星期中的每一天 (day of week 0-6)

注:日月周不能同时出现

3)特殊时间格式定义

"*/5":表示每隔5分钟可在第一列写成

4)cron编辑的格式

每隔一分钟向所有用户广播一次 hahaha

7、cron编写任务

使用 "#crontab <参数>"命令格式进行编写任务操作

示例:1)、以当前账户创建cron计划任务

#crontab --e

2)、以指定用户创建其cron计划任务(仅在root下执行)

#crontab -e -u <用户名>

3)、以指定文件作为计划任务的要求

#vim newcron

#crontab newcron

或#crontab -u <用户名> newcron

4)、查看当前使用账户的cron任务队列

#crontab -l

8、cron编写任务路径

/etc/cron.tab 系统计划任务表及说明

/etc/cron.d 特定的系统计划任务表

/etc/cron.hourly 系统每小时要运行的计划任务

/etc/cron.daily 系统每天要运行的计划任务

/etc/cron.weekly 系统每星期要运行的计划任务

/etc/cron.monthly 系统每月要运行的计划任务

注:在/etc/cron.d/0hourly 文件中,规定run-parts命令来执行目录的脚本文件

如图

按照每天 每周 每月执行的时间点

IPC

进程间的通信方式

1、管道 :

1)单向的、先进先出的、无结构的、固定大小为4K的字节流

2)它把一个进程的标准输出和另一个进程的标

准输入连接在一起。

3)写进程在管道的尾端写入数据,读进程在管 道的首端读出数据。

4)数据读出后将从管道中移走,其它读进程都 不能再读到这些数据。

5)管道提供了简单的流控制机制

2、信号

两个进程之间的通信就会产生信号,进程还可以发送信号给进程 本身

3、socket (套接字)

为一般的进程间通信机制,可用于不同机器之间的进程间通信。

4、消息队列 (报文队列)

消息队列是消息的链接表,包括 Posix 消息队列 system V 消息队列。有足够权限的进程可以向 队列中添加消息,被赋予读权限的进程则可以读 走队列中的消息。消息队列克服了信号承载信息 量少

5、信号量:

主要作为进程 间以及同一进程不同线程之间的同步手段。

6、有名管道:无大小限制,相当于两个bash之间的通信,无亲缘关系的通信

内存溢出:开发人员开发软件的时候限制软件占内存的大小,打开后实际占用内存大于规定的

内存抖动:由于系统内存不足,进程在内存与虚拟内存之间来回切换,造成的主机卡顿

内存泄露:运行程序打开后占一定内存,关闭之后依然还在占用内存,然后用户再重新打开又占一定的内存,如此造成实际内存减小

相关推荐
荒川之神5 分钟前
ORACLE _11G_R2_ASM 常用命令
数据库·oracle
IT培训中心-竺老师11 分钟前
Oracle 23AI创建示例库
数据库·oracle
二十雨辰18 分钟前
[linux]docker基础
linux·运维·docker
小白学大数据29 分钟前
JavaScript重定向对网络爬虫的影响及处理
开发语言·javascript·数据库·爬虫
time never ceases1 小时前
使用docker方式进行Oracle数据库的物理迁移(helowin/oracle_11g)
数据库·docker·oracle
Frank牛蛙1 小时前
1.每日SQL----2024/11/7
数据库·sql
饮浊酒1 小时前
Linux操作系统 ------(3.文本编译器Vim)
linux·vim
Ciderw1 小时前
块存储、文件存储和对象存储详细介绍
网络·数据库·nvme·对象存储·存储·块存储·文件存储
薛晓刚1 小时前
数据库优化指南:如何将基本功能运用到极致?
数据库
stars_User1 小时前
MySQL数据库面试题(下)
数据库·mysql