所以我正在寻找的是一个接口索引(或名称),但真正的。
if_nametoindex(3)并且ioctl(2)似乎没有帮助我在这里。现在我发现如何做到这一点的唯一方法是通过/sys. 让我举例说明我需要什么:
# cat /sys/class/net/bond0.1007/ifindex
26
# cat /sys/class/net/bond0.1007/iflink
23 <-- I need either this or a reference to bond0
# cat /sys/class/net/bond0/ifindex
23
Run Code Online (Sandbox Code Playgroud)
有没有办法通过函数调用来做到这一点,或者唯一的方法是sysfs?
我正在创建一个脚本来轮询有关网络接口的信息。为此,我从/sysfs.
一切都很顺利,直到我想澄清接口的所有可能状态(顺便说一句,它们是什么?我现在只知道up,down和unknown)。我通过/usr/src/linux/Documentation/sysfs-rules.txt并发现了这个:
访问 /sys/class/net/eth0/device 是应用程序中的一个错误
是否有一个原因?有人可以通过从 获取信息来解释我是否做错了/sysfs什么吗?
我不会遍历所有接口,/sysfs而是使用getifaddrs(3). 也许还有另一种方法可以获得 iface 状态?谢谢。
我的板上有一个systemd/journald正在运行。该系统是通过以下方式构建的yocto;systemd版本是 216。
我想得到的是内核启动日志,可以通过journalctl -k. 但据我所知,这个选项的长版本是--dmesg,这让我认为这是从内核环缓冲区中检索到的。显然,如果系统运行数天,我可能无法获得此信息。我的理解在这里正确吗?
现在的问题是是否可以journald在系统启动后立即转储此信息?如果没有,仅journalctl -k > dmesg.log作为启动过程的最后一步调用是否足够?
我不小心从脚本中获取了错误的环境。有什么方法可以“取消”它,或者换句话说,可以恢复它并恢复以前的环境?
当然,显而易见的答案是从干净的 shell 会话开始,但我很好奇是否有其他解决方案。
更新:我指的只是一个设置一些变量的脚本。
我想获取依赖于请求包的包列表。例如,我想获取所有依赖于telnet. 我想出了这个脚本:
for i in `rpm -qa | sort`;
do rpm -qR $i | grep telnet > /dev/null;
if [ $? -eq 0 ]; then
echo $i;
fi;
done
Run Code Online (Sandbox Code Playgroud)
有更好的方法吗?
谢谢。
shell ×2
sysfs ×2
bash ×1
dependencies ×1
ioctl ×1
rpm ×1
shell-script ×1
system-calls ×1
systemd ×1
zsh ×1