不同的操作系统似乎以不同的方式处理夏令时 (DST)。我真的很喜欢 Cisco IOS 方法,它非常简单,可以更改 DST 开始和结束的日期和时间。例如:
clock summer-time EDT recurring 2 Sun Mar 2:00 1 Sun Nov 2:00 60
Run Code Online (Sandbox Code Playgroud)
..在 3 月第二周的星期日 2:00 将时钟提前 60 分钟,并在 11 月第一个星期日的 2:00 将时钟向后移动 60 分钟。Linux 如何处理夏令时?我知道有一个tzdata包含时区数据文件的包,这些文件安装到/usr/share/zoneinfo/目录中。这些文件是如何以及由哪些实用程序使用的?我可以在文件中看到 UTC(2) 和时区名称(EET 和 EEST)的变化:
T60:~# strings /usr/share/zoneinfo/posix/Europe/Helsinki
TZif2
HMT
EEST
TZif2
EEST
EET-2EEST,M3.5.0/3,M10.5.0/4
T60:~#
Run Code Online (Sandbox Code Playgroud)
另外,M3大概是第三个月,M10是第十个月?此外,还应在某处指定偏移量。例如,在 IOS 中,可以配置一旦 DST 发生,时钟就会移动 90 或 120 分钟而不是 60 分钟。
我有一个 Linux 内核虚拟桥,它包含接口eth1和tap0:
# brctl show br0
bridge name bridge id STP enabled interfaces
br0 8000.00016c404fa3 no eth1
tap0
#
Run Code Online (Sandbox Code Playgroud)
现在,当我查看虚拟交换机的 MAC 地址表时,它显示端口号2(tap0接口)和3(eth1接口):
# brctl showmacs br0
port no mac addr is local? ageing timer
3 00:00:5e:00:01:c9 no 0.11
3 00:01:6c:40:2d:94 no 0.53
3 00:01:6c:40:4f:a3 yes 0.00
3 00:01:6c:55:3a:72 no 55.33
3 00:02:b3:8d:48:a7 no 0.53
3 00:0a:e4:2f:53:bb no 0.59
3 00:0b:82:0a:bc:cc no 16.98
3 00:0c:29:07:3e:de no 9.12
3 …Run Code Online (Sandbox Code Playgroud) 我有一台PC(内核3.2.0-23泛型)已192.168.1.2/24配置为eth0接口,并且也使用192.168.1.1和192.168.1.2地址tun0接口:
root@T42:~# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:16:41:54:01:93 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.2/24 scope global eth0
inet6 fe80::216:41ff:fe54:193/64 scope link
valid_lft forever preferred_lft forever
3: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN …Run Code Online (Sandbox Code Playgroud) 我知道这是简化/概括的解释,但top(1)实用程序将 FreeBSD 中的内存划分为六个池Active- Inactive、Wired、Cache、Buffers和Free。top(1)输出示例:
Mem: 130M Active, 42M Inact, 51M Wired, 14M Cache, 34M Buf, 648K Free
Swap: 512M Total, 512M Free
Run Code Online (Sandbox Code Playgroud)
Active由正在运行的进程Wired使用,主要用于内核。Inactive是来自关闭进程的内存,如果需要重用,它仍然Cache被缓存,是缓存数据,Buffers是磁盘缓冲区(我猜它类似于cachedLinuxfree(1)输出(?))并且Free是完全未使用的内存。我是正确的是FreeBSD内核自动分配的空间Inactive,Cache和Buffers池Active或者Wired如果需要的话?
As I understand, locale-gen utility generates /usr/lib/locale/locale-archive database based on entries in /etc/locale.gen file and locale template/configuration files in /usr/share/i18n/locales/. In addition, utilities store their translation files in Machine Object format under /usr/share/locale/<locale_dir>/LC_MESSAGES/ directory. For example:
# dpkg -L wget | grep nl
/usr/share/locale/nl
/usr/share/locale/nl/LC_MESSAGES
/usr/share/locale/nl/LC_MESSAGES/wget.mo
#
Run Code Online (Sandbox Code Playgroud)
When I execute for example strace -e open wget, then I can see that both /usr/lib/locale/locale-archive and /usr/share/locale/nl/LC_MESSAGES/wget.mo files are opened.
What localization data is stored in files in /usr/share/locale/<locale_dir>/LC_MESSAGES/ directory …
如果我执行ss -lu以查看所有侦听的 UDP 套接字,则不会显示任何套接字。如果我执行ss -au,它列出了所有(侦听和非侦听)UDP 套接字,则“侦听”套接字显示为 UNCONN(见下文)。
这背后的逻辑是什么?例如,运行atftpd监听连接,状态应该是 LISTEN 而不是 UNCONN,不是吗?
T60:~ # lsof -n | sed -n '1p;/UDP/p'
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
avahi-dae 963 avahi 11u IPv4 9088 0t0 UDP *:mdns
avahi-dae 963 avahi 12u IPv4 9089 0t0 UDP *:44639
cupsd 1238 root 10u IPv4 8160 0t0 UDP *:ipp
dhcpcd 2072 root 7u IPv4 532052 0t0 UDP *:bootpc
dhclient6 13131 root 5u IPv6 38031 0t0 UDP *:dhcpv6-client …Run Code Online (Sandbox Code Playgroud) 当我在主目录中创建一个没有写权限的文件时:
$ umask 777; touch testfile
$ ls -ln testfile
---------- 1 1000 1000 0 2014-03-21 16:52 testfile
$
Run Code Online (Sandbox Code Playgroud)
..然后我仍然可以轻松删除该文件:
$ rm -fv testfile
removed `testfile'
$
Run Code Online (Sandbox Code Playgroud)
当我创建一个对我没有写权限的目录没有写权限的文件时,我无法删除这样的文件:
$ ls -lnd /var/
drwxr-xr-x 14 0 0 4096 2014-03-21 17:04 /var/
$ ls -ln /var/testfile
---------- 1 1000 1000 0 2014-03-21 17:04 /var/testfile
$ rm -vf /var/testfile
rm: cannot remove `/var/testfile': Permission denied
$
Run Code Online (Sandbox Code Playgroud)
我是否正确地认为写权限是从父目录继承的?读取和执行权限也是如此吗?
--ifconfig为点对点隧道接口配置本地和对等 IP 地址的选项是OpenVPN的强制性配置选项。但是,本地和对等 IP 地址的用途是什么?我能想到的唯一目的是可以使用这些 IP 地址将流量路由到隧道。例如ip route add 10.10.3.0/24 via 192.168.1.2 dev tun0,192.168.1.2对等 IP 地址在哪里。然而,对于点对点链路,应该能够将流量直接路由到接口上,例如ip route add 10.10.3.0/24 dev tun0。
如果我tun用ip tuntap add mode tun命令创建一个接口并用命令强制它管理起来ip link set dev tun1 up,那么接口本身总是“物理”关闭:
root@A58:~# ip link show dev tun1
46: tun1: <NO-CARRIER,POINTOPOINT,MULTICAST,NOARP,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 500
link/none
root@A58:~#
Run Code Online (Sandbox Code Playgroud)
这是有道理的,因为没有应用程序连接到此接口。但是,tun0我的系统中也有“物理”启动:
root@A58:~# ip link show dev tun0
45: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT qlen 100
link/none
root@A58:~#
Run Code Online (Sandbox Code Playgroud)
有没有办法找出哪个进程连接到这个tun0接口?我没有运气ps -ef | grep tun0或lsof | grep tun0。
我有一台带有两个 IP 地址的接口的机器:
inet 192.168.1.15/32 scope global eth0
inet 10.10.118.45/24 brd 10.10.118.255 scope global eth0:hosts4
Run Code Online (Sandbox Code Playgroud)
例如ip -s route get 8.8.8.8,如果我执行,则根据此,出口数据包将具有源 IP 地址10.10.118.45:
8.8.8.8 via 10.10.118.254 dev eth0 src 10.10.118.45
cache users 1 used 1
Run Code Online (Sandbox Code Playgroud)
但是,当我例如ping或SSHto 时8.8.8.8,则源 IP 为192.168.1.15:
15:19:38.092508 IP 192.168.1.15 > 8.8.8.8: ICMP echo request, id 9135, seq 2, length 64
15:19:38.097962 IP 8.8.8.8 > 192.168.1.15: ICMP echo reply, id 9135, seq 2, length 64
Run Code Online (Sandbox Code Playgroud)
在这种情况下ip …