计划任务管理

目录

使用cron安排周期性任务

1.编写备份脚本:

2.设置 Cron 任务:

3.保存并退出编辑器。

4.验证 Cron 任务:

5.查看file

使用at安排一次性任务

1.创建任务脚本或命令

2.安排一次性任务

3.验证任务安排

使用systemd定时器安排任务

一、自定义shell脚本

 1.在/root目录下创建systemd_time.sh脚本

 2.创建syslog.txt文件

3.给脚本运行权限

二、编写单元文件

 1.进入/etc/systemd/system目录下 创建服务单元文件(.service)

 2.创建定时器单元文件(.timer)

3.重新加载自定义配置systemd文件,启动单元文件

4.查看/root/syslog.txt文件


使用cron安排周期性任务

Cron 是一个用于在 Unix 和类 Unix 操作系统中安排周期性任务的工具。通过 Cron,用户可以指定在特定的时间执行特定的命令或脚本。

假设我们有一个脚本 backup.sh,用于备份系统中的重要数据到远程服务器。我们希望每天凌晨 3 点执行这个备份任务。

1.编写备份脚本:

 在root目录下创建file.txt

 touch file.txt

 创建一个名为 在root目录下 backup.sh 的脚本,内容类似于以下示例:

#!/bin/bash

# 获取当前时间
current_time=$(date +"%Y-%m-%d %H:%M:%S")

# 指定输出文件
output_file="/root/file.txt"

# 输出当前时间到指定文件
echo "当前时间是:$current_time" > "$output_file"

 添加可执行权限
 

chmod +x backup.sh

2.设置 Cron 任务:

输入命令 crontab -e,按下回车键。

使用 vim 命令编辑当前用户的 Cron 任务列表,并添加以下行:

* * * * * /root/backup.sh

这个时间表达式 `* * * * *` 中的每个字段的含义如下:

- 第一个星号 (*):代表分钟。在这里是 *,表示每分钟都执行。
- 第二个星号 (*):代表小时。也是 *,表示每小时都执行。
- 第三个星号 (*):代表日期。也是 *,表示每天都执行。
- 第四个星号 (*):代表月份。也是 *,表示每月都执行。
- 第五个星号 (*):代表星期几。也是 *,表示每周都执行。

因此,这个时间表达式 `* * * * *` 表示每分钟都执行指定的任务。

3.保存并退出编辑器。

如果使用 vim 命令打开,通常可以按 : ,然后按 wq! 保存并退出。出现这个界面说明设置成功

4.验证 Cron 任务:

你可以使用 crontab -l 命令查看当前用户的 Cron 任务列表,以确保新任务已经添加。

5.查看file

使用at安排一次性任务

at 是一个用于在 Unix 和类 Unix 系统中安排一次性任务的命令。通过 at,用户可以指定在特定的时间执行特定的命令或脚本。以下是一个示例说明如何使用 at 安排一次性任务:

假设我们希望在下个小时执行一个简单的命令,例如输出一条消息到文件中。

1.创建任务脚本或命令

在这个例子中,我们不需要创建脚本文件,只需准备一个简单的命令。例如,我们想要将一条消息写入到文件中,可以使用 echo 命令:

echo "Hello, this is a scheduled task." > /root/output.txt

请将 /root/output.txt 替换为实际的输出文件路径。

2.安排一次性任务

使用 at 命令安排任务,指定要执行任务的时间。例如,假设当前时间是 10:30 AM,我们希望任务在 6:00 AM 执行:

at 6:00 AM

这将启动一个新的 at 会话,并在提示符下等待输入要执行的命令或脚本。在提示符下输入要执行的命令或脚本,然后按下 Ctrl + D 键保存并退出。例如:

echo "Hello, this is a scheduled task." > /root/output.txt

这将在下一个小时的 6:00 AM 执行指定的命令。

3.验证任务安排

你可以使用 atq 命令来查看当前计划中的 at 任务列表,以确保任务已经安排。

atq

这会列出当前计划中的 at 任务列表及其编号。

等待指定的时间,任务将在指定时间执行。

使用systemd定时器安排任务

