要求:一直监控时间,每天的24点将pwd获取当前路径下的log.log文件改名成当天日期文件,并创建新的log.log,并删除前7天的文件
创建seg_log.sh文件
vim seg_log.sh
#!/bin/bash
# 获取当前工作目录
current_directory=$(pwd)
# 主循环,持续监控时间
while true; do
# 获取当前日期的小时和分钟
current_hour=$(date +"%H")
current_minute=$(date +"%M")
# 检查是否到达午夜(00:00)
if [ "$current_hour" -eq 00 ] && [ "$current_minute" -eq 00 ]; then
# 获取当前日期
current_date=$(date +"%Y-%m-%d")
# 将 log.log 文件改名为当前日期
mv "$current_directory/log.log" "$current_directory/$current_date.log"
# 创建新的 log.log 文件
touch "$current_directory/log.log"
# 删除前7天的日志文件
seven_days_ago=$(date --date="7 days ago" +"%Y-%m-%d")
old_log_file="$current_directory/$seven_days_ago.log"
if [ -f "$old_log_file" ]; then
rm "$old_log_file"
fi
echo "已完成每日操作于 $current_date"
fi
# 等待1分钟再次检查时间
sleep 60
done
给予执行权限:chmod +x seg_log.sh
这样,该脚本将会每分钟检查一次时间,一旦到达午夜(00:00),就会执行所需的操作:重命名日志文件、创建新的日志文件,并删除7天前的过期日志文件。
nohup ./seg_log.sh > shell.log 2>&1 &
查看shell脚本是否启动:
方法一:使用 ps
命令
可以使用 ps
命令结合 grep
来查找特定的进程,以确定脚本是否在运行中。
ps aux | grep seg_log.sh
ps aux
:列出当前系统中所有进程的详细信息。grep seg_log.sh
:过滤出包含seg_log.sh
字符串的进程信息。
如果脚本在运行中,你将看到类似以下的输出(这里的示例脚本名为 seg_log.sh
):
user 12345 0.0 0.1 123456 7890 pts/1 S 12:00 0:00 ./seg_log.sh
方法二:查看 nohup
的输出日志
如果使用 nohup
启动了脚本,并将输出重定向到文件,可以查看这个输出文件来确认脚本是否在运行以及其输出信息。
tail -f seg_log.log
tail -f seg_log.log
:实时显示seg_log.log
文件的末尾内容,包括脚本的输出信息。
方法三:使用 pgrep
命令
pgrep
命令可以查找匹配特定名称的进程的进程ID。
pgrep -f seg_log.sh
pgrep -f seg_log.sh
:查找包含seg_log.sh
字符串的进程名,并输出其进程ID(PID)。
如果脚本正在运行,你将看到输出一个或多个与脚本相关的进程ID。
方法四:检查日志或输出文件
如果脚本有输出日志或将输出重定向到文件,可以直接查看该文件内容来了解脚本的运行状态和输出信息。
less seg_log.log
less seg_log.log
:查看seg_log.log
文件的内容,可以使用less
或其他文本查看器来浏览文件内容。
通过这些方法,你可以有效地检查和确认你的Shell脚本是否在Linux系统中正常运行。