我正在尝试使用 inotifywait 来监视文件夹:
inotifywait -m -r /home/oshiro/Desktop/work_folder
Run Code Online (Sandbox Code Playgroud)
该命令有效,如果我在该文件夹中创建文件,一切似乎都能正常工作。
当文件夹被监控时,如果我删除它,我会得到以下输出:
/home/oshiro/Desktop/work_folder/ MOVE_SELF
/home/oshiro/Desktop/work_folder/ OPEN,ISDIR
/home/oshiro/Desktop/work_folder/ CLOSE_NOWRITE,CLOSE,ISDIR
/home/oshiro/Desktop/work_folder/ MOVE_SELF
/home/oshiro/Desktop/work_folder/ ATTRIB,ISDIR
/home/oshiro/Desktop/work_folder/ OPEN,ISDIR
/home/oshiro/Desktop/work_folder/ DELETE Untitled Document
/home/oshiro/Desktop/work_folder/ DELETE Untitled Document 2
/home/oshiro/Desktop/work_folder/ CLOSE_NOWRITE,CLOSE,ISDIR
/home/oshiro/Desktop/work_folder/ DELETE_SELF
Run Code Online (Sandbox Code Playgroud)
如果我然后再次重新创建该文件夹,而监视仍在进行,那么 inotifywait 似乎不会继续监视它,除非我inotifywait -m -r /home/oshiro/Desktop/work_folder再次运行。
我该如何解决这个问题?我基本上想监控一个 USB 记忆棒,该记忆棒将在一天内多次插入和移除。当它被拔掉并重新插入时,我认为 inotifywait 将停止监视它,就像上面的文件夹被删除并重新创建一样,inotifywait 无法继续监视它,除非我再次运行上面的命令,即inotifywait -m -r /home/oshiro/Desktop/work_folder
我应该使用更适合此类任务的东西而不是使用 inotifywait 吗?cron 不适合我的需求,因为我不是基于时间的操作,而是基于事件的操作。
我想将 CPU 总利用率作为计数器进行监控。我希望它作为计数器的原因是样本之间的数据不会丢失(并且我可以让绘图端计算速率)。
我最初的方法是使用/proc/uptime公式(uptime-(idle_time/num_core))*100。这通常在大量服务器上似乎是准确的(大约 98% 的时间),但有时我似乎得到了错误的结果。例如,以下内容似乎表明存在负 CPU 使用率,这实际上没有意义:
[root@ny-lb05 ~]# echo -e "scale=10\n ($(cut -f1 -d' ' /proc/uptime)-($(cut -f2 -d' ' /proc/uptime)/16))*100" | bc
5646895.3750000000
[root@ny-lb05 ~]# echo -e "scale=10\n ($(cut -f1 -d' ' /proc/uptime)-($(cut -f2 -d' ' /proc/uptime)/16))*100" | bc
5646891.5625000000
Run Code Online (Sandbox Code Playgroud)
在此服务器上我正在运行:
Linux ny-lb05.ds.stackexchange.com 2.6.32-431.11.2.el6.x86_64 #1 SMP Tue Mar 25 19:59:55 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
有人发现这种计算方法有错误吗?有没有更好的方法来获取 CPU 利用率作为计数器?
更新:
所以我追求的是作为单调递增计数器的总使用时间。我预计总利用率永远不会减少。但以下情况似乎就是这种情况:
[root@ny-lb05 ~]# read uptime idle </proc/uptime; echo -e "scale=1000\n ($uptime*16-($idle))" | …
我正在运行一台“信息亭”计算机——一个供房间内任何人通用的计算机——我想知道是否有人真的在使用它。是否有日志告诉我 Firefox、Chrome 或其他程序何时运行?
我不是要求他们在程序中做什么的日志,只是他们是否被使用。
欢迎任何其他想法。
我知道我可以top用来查看整体实时 CPU 和内存使用情况,
以及nload整体实时带宽使用情况。
但我希望查看程序运行后的最大(或平均)CPU、内存和带宽使用情况。
就像time my_command在程序时间花费估算中所做的一样。
在 Linux/Unix 中是否有一种简单的方法可以做到这一点?
例如,我需要监视文件/tmp/somefile123是否是在某些事件之后创建的。我尝试使用inotifywait但这里有一个问题:
# inotifywait -q -e create /tmp/somefile?*
Couldn't watch /tmp/somefile?*: No such file or directory
Run Code Online (Sandbox Code Playgroud)
因为完全没有这样的文件,我想知道它是否会在那里!
我该如何解决这个问题?
UPD:也许如果我解释一下我想要达到的目标会更清楚。
我需要以最少的 CPU 消耗编写 shell 脚本 (sh),如下所示:
if [ $(inotifywait -e create $SPECIFIC_FILE) ]; then
blah-blah-blah some actions
fi
# And then similarly monitor if this file was deleted and then do another actions
Run Code Online (Sandbox Code Playgroud)
我希望脚本会在inotifywait -e create $SPECIFIC_FILE上停止执行,直到这个 $SPECIFIC_FILE 不会被创建,然后会更好
while [ ! -f $SPECIFIC_FILE ]; do
blah-blah-blah some actions
sleep 1
done
Run Code Online (Sandbox Code Playgroud) 我的网络服务器运行 CentOS,每次访问我的论坛上的某个页面时,都会httpd锁定,我似乎永远无法查明确切的文件。
有没有办法查看当前在基于 CentOS/UNIX 的服务器上打开请求的页面?
我们有一个黑客偶尔会尝试入侵一个网站,但到目前为止没有成功,但我想要一种方法来确定该网站是否已被入侵(即,文件被编辑)。攻击类型是 LFI 并试图在某些源文件中注入 iFrame。如果某些文件或目录被修改,我可以在我的 Debian 服务器上安装什么以通过电子邮件提醒我?
我刚刚在 CentOS 中使用 Apache 部署了我的网络服务器,我想知道是否有人对如何检查服务器出现故障的每个指定时间有什么好主意,然后我可以在发生这种情况时使用 postfix 给我发电子邮件,这样我就可以回去了立即到我的服务器并解决问题,看看是什么导致了问题。我猜很多网站会使用一些软件/脚本来让他们在客户开始抱怨问题之前知道他们的服务何时出现故障。
我不需要以太网的某种实时视觉状态 - 我想在最后五分钟上传少于 X 时运行我的脚本。所以我只需要从某个命令中获取一个数字。你能推荐什么?
我使用 Ubuntu 14.04。
我有一个在树莓派上运行的进程。在 ssh 进入进程后,像这样启动:
nohup .../blah/blah &
Run Code Online (Sandbox Code Playgroud)
IIUC 这允许我注销 pi 并且进程继续运行。但是它有时会死掉,我必须登录并手动重新启动它。有没有办法监控它并让它自己重新启动?
monitoring ×10
linux ×4
centos ×2
cpu ×2
inotify ×2
apache-httpd ×1
bandwidth ×1
cpu-usage ×1
debian ×1
directory ×1
ethernet ×1
files ×1
filesystems ×1
kiosk ×1
logs ×1
memory ×1
mount ×1
networking ×1
nohup ×1
process ×1
raspberry-pi ×1
security ×1
webserver ×1