Linux从入门到精通(十一)——计划任务

简介: Linux从入门到精通(十一)——计划任务

image.png

计划任务

在很多时候为了自动化管理系统,我们都会用到计划任务,比如关机,管理,备份之类的操作,我们都可以使用计划任务来完成,这样可以是管理员的工作量大大降低,而且可靠度更好。 Linux 系统支持一些能够自动执行任务的服务,我们称为计划任务。

什么是计划任务:

配置在指定时间,指定的日期执行预先计划好的任务(例如:备份,广播 )

一、周期性

crond服务需启动

1. crontab 命令

crontab [-选项]

-l:列举当前用户计划任务

-e:编辑计划任务(vi编辑),不建议

-r:删除计划任务

-u:指定用户,发布计划任务(只能root来执行)

补充:

并不主张-e编写计划任务,因为e和r键位相近,容易误删。

那么我们如何编写一个计划任务呢?

通常,使用vi直接编写一个计划任务文件,命名“用户名+cron”,编辑好后发布:

crontab [文件名]

2. 计划任务格式

分   时   日   月   星期  要执行的命令(脚本)
# 范围:
[0-59]  [0-23]  [1-31]  [1-12]    [0-6](0代表周日)

注意:

每个域都不可以空,必须写入,不设置使用*

每个域可以使用多个值,不连续的使用,进行分割,连续的使用-。

命令要给出绝对路径。

用户必须具备对用的权限。

特殊形式*/n:n是一个数字,代表每多久。

3. 例子

【例1】

每隔2分钟,将当前日期写入/hyy/cronstudy/a.txt中。

*/2 * * * * /usr/bin/date >> /hyy/cronstudy/a.txt

不退出vi,执行命令:

查询date命令所在位置。

:! which date

发布,并查看计划任务列表:

[root@hyy cronstudy]# crontab rootcron
[root@hyy cronstudy]# crontab -l
*/2 * * * * /usr/bin/date >> /hyy/cronstudy/a.txt

4. 运行原理:

corn命令运行时,会搜索/var/spool/cron目录,寻找系统中存在的用户设定的计划任务,并载入内存运行:

[root@hyy cronstudy]# cd /var/spool/cron/
[root@hyy cron]# ll
total 4
-rw-------. 1 root root 50 Nov 12 01:34 root
[root@hyy cron]# cat root
*/2 * * * * /usr/bin/date >> /hyy/cronstudy/a.txt

crontab 发布计划任务后,就会在该目录下产生一个用户同名文件。

5. 计划任务权限

用户是否可以使用crontab命令计划任务,和/etc/cron.allow文件以及/etc/cron.deny文件相关。

如果/etc/cron.allow文件存在,用户名不在其中,该用户不可以执行计划任务

如果这个文件不存在,就都可以执行,即没有限制。

如果/etc/cron.deny,用户名在其中,该用户不可以执行计划任务。

6. 实例

【例1】

每天晚上21:30分,重启apache服务:

# 分 时 天 月 星期 命令
30 21 * * * /usr/sbin/service httpd restart

【例2】

每周一、三、五的下午3:00 重启系统

# 分 时 天 月 星期 命令
00 15 * * 1,3,5 /usr/sbin/shutdwon -r now

【例3】

每小时的10分、40分,将/home/hyy目录下的message文件内容广播给所有用户

# 分 时 天 月 星期 命令
10,40 * * * * /usr/bin/wall < /home/hyy/message

【例4】

每小时的1分执行/bin/account指令

# 分 时 天 月 星期 命令
1 *  * * * /bin/accont

【例5】

每年的3月和6月,2号到8号的7点20分和7点50分执行/bin/date命令,并将结果添加到/test/backlog.txt文件内容后。

# 分 时 天 月 星期 命令
20,50 7 2-8 3,6 * /bin/date >> /test/backlog.txt

二、一次性

atd服务需启动

1. at 命令

at [-选项] time date
> 输入命令
<ctrl+d>结束

-f file :at安排的计划任务,均放在文件file中

file文件里放了多个命令:

at -f file time date

-l:查看安排的作业,等同于atq

-d:删除指定的执行命令序列,等同于atrm

time date格式

time date格式比较灵活

hh:mm :几时几分;

midnight:深夜;

noon:中午

teatime:下午

12小时制:AM PM

日期:mm/dd/yy(月日年)

now+n minutes(hours,days)

现在的时间,过几分钟(小时,天)

下午3点:

at 15:00

at 3.00PM

at 15:00 today

现在是下午2.:

at now+ 1 hours

at now+ 60 minutes

指定某个日期的下午3点:

2022年11月17号:at 15:00 11/17/2022

2022年11月17号:at 15:00 17.11.2022

2. 例子

