Linux例行工作

Linux例行工作,第1张

Linux例行工作

目录

例行工作分类

单一执行的例行工作:atd

循环执行的例行工作

系统例行工作 


例行工作分类

例行工作:定时任务,设定时间去执行任务。

单一执行的例行工作:人物规定的时间值执行一次 atd

循环执行的例行工作:按照一定的周期去执行 crond

atd和ceond这两个服务默认都是启动的

单一执行的例行工作:atd

at命令 *** 作,这是一个交互式的命令。at命令将会将例行工作写入/var/spool/at目录

设置的是在未来某个时间点去执行这个例行工作,需要等待这个设置的时间,然后又取用和执行我们的例行工作。

at设置权限:设置 那些用户可以使用at进行设置例行工作,默认这只会有at.deny

                        /etc/at.allow:设置允许的用户,默认不存在,如果要设置,需要手动建立

                        /etc/at.deny:设置拒绝用户

读取方式:先读取at.allow(设置允许用户),如果没有at.allow这个文件再读取at.deny(设置拒绝

                  的用户),如果两个文件都不存在,只有root用户可以

如何去设置例行工作:at命令

at [-mldv] TIME

-m: Send mail to the user when the job has completed even if there was no output
    当任务执行完成之后,发送邮件给用户,即使没有输出
-l:   Is an alias for atq => atq命令的别名
      atq:  lists the user's pending jobs 列出待执行任务
-d: Is an alias for atrm  : atrm的别名
      atrm: at rm => 删除的命令: deletes jobs, identified by their job number 删除例行工作 通过工作编号
-v: Shows the time the job will be executed before reading the job
    展示在读取工作之前工作将要被执行的时间
-c: cats the jobs listed on the command line to standard output. # 列出例行工作到标准输出
-f: file Reads the job from file rather than standard input: 从文件读取例行工作


TIME: TIME的格式
HH:MM 小时:分钟 : 在某一天的哪个时间点去执行
midnight, noon, teatime: 半夜,中午,下午4点
8AM, 4PM: 上午8点,下午4点
MMDD[CC]YY, MM/DD/[CC]YY, DD.MM.[CC]YY or [CC]YY-MM-DD
MMDDYY, MM/DD/YY DD.MM.YY YY-MM-DD
now + count time-units: now + 4 minutes 
                         单位可以有分钟(minutes),小时(hours),天(days),周(weeks)
today tomorrow
样例:
at 4pm + 3 days
at 10am Jul 31
at 1am tomorrow


使用:
at 交互式的命令
at now + 3 minutes # 按回车键
> #要输入的就是要执行例行工作
> echo "123456" > /root/at_task
> #怎么去结束crtl + d

[root@localhost etc]# at now + 3 minutes
warning: commands will be executed using /bin/sh
at> echo "123456" > /root/at_task/    
at> 
job 1 at Sat Jan 15 21:56:00 2022
[root@localhost etc]# 
[root@localhost etc]# at - c1             //状态查询
syntax error. Last token seen: -      
Garbled time

例子:

[root@localhost etc]# echo "123" > /dev/pts/2
[root@localhost etc]# at now + 2 minutes
warning: commands will be executed using /bin/sh
at> echo "123" > /dev/pts/2
at> 
job 2  at Sat Jan 15 22:05:00 2022
循环执行的例行工作

对应的系统服务是crond,这个服务安装完系统就存在的。

也有配置文件来限制使用crond这个服务的用户:/etc/cron.deny/etc/cron.allow

        /etc/cron.allow:文件不存在,若果想要应用,手动去创建,哪些用户可以使用

        /etc/cron.deny:文件存在,直接就可以,那些用户不可以使用

可以使用crontab这个命令来设置循环例行工作,及建立例行工作之后会被西而入到/var/spool/cron/,所以用户来警醒区分的。

crontab命令 

crontab [-u user] [-l | -r | -e] 
-u:只有root才能进行这个任务,帮某个用户新建/删除crontab
-e:编辑crontab的工作内容
-l:查阅crontab的工作内容
-r:删除所有的crontab的工作内容

crontab -e: 编辑的时候,文件中写入的格式

总共6个字段: 前五个字段是设置周期,最后一个字段是要执行的任务
分钟 小时 天 月 星期  command(命令)

 

设置的时候,如果哪个不写的话,使用 * 来代替
星期的0-7: 其中0和7都代表周日
特殊符号:
* : 代表所有
, : 假设小时字段 1,2,3,5,11 => 会在一天里边的 1点,2点,3点,5点,11点去执行例行工作
- : 范围  小时: 1-4 =》代表就是一天中1点到4点去执行例行工作
/ : 代表的是频率: 分钟  */15 => 每15分钟执行一次 =》 /数字

 例子

闹钟:每周的周一到周五早上9点 执行叫我起床的任务
星期:周一到周五
月份: 无关
日期: 无关
小时: 9
分钟: 0

执行的任务:echo "叫我起床" > /root/cron_task
0 9 * * 1-5 echo "叫我起床" > /root/cron_task

[root@bogon ~]# cd /etc/ssh/
[root@bogon ssh]# vim sshd_config
[root@bogon ssh]# su -
[root@bogon ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@bogon ~]# crontab -l
0 9 * * 1-5 echo "jiaowoqichuang" > /rooot/cron_task

[root@bogon ~]# cd /var/spool/cron/
[root@bogon cron]# ls
root
[root@bogon cron]# ls -l
total 4
-rw-------. 1 root root 54 Jan 16 01:30 root
[root@bogon cron]# more root
0 9 * * 1-5 echo "jiaowoqichuang" > /rooot/cron_task

[root@bogon cron]# 

系统例行工作 

vim /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

crontab -e:  现在使用的是哪个用户就为哪个用户创建
crontab -u sshuser -e: root用户为sshuser创建
系统任务
* * * * * username command 
username: 代表哪个用户去执行后边的任务
如果要执行多个任务,可以把执行的脚本文件,放入一个目录中,然后run-parts 目录
0 9 * * * sshuser  run-parts  /root/cron_script
每天早上9点sshuser去执行 /root/cron_scripts/所有的脚本

定时任务常用的场景: 在每天系统负荷最小的时候(业务量比较少的时候), 凌晨3-4业务量比较少的时候,执行一些统计工作,或者清理工作。临时的日志,临时的缓存文件。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5714638.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存