Bash脚本-需要监控Linux系统中的某些进程

Bash脚本-需要监控Linux系统中的某些进程

我正在编写这个简单的脚本,它将转换为守护进程并在后台运行。脚本工作很简单。它需要监视一个进程类型,例如ls命令进程。并写入文件留存。

我的方法是有一个 while true 循环,使用 ps 命令不断检查进程类型。如果它检测到它,它会将其附加到文件中。

我想知道这是否是一个不好的写法

我的代码如下

while true
do 
   if [[ $(ps -aux | grep -w "ls") ]]
   then 
       #append to file
   fi 
done &

答案1

你可以

grep commandname /proc/*/comm

在我的 Linux 系统上,它比ps | grep或快 2 - 3 倍pgrep

答案2

你建议,

我的方法是有一个 while true 循环,使用 ps 命令不断检查进程类型。如果它检测到它,它会将其附加到文件中。

如果您打算这样做,只需搜索进程名称并附加任何匹配项即可。 (如果没有匹配,则不会有任何输出。)

while sleep 5
do
    ps -ef | grep -w '[l]s' >> matched.txt
done

如果不知道你真正想要实现什么,就很难批评你的方法。如果您只是想在进程消失时重新启动该进程,那么请考虑使用一个systemd单元。如果您想记录某个进程的存在,您最好使用lastcomm或其他审核工具来捕获指定进程的开始和结束时间。在这两种情况下,您都可以废除繁忙循环,并且不会丢失任何短暂的流程执行。

相关内容