要求:自定义一个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