实战案例:systemd服务定时检查其他服务器上/tmp/下文件的个数

144 阅读1分钟

要求:自定义一个systemd服务定时去其他服务器上检查/tmp/下文件的个数,如果发现数量有变化就记录变化情况到文件中。

1创建本机目录和脚本:

  • 在本机上创建目录 /data/scripts 用于存放脚本和日志文件。
  • 在 /data/scripts 目录下创建脚本 check_file_count.sh。

2.编写 check_file_count.sh 脚本:

#!/bin/bash

# 本机IP和服务器IP
local_ip="10.0.0.131"
server_ip="192.168.31.241"

while true; do
    # 登录服务器并执行脚本获取文件数量
    file_count=$(sshpass -p "123456" ssh root@"$server_ip" 'ls /tmp/ | wc -l')

    # 记录结果到日志文件
    log_file="/data/scripts/log.txt"
    echo -e "\n$(date)" >> "$log_file"
    echo "Server $server_ip file count: $file_count" >> "$log_file"
    echo "======================" >> "$log_file"

    # 控制检查的间隔时间,例如每5分钟检查一次
    sleep 300
done

3.创建 systemd 服务单元文件:

在本机上创建文件 /etc/systemd/system/check_file_count.service,并编辑

[Unit]
Description=Check file count in /tmp directory on remote server
After=network.target

[Service]
User=root
Group=root
Type=simple
ExecStart=/bin/bash /data/scripts/check_file_count.sh

[Install]
WantedBy=multi-user.target

4.启用并启动 systemd 服务:

sudo systemctl daemon-reload
sudo systemctl enable check_file_count.service
sudo systemctl start check_file_count.service

完成以上步骤后,系统将每隔一段时间定时连接服务器,检查 /tmp/ 目录下文件数量的变化,并将结果记录到 /data/scripts/log.txt 文件中。该服务将持续运行,直到你手动停止或禁用它。

验证过程:

1.查看 /data/scripts/log.txt 文件,确保它已经被创建。

2.等待一段时间,让定时任务执行。你可以通过手动在服务器上的 /tmp/ 目录中增加或删除一些文件,然后等待服务执行并观察日志文件是否记录了文件数量的变化情况。

3.确认定时服务是否在运行:

sudo systemctl status check_file_count.service