我有几个Debian计算机和一些近乎孤立的脚本解释器,例如/bin/bash3和/usr/bin/perl510 。 我怎样才能发现那些仍然有上述口译员的脚本? #!/bin/bash3 要么 #!/usr/bin/perl510 recursionsearch文件系统并不是一个真正可行的select。 重命名解释器以使脚本失败也不在卡片中。 我成功地使用incrond作为incrond的root来检测这些老解释器的用法 。 从那里我打电话给一个简单的shell脚本来了解更多,但是PPID是incrond的。 fuser和lsof没有返回任何东西。 #!/bin/bash LOG=/tmp/icc.log echo "PID is $$" >> ${LOG} echo "PPID is ${PPID}" >> ${LOG} echo "\$1 is ${1}" >> ${LOG} echo "fuser ${1}" >> ${LOG} fuser ${1} >> ${LOG} echo >> ${LOG} echo "lsof ${1}" >> ${LOG} lsof ${1} >> ${LOG} echo >> […]
跑: lsof|grep delete 可以find一些打开fd的进程,但是系统表示已经删除了: mingetty 2031 root txt REG 8,2 15256 49021039 /sbin/mingetty (deleted) 我看在/ proc文件系统中: ls -l /proc/[pid] lrwxrwxrwx 1 root root 0 9月 17 16:12 exe -> /sbin/mingetty (deleted) 但实际上,可执行文件(/ sbin / mingetty)在/ sbin / mingettypath中是正常的。 和一些套接字显示这种情况: ls -l /proc/[pid]/fd 82 -> socket:[23716953] 但是,使用命令: netstat -ae|grep [socket id]可以find它。 为什么操作系统显示这些信息?
有没有办法来判断一个进程是否用O_SYNC标志打开一个文件? 我以为LSF可能能够做到这一点,但无法find一个方法。
我想logging在Mac OS X服务器上的所有networkingstream量(如tcpdump一样),但包括负责的stream程的ID。 使用lsof只会给我当前的连接,而不是过去的连接。 有没有办法做到这一点? 问候,乔臣
lsof | grep / var给我下面的错误 lsof: WARNING: can't stat() fuse.gvfs-fuse-daemon file system /home/user/.gvfs Output information may be incomplete. 有什么可能的原因呢?
我知道我可以使用lsof path/to/file来查看哪些进程当前打开了给定的文件。 有没有类似top的命令可以用来持续监视哪个进程打开了给定的文件?
遇到一个LAMP应用程序的间歇性问题,其中Apache分叉到它的ServerLimit和研磨到(近)停止。 任何httpd进程的strace都会显示很多慢的epoll_wait调用。 1.254721 epoll_wait(14, {{EPOLLIN, … 3.296430 epoll_wait(14, {{EPOLLIN, … 1.018047 epoll_wait(14, {{EPOLLIN, … 1.279721 epoll_wait(14, {{EPOLLIN, … 1.145649 epoll_wait(14, {{EPOLLIN, … 1.269836 epoll_wait(14, {{EPOLLIN, … 1.094779 epoll_wait(14, {{EPOLLIN, … 1.205911 epoll_wait(14, {{EPOLLIN, … 9.052785 epoll_wait(14, {{EPOLLIN, … 1.116279 epoll_wait(14, {{EPOLLIN, … 1.027709 epoll_wait(14, {{EPOLLIN, … 1.178679 epoll_wait(14, {{EPOLLIN, … 1.336032 epoll_wait(14, {{EPOLLIN, … 2.541861 […]
我有一个运行在8核心8核心虚拟机上的Apache 2.2.3 Web服务器。 在负载testing期间,Web服务器停止响应,平均负载高达1000。 当我运行Top命令时,我看到大量的httpd进程被卡在“D”状态。 我做了一些search,似乎“D”状态意味着不间断的睡眠。 我整理了一个卡住的进程,下面是输出: # strace -p 27843 Process 27843 attached – interrupt to quit fcntl(34, F_SETLKW, {type=F_WRLCK, whence=SEEK_SET, start=0, len=1} 然后我做了一个lsof来检查fd 34是什么,下面是输出: httpd 27843 apache 34u REG 8,1 0 131756 /tmp/.xcache.0.0.1292616489.lock (deleted) 看来这可能与xcache的locking问题有关,但是我应该如何继续从这里进行疑难解答?
我有一个脚本,它不断监视一个FTP Dropbox目录,并在进入时处理新文件。脚本在每个文件上运行lsof ,然后再尝试处理它以确定文件是否仍在传输(某些文件很大,需要一段时间来转移),以避免处理不完整的文件。 除了这个特定的FTP客户端之外,一切工作都正常。 出于某种原因,当这个客户端上传一个文件到FTP服务器时,在文件上运行lsof什么也不返回。 我通过运行watch -n0.1 'lsof /path/to/file.txt' ,然后使用两个不同的FTP客户端上传'file.txt'到服务器来testing这个。 当用Cyberduck上传时,lsof返回有关打开文件的数据,当使用其他FTP客户端时,lsof不返回任何内容。 我不明白怎么可能(和FWIW,我用fuser命令得到相同的结果)。 我也正在运行watch -n0.1 'ls -l /path/to/file' ,可以看到客户watch -n0.1 'ls -l /path/to/file'在传输的文件大小,所以我知道客户watch -n0.1 'ls -l /path/to/file' 在写入文件。 我知道有解决方法可以解决我的问题,但是我更关心的是,如果这个FTP客户端可以写入一个文件,而不关心系统,那么这个文件就不会被打开。 和想法? 我在Ubuntu Server 12.04 LTS上运行vsftp 更新: 事实certificate,当我早些时候使用Cyberduck进行testing时,我使用SFTP连接到FTP服务器,而不是FTP。 当我使用FTP上传一个带有Cyberduck的文件时,我遇到了同样的问题 – file upload,但在lsof没有任何显示。 我还使用Debian中的标准FTP客户端使用PUT和APPEND上传文件 – 同样的事情。 它看起来像所有的FTP上传(不pipe客户端)写入其各自的文件,而不用打开文件就系统而言。 我在另一个FTP服务器上testing了这个场景,并且所有的东西都按预期工作 – 当文件被上传的时候,它们显示为在lsof中打开。 所以,我的FTP服务器的具体configuration有问题。 我怀疑它与lsof和/或vsftpd的版本有关。 它们是旧版本,分别是4.81和2.3.2。
运行debian jessie。 以root身份完成以下操作以避免任何权限问题。 首先我find我的程序的PID,然后检查它的打开的文件限制,以validation它设置为1024.但是,当我计算打开文件的数量,我发现1851年。 $ pgrep -x process_name 673 $ prlimit –pid 673 –nofile RESOURCE DESCRIPTION SOFT HARD UNITS NOFILE max number of open files 1024 4096 $ lsof -n -p 673 | grep -c "IPv4" 1851 为了更好的衡量,我检查过程没有任何subprocess,它可能是委托文件开头: $ pgrep -P 673 # no output 这里怎么了?