如果我使用的是 Ubuntu 或 Linux Mint(我尝试过并且知道肯定有效的仅有的两种版本),我可以运行这样的程序:
wayne@myhost$ ssh wayne@otherhost.local
Run Code Online (Sandbox Code Playgroud)
并且该名称会自动解析为我本地网络上其他主机的任何 IP。
我决定开始扩展到其他发行版,并且我的笔记本电脑上运行了 Arch - 但是如果我尝试使用之前的命令,我会得到 Could not resolve hostname otherhost.local: Name or service not known
获得这种自动名称解析(?)需要什么?
好的,首先,这不是我面临的问题,但我想更好地理解这一点。
如果我想从命令行关闭/重启我的机器,我需要调用:
$ sudo poweroff
$ sudo reboot
Run Code Online (Sandbox Code Playgroud)
也就是说,我需要 root 权限才能进行这些 ACPI 调用。
但是,我启动了我的 DE,(我使用 XFCE)而不授予它 root 权限:$ startxfce4 --with-ck-launch
现在,我知道该--with-ck-launch参数有助于 XFCE 关闭/重新启动我的系统,但我不明白如何。
什么允许 ConsoleKit 在没有 root 权限的情况下关闭?它如何在没有超级用户权限的情况下更改运行级别?既然有可能,我如何在没有 root 权限的情况下从控制台关闭我的机器?
我有一台显示器通过 HDMI 连接到我的机器。
现在,如果有人要关闭显示器,通过其上的软按钮或移除电源线,我希望收到通知并运行 Shell 脚本。
我尝试了多种方法来识别显示器何时打开或关闭(它始终处于连接状态)。唯一接近的技术是:
# ddccontrol -p
当外接显示器连接时,这将返回有关显示器的各种详细信息。我可以编写一个脚本来解析输出。然而,对于无监督的使用,这似乎是一种不可靠的技术。
有什么方法可以让我获得有关显示器是否打开/关闭的“是/否”答案?
编辑:如果我能收到有关状态更改的消息,那就更好了。由于这将连续运行数天,我不想轮询监视器的状态。相反,如果它被关闭,我希望通过消息获得通知。
我的.bashrc文件中有以下功能:
extract() {
local c e i
(($#)) || return
for i; do
c=''
e=1
if [[ ! -r $i ]]; then
echo "$0: file is unreadable: \`$i'" >&2
continue
fi
case $i in
*.t@(gz|lz|xz|b@(2|z?(2))|a@(z|r?(.@(Z|bz?(2)|gz|lzma|xz)))))
c='bsdtar xvf';;
*.7z) c='7z x';;
*.Z) c='uncompress';;
*.bz2) c='bunzip2';;
*.exe) c='cabextract';;
*.gz) c='gunzip';;
*.rar) c='unrar x';;
*.xz) c='unxz';;
*.zip) c='unzip';;
*) echo "$0: unrecognized file extension: \`$i'" >&2
continue;;
esac
command $c "$i"
e=$?
done
return $e
}
Run Code Online (Sandbox Code Playgroud)
现在这在我当前的 Arch Linux 系统上对我来说非常有效。最近,我安装了新的 void-linux …
arch-linux ×1
bash ×1
consolekit ×1
hardware ×1
hdmi ×1
hostname ×1
linux ×1
monitoring ×1
networking ×1
privileges ×1
shutdown ×1
wildcards ×1