该fuser命令让我知道哪些进程正在使用文件或目录.
我正在寻找相反的命令:让我知道进程正在使用哪些文件.
忘记提到它是用于Solaris系统的.
我知道有一个fuser命令列出了进程的pids,但是你如何持续监视访问该文件的进程?(认为行为类似于tail -f filename)
假设有一个进程写入文件并以某个间隔释放句柄,因此使用fuser很难捕获该进程.
我们网络上的用户通过 AFP 连接将文件复制到服务器上名为“DropBox”的目录中,只需使用 Finder 拖动它们即可。
服务器上运行的脚本定期检查“DropBox”中是否存在新文件,然后使用mv将它们移动到其他目录中。
脚本如何检查文件是否正在被复制(并等待该过程完成后再将其移走)?
我尝试使用定影器文件名但没有成功。如果文件副本是由远程计算机发出的,fuser会报告没有进程正在使用该文件。
我通常使用fusion命令来检查打开特定 tcp 端口的 pid,如下所示
fuser 22/tcp //To get pid opening the 22 tcp port
Run Code Online (Sandbox Code Playgroud)
我有一个运行嵌入式Linux 的参考板。它已经打开 22 tcp 端口用于 ssh 连接。但fuser 不显示任何有关22 端口的输出。所以我尝试了另一个 ssh 守护进程来打开 322 端口,然后尝试使用 fusionr 检查 pid,它工作正常。
root@imx6qsabreauto:~# netstat -nlt | grep 22
tcp 0 0 0.0.0.0:4224 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:322 0.0.0.0:* LISTEN
tcp 0 0 :::322 :::* LISTEN
tcp 0 0 :::22 :::* LISTEN
root@imx6qsabreauto:~# fuser 322/tcp
351
root@imx6qsabreauto:~# ps -ef | grep 351
root 351 1 0 01:46 ? 00:00:00 /usr/sbin/dropbear …Run Code Online (Sandbox Code Playgroud) #!/bin/bash
fuser /mount/foo
echo $?
if [ $? = 0 ]; then
echo "There are no processes accessing foo."
else
echo "foo is in use."
Run Code Online (Sandbox Code Playgroud)
回声$?返回'1'是因为热熔器进程正在访问挂载 - 而不是回显"正在使用挂载",它回应"没有进程访问挂载".我不确定除语法之外可能导致这种相反的行为,但也许我正在完全错误地构建它.
我想要一个 Jenkins 作业来杀死端口 5000 (bash) 上的所有进程。简单的解决方案
fuser -k 5000/tcp
Run Code Online (Sandbox Code Playgroud)
当我在终端中执行此命令时工作正常,但在 Jenkins(“执行 shell”)上将构建标记为失败。
我也尝试过
kill $(lsof -i -t:5000)
Run Code Online (Sandbox Code Playgroud)
但同样,因为它在常规终端上工作,所以在詹金斯上我得到
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
Build step 'Execute shell' marked build as failure
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决这一问题?