lsof命令可以列出打开的文件,包括网络连接。
我认为它应该像其他系统工具一样工作,这些工具从Linux文件系统中的/proc/、/dev/或/sys位置收集信息。
但是,当我试图从这些位置查找有关打开文件的信息时,我失败了:
ls /proc/self/fd
ls /proc/net/tcp
ls /dev/fd/
lsof是如何获得这些信息的?
我试图在我的linux机器上运行weblogic服务器,并得到以下错误:
ERROR: transport error 202: bind failed: Address already in use
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:690]
FATAL ER
linux命令"lsof“返回正在访问的文件,我在shell中尝试使用vi打开一个文件,用kwrite打开另一个文件,然后返回并得到vi的进程,但没有kwrite进程,如下所示
[linux@localhost shell_ex]$ lsof +d .
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 3458 linux cwd DIR 253,2 50 953101 .
bash 3747 linux cwd DIR 253,2 50 95
我正在尝试确定哪个应用程序正在使用某个端口并获取netstat -tlnp | grep <port> for Linux。
此命令返回以下输出:
(Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.)
tcp 0 0 0.0.0.0:<port> 0.0.0.0:* LISTEN 3591/java
我只需要在结果中获得进程名和PID,即java3591。
做这件事
对于我的Ubuntu上的服务列表,在端口515上找不到打印机服务。
nmap -sT -O localhost
PORT STATE SERVICE
23/tcp open telnet
139/tcp open netbios-ssn
445/tcp open microsoft-ds
631/tcp open ipp
9050/tcp open tor-socks
Device type: general purpose
Running: Linux 3.X
OS CPE: cpe:/o:linux:linux_kernel:3
OS details: Lin
我让人把文件上传到我的Ubuntu服务器上的一个目录中。
仅当我知道这些文件已完全上载时,我才需要将这些文件移动到最终位置(另一个目录)。
到目前为止,我的脚本如下:
#!/bin/bash
cd /var/uploaded_by_users
for filename in *; do
lsof $filename
if [ -z $? ]; then
# file has been closed, move it
else
echo "*** File is open