在Linux系统中,lsof(list open files)是一个非常实用的命令,它可以帮助我们在Linux系统中,lsof(list open files)是一个非常实用的命令,它可以帮助我们查看系统中打开的文件、目录、设备等信息,当系统被入侵后,日志文件可能会被删除或篡改,这时候我们可以使用lsof命令来恢复被删除的日志,本文将详细介绍如何使用lsof命令恢复被删除的日志。
lsof命令简介
lsof(list open files)是一个列出当前系统打开文件的工具,在Linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件,所以如同其名字一样,lsof 全称 list open files,即:列出当前系统打开的文件。
lsof命令的基本用法
lsof命令的基本用法如下:
lsof [选项] [文件名]
选项可以是以下之一:
-a:表示同时搜索所有文件系统。
-d:表示搜索指定文件描述符。
-g:表示搜索指定进程组ID。
-i:表示搜索指定网络接口。
-n:表示不解析主机名,以数字形式显示IP地址。
-p:表示搜索指定进程ID。
-t:表示搜索指定类型的文件。
-u:表示搜索指定用户。
-x:表示搜索指定程序。
-c:表示搜索指定字符设备。
-b:表示搜索指定块设备。
-e:表示搜索指定套接字。
-f:表示搜索指定文件类型。
-l:表示搜索指定符号链接。
-L:表示搜索指定符号链接的目标。
-m:表示搜索指定内存映射。
-o:表示搜索指定文件系统对象类型。
-s:表示搜索指定文件大小。
-S:表示搜索指定文件状态。
-D:表示搜索指定挂载点。
-P:表示搜索指定命名空间。
-N:表示不解析主机名,以数字形式显示IP地址和端口号。
-q:表示静默模式,只输出匹配的文件描述符。
-Q:表示严格模式,只输出匹配的文件描述符。
-h:表示显示帮助信息。
-v:表示显示详细输出信息。
-z:表示关闭安全检查,用于调试。
-Z:表示关闭SELinux安全策略,用于调试。
-F:表示根据指定的条件过滤输出结果。
-r:表示递归搜索子目录。
-R:表示递归搜索子目录并显示详细信息。
-L1:表示只显示一个匹配结果。
-L2:表示只显示两个匹配结果。
-L3:表示只显示三个匹配结果。
-L4:表示只显示四个匹配结果。
-L5:表示只显示五个匹配结果。
-L6:表示只显示六个匹配结果。
-L7:表示只显示七个匹配结果。
-L8:表示只显示八个匹配结果。
-L9:表示只显示九个匹配结果。
-L0:表示不限制匹配结果的数量。
-T<类型>:表示设置输出结果的格式为指定的类型,如txt、csv等。
-O<输出格式>:表示设置输出结果的格式为指定的格式,如csv、json等。
-W<宽度>:表示设置输出结果的宽度为指定的值,如10、20等。
-X<扩展>:表示设置输出结果的扩展为指定的值,如comma、tab等。
-Y<分隔符>:表示设置输出结果的分隔符为指定的值,如逗号、制表符等。
-H<标题行>:表示设置输出结果的标题行为指定的值,如yes、no等。
-I<列索引>:表示设置输出结果的列索引为指定的值,如1、2等。
-J<JSON格式>:表示设置输出结果的JSON格式为指定的值,如pretty、compact等。
-K<键值对>:表示设置输出结果的键值对为指定的值,如key=value等。
-M<最大行数>:表示设置输出结果的最大行数为指定的值,如10、20等。
-C<颜色>:表示设置输出结果的颜色为指定的值,如red、green等。
-A<别名>:表示设置输出结果的别名为指定的值,如alias1、alias2等。
-B<过滤器>:表示设置输出结果的过滤器为指定的值,如filter1、filter2等。
-G<分组>:表示设置输出结果的分组为指定的值,如group1、group2等。
-N<名称>:表示设置输出结果的名称为指定的值,如name1、name2等。
-S<排序方式>:表示设置输出结果的排序方式为指定的值,如asc、desc等。
-U<用户名>:表示设置输出结果的用户名为指定的值,如user1、user2等。
-V<版本号>:表示设置输出结果的版本号为指定的值,如v1.0、v2.0等。
-W<警告级别>:表示设置输出结果的警告级别为指定的值,如warning、error等。
-Z<压缩方式>:表示设置输出结果的压缩方式为指定的值,如gzip、bzip2等。
-a<附加参数>:表示设置附加参数为指定的值,如param1、param2等。
使用lsof命令恢复被删除日志的方法
当系统被入侵后,日志文件可能会被删除或篡改,这时候我们可以使用lsof命令来恢复被删除的日志,具体方法如下:
1、我们需要找到被删除日志文件所在的目录,可以使用find命令来查找被删除的文件,例如查找/var/log目录下被删除的文件,可以使用以下命令:
find /var/log -type f -deleted -print | xargs lsof -n | grep deleted > deleted_logs.txt
2、我们可以使用grep命令来过滤出被删除日志文件的信息,例如查找被删除的syslog日志文件,可以使用以下命令:
grep 'syslog' deleted_logs.txt > syslog_deleted.txt
3、接下来,我们可以使用ls命令来查看被删除日志文件的inode号,例如查看syslog_deleted.txt文件中被删除日志文件的inode号,可以使用以下命令:
cat syslog_deleted.txt | grep inode | awk '{print $9}' > inode_list.txt
4、我们可以使用inotifywait命令来监控被删除日志文件所在的目录,当有新的日志文件创建时,我们可以将其恢复到原来的位置,例如监控/var/log目录并恢复被删除的syslog日志文件,可以使用以下命令:
while true; do inotifywait -e create /var/log; done | while read path action file; do if [ -e /var/log/syslog_deleted.txt ] && grep -q "${file}" /var/log/syslog_deleted.txt; then mv "${path}" /var/log/syslog; fi; done & disown %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %1; wait %1; kill %
最新评论
本站CDN与莫名CDN同款、亚太CDN、速度还不错,值得推荐。
感谢推荐我们公司产品、有什么活动会第一时间公布!
我在用这类站群服务器、还可以. 用很多年了。