Linux 扫描整个操作系统以同时获取所有进程的扫描日志

Linux 扫描整个操作系统以同时获取所有进程的扫描日志,linux,process,operating-system,strace,Linux,Process,Operating System,Strace,目前,我正在使用下面的命令获取一个进程列表,以此完成这项工作 sudo ps -eo pid,command | grep -v grep | awk '{print $1}' > pids.txt 然后遍历进程id,在后台执行每个进程的策略,并使用日志扩展中的进程id为每个进程生成日志 filename="$1" while read -r line do chmod +x straceProgram.sh ./straceProgram.sh $line & done <

目前,我正在使用下面的命令获取一个进程列表,以此完成这项工作

sudo ps -eo pid,command | grep -v grep | awk '{print $1}' > pids.txt
然后遍历进程id,在后台执行每个进程的策略,并使用日志扩展中的进程id为每个进程生成日志

filename="$1"
while read -r line
do
chmod +x straceProgram.sh
./straceProgram.sh $line &
done < "$filename"
但是,这种方法的问题是,如果有任何新进程启动,则不会对其进行扫描,因为在第一次运行期间,扫描位于存储在pids.txt中的进程ID上。 pids.txt的列表可以用新的进程ID更新,但是,我很好奇在操作系统级别运行strace,它会对正在执行的所有活动进行strace。
有没有更好的方法可以做到这一点?

如果生成的文件系统将成为内核文件系统驱动程序,我建议使用来收集所需的信息。我建议不要将其作为内核文件系统,除非您有大量的时间和大量的测试资源。这不是小事


如果您想要一个更简单、更安全的替代方案,请使用编写文件系统。缺点是性能不是很好,有一些地方不能使用它,但它通常是可以接受的。请注意,fuse下已经有一个日志文件系统的实现。

如果生成的文件系统将成为内核文件系统驱动程序,我建议使用来收集所需的信息。我建议不要将其作为内核文件系统,除非您有大量的时间和大量的测试资源。这不是小事


如果您想要一个更简单、更安全的替代方案,请使用编写文件系统。缺点是性能不是很好,有一些地方不能使用它,但它通常是可以接受的。请注意,fuse下已经有一个日志文件系统的实现。

使用strace-f(fork)选项,我还建议使用-s 9999了解更多细节

使用strace-f(fork)选项,我还建议使用-s 9999了解更多细节

通过
strace
加密系统上的每个进程,您希望实现什么?这似乎是一个非常糟糕的想法,如果仅仅因为系统的性能将绝对下降,并且您正在生成大量的跟踪数据,可能没有人会看到这些数据。您可能有一个问题有更好的解决方案…我知道,但是,我需要这些日志,以便更好地了解在系统调用的每个阶段处理的文件。在更高的层次上,这项工作的范围是设计一种RAID类型的系统,用于存储源文件和生成的文件之间的中间文件,以实现更快的恢复。通过
strace
ing系统上的每个进程,您希望实现什么?这似乎是一个非常糟糕的想法,如果仅仅因为系统的性能将绝对下降,并且您正在生成大量的跟踪数据,可能没有人会看到这些数据。您可能有一个问题有更好的解决方案…我知道,但是,我需要这些日志,以便更好地了解在系统调用的每个阶段处理的文件。在更高的层次上,其范围是设计一种RAID类型的系统,用于存储源文件和生成的文件之间的中间文件,以实现更快的恢复。
pid="$1"
sudo strace -p $pid -o log.$pid