一、自定义shell脚本

 1.在/root目录下创建systemd_time.sh脚本

vim systemd_time.sh
#!/bin/bash
echo $(date) >> /root/syslog.txt
sleep 3

使用 date 命令获取当前的日期和时间。
将当前的日期和时间追加到/root/syslog.txt文件中。
然后暂停执行 3 秒钟(使用 sleep 3)。

 2.创建syslog.txt文件

touch syslog.txt 

3.给脚本运行权限

chmod +x systemd_time.sh

二、编写单元文件

 
1.进入/etc/systemd/system目录下 创建服务单元文件(.service)

cd /etc/systemd/system
vim systemd_time.service

[Unit]
Description=Backup Service
 
[Service]
Type=simple
ExecStart=/root/systemd_time.sh
 
[Install]
WantedBy=multi-user.target

[Unit]:这一部分定义了系统单元的基本信息。

Description=Backup Service:描述了这个服务的简短描述,表明这个服务是一个备份服务。
[Service]:这一部分定义了服务的具体运行方式。

Type=simple:指定了服务的启动类型,这里是简单的启动类型。简单的启动类型意味着 Systemd 不会对服务的主进程进行额外的跟踪和管理。
ExecStart=/root/systemd_time.sh:指定了服务启动时需要执行的命令或脚本,这里是执行 /root/systemd_time.sh 脚本。
[Install]:这一部分定义了如何安装这个服务。

WantedBy=multi-user.target:指定了这个服务应该在何时安装。在这里,它表明这个服务会被安装在多用户环境(multi-user.target)中,即系统启动时会被启用。

 2.创建定时器单元文件(.timer)

vim backup.timer
[Unit]
Description=Executed every minute
[Timer]
OnBootSec=3s
OnUnitActiveSec=3s
Unit=systemd_time.service
[Install]
WantedBy=multi-user.target


[Unit]:这一部分定义了定时器单元的基本信息。

Description=Executed every minute:描述了这个定时器的简短描述,表明这个定时器是用于每分钟执行的任务。
[Timer]:这一部分定义了定时器的触发条件和行为。

OnBootSec=3s:指定了定时器在系统启动后延迟多长时间开始第一次触发任务。在这里,3s 表示延迟 3 秒后开始第一次触发任务。
OnUnitActiveSec=3s:指定了定时器在前一次任务触发后,再次触发任务之间的间隔时间。在这里,3s 表示任务触发间隔为 3 秒。
Unit=systemd_time.service:指定了定时器要触发的单元(服务)名称,即当定时器触发时会启动 systemd_time.service 这个服务。
[Install]:这一部分定义了如何安装这个定时器。

WantedBy=multi-user.target:指定了这个定时器应该在何时安装。在这里,它表明这个定时器会被安装在多用户环境(multi-user.target)中,即系统启动时会被启用。

 补充:(在 Systemd 中,定时器(timer)单元通常需要与一个服务单元相关联)

为每个定时器单元配对一个服务单元有几个原因:

执行任务:定时器的主要目的是触发特定的任务或操作。这些任务通常由相应的服务单元定义和执行。因此,定时器需要与服务相关联,以在定时器触发时启动服务并执行任务。

结构清晰:将定时器与服务相关联可以使配置更加清晰和结构化。通过将定时器和服务放在一起,管理员可以更容易地理解和管理定时任务的执行逻辑。

可重用性:通过将定时器和服务分开定义,可以提高定时任务的可重用性。多个定时器可以引用相同的服务单元,从而避免了重复定义相同的任务。

灵活性:将定时器和服务分开定义也提供了更大的灵活性。管理员可以根据需要更改定时器或服务的配置,而不会影响到另一个。

综上所述,定时器与服务相关联是 Systemd 设计的一部分,这样做有助于将定时任务的触发和执行逻辑分离开来,提高了可管理性和灵活性。

3.重新加载自定义配置systemd文件,启动单元文件

systemctl daemon-reload
systemctl start backup.timer
systemctl enable backup.timer
systemctl status backup.timer

4.查看/root/syslog.txt文件

  • 23
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值