需求:
判断目录 /tmp/jstack 是否存在,不存在则新建一个目录,若存在则删除目录下所有内容。
每隔 1 小时打印 tomcat的 jstack 信息,并以 jstack_${当前时间} 命名文件,每当目录
超过 10 个文件后,删除最旧的文件。
实现:
tmp.sh
#!/bin/bash
dirpath=/tmp/jstack
if [ ! -d "$dirpath" ];then
mkdir "$dirpath"
else
rm -rf "dirpath"/*
fi
cd "$dirpath"
while :
do
current_time=$(date +'%F'-'%T')
pid=$(ps -ef | grep 'tomcat' | grep -v grep | awk '{print $2}')
#replace the "tomcat" to your own process
jstack $pid >> "jstack_${current_time}"
file_count=$(ls | wc -l)
if [ "$file_count" -gt 10 ];then
rm -f $(ls -tr | head -1)
fi
sleep 10
#set your own time(seconds)
done
验证:
[root@logstash jstack]# ll
total 280
-rw-r--r-- 1 root root 24924 May 27 14:25 jstack_2024-05-27-14:25:53
-rw-r--r-- 1 root root 24924 May 27 14:26 jstack_2024-05-27-14:26:03
-rw-r--r-- 1 root root 24924 May 27 14:26 jstack_2024-05-27-14:26:14
-rw-r--r-- 1 root root 24924 May 27 14:26 jstack_2024-05-27-14:26:24
-rw-r--r-- 1 root root 24924 May 27 14:26 jstack_2024-05-27-14:26:34
-rw-r--r-- 1 root root 24924 May 27 14:26 jstack_2024-05-27-14:26:44
-rw-r--r-- 1 root root 24924 May 27 14:26 jstack_2024-05-27-14:26:56
-rw-r--r-- 1 root root 24924 May 27 14:27 jstack_2024-05-27-14:27:07
-rw-r--r-- 1 root root 24924 May 27 14:27 jstack_2024-05-27-14:27:17
-rw-r--r-- 1 root root 24924 May 27 14:27 jstack_2024-05-27-14:27:29
[root@logstash jstack]#