我有一台显示器通过 HDMI 连接到我的机器。
现在,如果有人要关闭显示器,通过其上的软按钮或移除电源线,我希望收到通知并运行 Shell 脚本。
我尝试了多种方法来识别显示器何时打开或关闭(它始终处于连接状态)。唯一接近的技术是:
# ddccontrol -p
当外接显示器连接时,这将返回有关显示器的各种详细信息。我可以编写一个脚本来解析输出。然而,对于无监督的使用,这似乎是一种不可靠的技术。
有什么方法可以让我获得有关显示器是否打开/关闭的“是/否”答案?
编辑:如果我能收到有关状态更改的消息,那就更好了。由于这将连续运行数天,我不想轮询监视器的状态。相反,如果它被关闭,我希望通过消息获得通知。
我想创建一个服务来监视某个进程的存在。我写了以下shell脚本:
#!/bin/sh
while :
do
w=`ps u -A | grep -P ".+Sl.+/usr/local/MySource/endpoint" -c`
sleep 10
if [ $w -lt 2 ]
then
echo 0 > /sys/class/leds/alix\:2/brightness
killall -9 /usr/local/MySource/endpoint
nohup /usr/local/MySource/endpoint &> /dev/null &
last_endpoint_m=`date`
echo $last_endpoint_m > /tmp/endpoint_msleep
echo $w >> /tmp/endpoint_msleep
else
echo 1 > /sys/class/leds/alix\:2/brightness
fi
sleep 10
done
Run Code Online (Sandbox Code Playgroud)
如果进程存在,脚本将关闭我机器上的 LED 并启动进程。LED 应该ON在进程运行时亮起。
然后,我通过将以下行添加到以下行来运行此脚本/etc/rc.local:
nohup /usr/local/MyTools/additions/XR50_endpoint_m &> /dev/null &
Run Code Online (Sandbox Code Playgroud)
当我运行时ps,我发现XR50_endpoint_m &进程在那里。
我的机器是运行 Debian 的资源有限(嵌入式)的 ALIX 板。
问题是:
变量$w …
当网络连接中断时,在笔记本电脑上使用 bind9 会显示很多无意义的域:
Oct 18 19:56:18 lap3 named[1536]: error (network unreachable) resolving './NS/IN': 128.63.2.53#53
Oct 18 19:56:18 lap3 named[1536]: error (network unreachable) resolving 'drgvlofubl/A/IN': 128.63.2.53#53
Oct 18 19:56:18 lap3 named[1536]: error (network unreachable) resolving 'gjpszynvcz/A/IN': 128.63.2.53#53
Oct 18 19:56:19 lap3 named[1536]: error (network unreachable) resolving 'iqgwbuxrbt/A/IN': 192.5.5.241#53
Run Code Online (Sandbox Code Playgroud)
如何找出进行这些查询的程序?
将“调试”添加到 /etc/resolv.conf 似乎没有任何作用(笔记本电脑正在运行 Arch linux 并且似乎没有编译支持调试?)。
下一步是在启用调试的情况下编译 libresolv,除非有更好的事情要做。
像这样的工具从表面上看似乎没有真正的用处,但负责系统的人喜欢吹嘘,正常运行时间只是他们喜欢吹嘘多少 RAM 或 CPU 之后的事情之一系统有。
此外,您有多少次神秘地重启系统,后来才发现它重启了。诸如此类的工具将有助于确定重新启动的频率以及系统在重新启动之间保持运行的时间长度。2 在调试行为不佳的系统时可能有用的信息。
有人知道这样的工具吗?
我试图了解 Linux 块层,所以我正在写一篇关于它的博客:http : //www.linuxintro.org/wiki/blktrAce。当像这样调用 blktrace 时:
blktrace -d /dev/sdg -o - | blkparse -i -
Run Code Online (Sandbox Code Playgroud)
我看到例如输出
8,96 4 695 430.080106382 2356 I N 0 (00 ..) [kworker/4:2]
8,96 3 29 430.082179440 53 D N 0 (00 ..) [ksoftirqd/3]
Run Code Online (Sandbox Code Playgroud)
我不明白这是什么意思。根据 blkparse 的手册页,有一个 RWBS 字段(包含 R 表示读取,W 表示写入,B 表示屏障,D 表示丢弃或 S 表示同步)。通过一些实验,我发现它是第 7 列。但是它包含 N。这是什么意思?我在哪里可以找到信息它意味着什么?
类似于我的上一个问题:打开一个文本文件并让它自行更新;有没有办法我可以做同样的事情,但换一个文件夹?
由于我有一个日志文件夹,我可以tail -f与文件夹一起使用吗?
IE
$ tail -f /tmp/logs/
Run Code Online (Sandbox Code Playgroud)
我知道这行不通,但有没有其他选择?
我正在使用 RHEL 5.10
我有一个程序在正常激活下侦听某个端口。
我不希望程序连续运行。
是否有一种“快速而肮脏”的方法可以将应用程序包装在 shell 脚本或类似的脚本中,以监控适当的端口,并按需启动服务?
最简单的方法可能会导致连接失败,因为包装器必须释放端口,然后启动应用程序。但是,如果客户端在短时间内再次连接,则一切正常。
但如果这一切对客户完全透明,当然会更好。
通过使用time我们可以轻松获得有关程序运行多长时间的信息。我想知道是否有任何等效的命令可以用于内存使用?比如为这个进程分配了多少内存,完成后又释放了多少?我知道我可以使用 Valgrind,但它对我来说有点太重了。
monitoring ×10
memory ×2
networking ×2
process ×2
shell ×2
bind ×1
block-device ×1
daemon ×1
debian ×1
directory ×1
dns ×1
hardware ×1
hdmi ×1
linux ×1
performance ×1
services ×1
tail ×1
tcp ×1
udp ×1
uptime ×1