[root@hyy ~]# at 12:00
at> echo "hello"    
at> find / -name "a?c*" -exec rm -f {} \;
at> <EOT>
job 1 at Sat Nov 12 12:00:00 2022
[root@hyy ~]# at 21:00
at> echo "bye" 
at> <EOT>
job 2 at Sat Nov 12 21:00:00 2022
[root@hyy ~]# atq # 或者 at -l
1 Sat Nov 12 12:00:00 2022 a root
2 Sat Nov 12 21:00:00 2022 a root
[root@hyy ~]# atrm 2 # 或者 at -d 2
[root@hyy ~]# atq
1 Sat Nov 12 12:00:00 2022 a root

3. at 执行权限

用户是否可以使用at命令计划任务,和/etc/at.allow文件以及/etc/at.deny文件相关。

如果/etc/at.allow文件存在,用户名不在其中,该用户不可以执行计划任务

如果这个文件不存在,就都可以执行,即没有限制。

如果/etc/at.deny,用户名在其中,该用户不可以执行计划任务。

4. 实例:

【例1】

23:00定时关机:

at 23:00
> shutdown -S -T 50

【例2】

下午茶时间,定时提醒:

at teatime 
> /usr/bin/wall < rest.txt

【例3】

自动执行脚本backup.sh

at 1:00AM
> /backup.sh

三、补充:

  1. 启动某个服务:
service 服务名 start|status|restart|stop

服务一般都存放在/etc/rc.d/init.d/服务名

我的服务并不在这里,有待探索

例如:

service crond status
# 同样的效果
/etc/rc.d/init.d/crond status

用户间发送信息:

write命令:

write 用户名
输入信息
<ctrl+d>结束

广播

wall命令:

wall
输入内容
<ctrl+d>结合

也可以通过重定向符号,将文件中的内容广播或者发送出去:

以前学的重定向符号:> >>,这里使用个新的:<

wall < /test/test.txt

Linux下存在两种时间:

  1. 系统时间
[root@VM-24-17-centos ~]# date
Mon Nov 14 16:54:51 CST 2022

硬件时钟

[root@VM-24-17-centos ~]# hwclock
2022-11-14 16:57:21.797913+08:00

这两个应该是一致的。

步骤:

  1. 设置系统时钟时间:
man date #查看帮助
# date 月日时分年.秒
date 111417042022.30

或者(二选一)

设置硬件时钟时间:

man hwclock
hwclock --set --date="11/14/2022 17:04:30"

同步时间:

hwclock --hctosys #硬件时钟时间同步到系统
# 或者
clock --systohc # 系统时间同步到硬件时钟


相关文章
|
1月前
|
机器学习/深度学习 安全 网络协议
Linux防火墙iptables命令管理入门
本文介绍了关于Linux防火墙iptables命令管理入门的教程,涵盖了iptables的基本概念、语法格式、常用参数、基础查询操作以及链和规则管理等内容。
191 73
|
4月前
|
存储 Linux Android开发
Volatility3内存取证工具安装及入门在Linux下的安装教程
Volatility 是一个完全开源的工具,用于从内存 (RAM) 样本中提取数字工件。支持Windows,Linux,MaC,Android等多类型操作系统系统的内存取证。针对竞赛这块(CTF、技能大赛等)基本上都是用在Misc方向的取证题上面,很多没有听说过或者不会用这款工具的同学在打比赛的时候就很难受。以前很多赛项都是使用vol2.6都可以完成,但是由于操作系统更新,部分系统2.6已经不支持了,如:Win10 等镜像,而Volatility3是支持这些新版本操作系统的。
|
2月前
|
Java Shell Linux
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
关于如何使用Shell脚本来解析Linux系统中的应用服务日志,提供了脚本实现的详细步骤和技巧,以及一些Shell编程的技能扩展。
31 0
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
|
2月前
|
存储 Ubuntu Linux
Linux基础入门
Linux基础入门
19 1
|
2月前
|
Ubuntu Linux Shell
Linux 终端入门
Linux 终端入门
18 0
|
2月前
|
安全 网络协议 Linux
保护你的 Linux VPS:入门指南
保护你的 Linux VPS:入门指南
20 0
|
4月前
|
存储 Linux 数据库
【Linux】Linux基础文件与目录管理:成为Linux大师的入门必修课
【Linux】Linux基础文件与目录管理:成为Linux大师的入门必修课
39 3
|
4月前
|
Linux Unix 安全
【Linux终端探险】:从入门到熟练,玩转基础命令的秘密(一)
【Linux终端探险】:从入门到熟练,玩转基础命令的秘密(一)
|
4月前
|
Linux 开发工具
【Linux文本编辑艺术】:从入门到熟练,Vim大师之路揭秘
【Linux文本编辑艺术】:从入门到熟练,Vim大师之路揭秘
|
4月前
|
Linux Unix Windows
【Linux终端探险】:从入门到熟练,玩转基础命令的秘密(二)
【Linux终端探险】:从入门到熟练,玩转基础命令的秘密(二)
下一篇
无影云桌面