每 1 秒监控一个进程并将输出定向到文件

每 1 秒监控一个进程并将输出定向到文件

我有一个任务,必须分析 ftp 客户端和服务器之间的文件传输。

我知道htop指挥。

如果文件传输需要 15 秒,那么我希望该htop命令每秒运行一次,直到文件传输完成并将输出定向到文件,以便我可以分析该过程。但我想不出任何可以htop每秒运行的方法。

此外,命令打印的输出htop不是人类可读的形式。

答案1

首先,请确保没有更简单的方法来获取您想要的信息,还有很多其他工具可能效果更好,但 htop 不能很好地访问文件。看:https://stackoverflow.com/questions/17534591/htop-output-to- human-可读-file虽然这里有一个拼凑:https://askubuntu.com/questions/726333/how-to-save-htop-output-to-file如果你找不到东西。

htop 中有什么是你无法摆脱的ps,或者其他一些为命令行输出和解析而设计的工具?

然后编写一个类似这样的脚本(未经测试):

#!/bin/bash

my_log="ftp_$(date +%Y%m%d%H%M%S).log"
$(command to start the ftp 2>&1 >> "$my_log")& 

my_pid="$!"
sleep 15
still_there=1
while [[ $still_there -gt 0 ]]
do
    if [[ $(ps ax | grep $my_pid | grep -v grep) ]] # If your PID is still in the process table
    then
        # Insert monitoring stuff in here that > to $my_log
        still_there=1
    else
        still_there=0
    fi
    sleep 1
done

相关内容