fuser
命令
fuser
命令是用来显示所有正在使用着指定file, file system, socket
的进程信息。
例一
fuser -m -u /data
输出:
/data: 1476(root) 1477(nobody) 1478(nobody) 1479(nobody)
1480(nobody) 8286ce(root) 8292ce(root) 8293ce(root)
8294ce(root) 8295ce(root) 8298ce(root) 8305ce(root)
8307ce(root) 8308ce(root) 8311ce(root)
用来查找所有正在使用/data
的进程PID
以及该进程的OWNER
,如1476(root)
,其中1476
是进程PID
,root
是该进程的OWNER
。
例二
fuser -v -n tcp 8080
输出
USER PID ACCESS COMMAND
8080/tcp: root 8286 F.... python
root 8292 F.... python
root 8293 F.... python
root 8294 F.... python
root 8295 F.... python
root 8298 F.... python
root 8305 F.... python
root 8307 F.... python
root 8308 F.... python
root 8311 F.... python
用来查找所有监听了tcp 8080
端口的进程, 如果要杀掉所有监听tcp 8080
端口的进程,可以使用fuser -k -n tcp 8080
find
命令
find
命令是用来查找文件的命令。
常用参数
-name
按照文件名查找文件。
-user
按照文件属主来查找文件。
-type
按照文件类型来查找文件, 如 -type f
查找普通文件, -type d
查找目录, -type l
查找符号链接文件
-amin n
查找系统中最近n
分钟访问的文件
-atime n
查找系统中最近n*24
小时访问的文件
-cmin n
查找系统中最近n
分钟被改变文件状态的文件
-ctime n
查找系统中最近n*24
小时被改变文件状态的文件
-mmin n
查找系统中最近n
分钟被改变文件数据的文件
-mtime n
查找系统中最近n*24
小时被改变文件数据的文件
-exec
对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } ;
, 注意{ }
和;
之间的空格。
-ok
和-exec
的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
例一
find / -name -f "*.log" -print
输出
/var/log/anaconda.storage.log
/var/log/r6389.log
/var/log/anaconda.program.log
/var/log/mysqld.log
用来查找 /
目录下面所有名称匹配*.log
的普通文件, -print
参数指示find
命令将查找到的文件输出到标准输出
例二
find / -name "*.log" -type f -atime +2 -ls
输出
132745 152 -rw------- 1 root root 152119 Mar 19 2015 /log/storage.log
132741 4 -rw-r--r-- 1 root root 98 Nov 10 10:29 /log/r6389.log
132744 36 -rw------- 1 root root 32844 Mar 19 2015 /log/program.log
132742 24 -rw------- 1 root root 21233 Mar 19 2015 /log/anaconda.log
用来查找 /
目录中所有匹配*.log
而且在最近2天以内未被访问过的普通文件, 然后输出查找到的文件详情
例三
find / -name "*.log" -type f -mtime +7 -print0 | xargs -0 /bin/rm -f
用来删除 \目录中所有匹配*.log
而且一周内未被修改过的普通文件, -print0
和 xargs -0
结合用来处理文件名中含有换行符或者其他空白字符的情况。find
命令的-print
参数默认以换行符结束文件名, 而-print0
则以空字符结束。