在qnx系统中,写一个脚本 ,实现定期打印top命令、定期打印hogs命令、定期打印pidin a 命令的功能
时间: 2024-03-16 18:47:35 浏览: 17
可以通过编写一个shell脚本来实现这个功能。具体步骤如下:
1. 创建一个文件,例如monitor.sh。
2. 在文件中添加以下代码:
```
#!/bin/sh
while true
do
top >> top.log
sleep 10
done &
while true
do
hogs >> hogs.log
sleep 10
done &
while true
do
pidin a >> pidin.log
sleep 10
done &
```
3. 保存文件并退出。
4. 将文件赋予执行权限:
```
chmod +x monitor.sh
```
5. 运行脚本:
```
./monitor.sh
```
这个脚本将会在后台执行三个无限循环,每个循环每隔10秒钟执行一次相应的命令,并将输出重定向到对应的日志文件中。你可以在任何时间停止脚本的执行,只需使用kill命令结束它即可。
相关问题
QNX_LOG_DIR="/qnxlog" TOP_DIR="$QNX_LOG_DIR/top" HOGS_DIR="$QNX_LOG_DIR/hogs" PIDIN_A_DIR="$QNX_LOG_DIR/pidin" # 创建输出目录,如果不存在 mkdir -p $TOP_DIR mkdir -p $HOGS_DIR mkdir -p $PIDIN_A_DIR while true do top -b -i 1 >> $TOP_DIR/top.log hogs -i 1 >> $HOGS_DIR/hogs.log pidin a >> $PIDIN_A_DIR/pidin.log sleep 10 done 在这个脚本中,每个文件夹可以存储两个文件,通过后缀1和2区分,每次都删除旧的 生成新的
好的,这是一个脚本,用于创建输出目录并定期记录系统性能数据。该脚本使用了三个工具:top、hogs和pidin,它们都是在QNX操作系统上可用的工具。下面是该脚本的工作流程:
1. 创建输出目录:QNX_LOG_DIR是输出根目录,TOP_DIR、HOGS_DIR和PIDIN_A_DIR是三个子目录。
2. 使用while循环,不停地执行以下三个命令:
- top -b -i 1 >> $TOP_DIR/top.log:以1秒的间隔,记录系统的进程信息,并将结果追加到$TOP_DIR/top.log文件中。
- hogs -i 1 >> $HOGS_DIR/hogs.log:以1秒的间隔,记录系统中占用CPU资源最多的进程,并将结果追加到$HOGS_DIR/hogs.log文件中。
- pidin a >> $PIDIN_A_DIR/pidin.log:记录所有进程的详细信息,并将结果追加到$PIDIN_A_DIR/pidin.log文件中。
3. 在每次循环结束后,让脚本睡眠10秒。
4. 每个文件夹只能存储两个文件,通过后缀1和2区分,每次都删除旧的生成新的。
总之,该脚本可以用于监测系统的性能状况并记录下来,以便后续分析。
QNX_LOG_DIR="/qnxlog" TOP_DIR="$QNX_LOG_DIR/top" HOGS_DIR="$QNX_LOG_DIR/hogs" PIDIN_A_DIR="$QNX_LOG_DIR/pidin" # 创建输出目录,如果不存在 mkdir -p $TOP_DIR mkdir -p $HOGS_DIR mkdir -p $PIDIN_A_DIR while true do top -b -i 1 >> $TOP_DIR/top1.log hogs -i 1 >> $HOGS_DIR/hogs1.log pidin a >> $PIDIN_A_DIR/pidin1.log sleep 10 done在这个脚本中,需要增加功能 让其每次启动检查文件夹下的文件名,如果带1,则生成带2的文件,如果都有,清空时间早的文件,并进行输入
可以在脚本中添加如下代码来实现上述功能:
```bash
# 检查输出目录中的文件名,生成新的文件名
if [[ -f $TOP_DIR/top1.log && -f $HOGS_DIR/hogs1.log && -f $PIDIN_A_DIR/pidin1.log ]]; then
# 如果都存在以“1”结尾的文件,则生成以“2”结尾的文件
mv $TOP_DIR/top1.log $TOP_DIR/top2.log
mv $HOGS_DIR/hogs1.log $HOGS_DIR/hogs2.log
mv $PIDIN_A_DIR/pidin1.log $PIDIN_A_DIR/pidin2.log
elif [[ -f $TOP_DIR/top1.log || -f $HOGS_DIR/hogs1.log || -f $PIDIN_A_DIR/pidin1.log ]]; then
# 如果只存在部分以“1”结尾的文件,则生成缺失的以“1”结尾的文件
touch $TOP_DIR/top1.log
touch $HOGS_DIR/hogs1.log
touch $PIDIN_A_DIR/pidin1.log
fi
# 清空时间早的文件
find $TOP_DIR -name "top*.log" -mtime +1 -exec rm {} \;
find $HOGS_DIR -name "hogs*.log" -mtime +1 -exec rm {} \;
find $PIDIN_A_DIR -name "pidin*.log" -mtime +1 -exec rm {} \;
```
这段代码中,首先检查输出目录中的文件名,如果都存在以“1”结尾的文件,则生成以“2”结尾的文件;如果只存在部分以“1”结尾的文件,则生成缺失的以“1”结尾的文件。然后,使用 `find` 命令清空时间早于一天的日志文件。这样就可以确保每个输出文件都有新鲜的数据,并且不会占用过多的磁盘空间。