写个shell脚本 将top -d 60 定向到top文件夹中,top文件夹不存在 需要创建,需要将top文件夹定义成字符串
时间: 2024-01-27 22:03:24 浏览: 19
可以使用以下的shell脚本来实现:
```
#!/bin/bash
# 定义top文件夹路径
top_dir="top"
# 创建top文件夹
mkdir -p "$top_dir"
# 执行top命令,并将输出重定向到top/top.log文件中
top -d 60 > "$top_dir/top.log"
```
上述脚本首先定义了一个 `top_dir` 变量,用于保存 `top` 文件夹的路径。然后使用 `mkdir -p "$top_dir"` 命令创建 `top` 文件夹(如果 `top` 文件夹不存在的话),其中 `$top_dir` 表示 `top_dir` 变量的值。最后使用 `top -d 60 > "$top_dir/top.log"` 命令执行 `top` 命令,并将输出重定向到 `$top_dir/top.log` 文件中。
将上述脚本保存为 `top.sh` 文件,然后在终端中执行 `./top.sh` 命令即可。执行该命令后,会在当前目录下创建 `top` 文件夹,并在其中生成 `top.log` 文件,其中记录了 `top` 命令的输出。
相关问题
写个shell脚本 将top -d 60 定向到top文件夹中,top文件夹不存在 需要创建
可以使用以下的shell脚本来实现:
```
#!/bin/bash
# 创建top文件夹
mkdir -p top
# 执行top命令,并将输出重定向到top/top.log文件中
top -d 60 > top/top.log
```
上述脚本首先使用 `mkdir -p top` 命令创建 `top` 文件夹(如果 `top` 文件夹不存在的话),然后使用 `top -d 60 > top/top.log` 命令执行 `top` 命令,并将输出重定向到 `top/top.log` 文件中。
将上述脚本保存为 `top.sh` 文件,然后在终端中执行 `./top.sh` 命令即可。执行该命令后,会在当前目录下创建 `top` 文件夹,并在其中生成 `top.log` 文件,其中记录了 `top` 命令的输出。
shell 脚本 将top -d 3600的 输出定向到top.log中,当top.log的size大于10M时,写入下一个文件,当该文件夹下数量大于二时,删除日期早的,写入新文件
您可以使用以下 shell 脚本来实现此功能:
```bash
#!/bin/bash
LOG_DIR="/path/to/log/dir"
LOG_FILE_PREFIX="top"
MAX_SIZE=10485760 # 10MB
MAX_FILES=2
# Create log directory if it doesn't exist
if [ ! -d "$LOG_DIR" ]; then
mkdir -p "$LOG_DIR"
fi
# Get list of existing log files sorted by modification time
log_files=($(ls -1t "$LOG_DIR"/"$LOG_FILE_PREFIX"*.log))
# Check number of log files and delete oldest if necessary
if [ "${#log_files[@]}" -ge "$MAX_FILES" ]; then
rm "${log_files[-1]}"
fi
# Write top output to log file
while true; do
# Get current log file size
log_size=$(wc -c < "$LOG_DIR"/"$LOG_FILE_PREFIX".log)
# Check if log file has reached max size
if [ "$log_size" -ge "$MAX_SIZE" ]; then
# Generate new log file name
timestamp=$(date +"%Y%m%d%H%M%S")
new_log_file="$LOG_DIR"/"$LOG_FILE_PREFIX"_"$timestamp".log
# Rename current log file and create new one
mv "$LOG_DIR"/"$LOG_FILE_PREFIX".log "$new_log_file"
touch "$LOG_DIR"/"$LOG_FILE_PREFIX".log
fi
# Append top output to log file
top -d 3600 >> "$LOG_DIR"/"$LOG_FILE_PREFIX".log
done
```
这个脚本会在指定的日志目录下创建名为 `top.log` 的日志文件,并将 `top -d 3600` 命令的输出定向到该日志文件中。当日志文件大小超过 10MB 时,会将当前日志文件重命名为带有时间戳的文件名,并创建一个新的 `top.log` 日志文件,继续将 `top -d 3600` 命令的输出定向到新的日志文件中。最多只保留两个日志文件,如果超过两个,则会删除最早的一个。