我正在编写这个简单的脚本,它将转换为守护进程并在后台运行。脚本工作很简单。它需要监视一个进程类型,例如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
或其他审核工具来捕获指定进程的开始和结束时间。在这两种情况下,您都可以废除繁忙循环,并且不会丢失任何短暂的流程执行。