小编Mar*_*tin的帖子

tzdata 数据库究竟是如何使用的?

不同的操作系统似乎以不同的方式处理夏令时 (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 分钟。

clock

10
推荐指数
1
解决办法
6720
查看次数

了解 Linux 内核虚拟网桥端口编号

我有一个 Linux 内核虚拟桥,它包含接口eth1tap0

# brctl show br0
bridge name     bridge id               STP enabled     interfaces
br0             8000.00016c404fa3       no              eth1
                                                        tap0
# 
Run Code Online (Sandbox Code Playgroud)

现在,当我查看虚拟交换机的 MAC 地址表时,它显示端口号2tap0接口)和3eth1接口):

# 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)

bridge linux-kernel

10
推荐指数
1
解决办法
3335
查看次数

如果请求的 IP 地址与另一个(禁用)接口相关联,Linux 不会回复 ARP 请求消息

我有一台PC(内核3.2.0-23泛型)已192.168.1.2/24配置为eth0接口,并且也使用192.168.1.1192.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)

networking linux-kernel arp

9
推荐指数
1
解决办法
5万
查看次数

FreeBSD 如何分配内存?

我知道这是简化/概括的解释,但top(1)实用程序将 FreeBSD 中的内存划分为六个池Active- InactiveWiredCacheBuffersFreetop(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内核自动分配的空间InactiveCacheBuffersActive或者Wired如果需要的话?

freebsd kernel

9
推荐指数
1
解决办法
1790
查看次数

Difference between locale-archive and Machine Object files in /usr/share/locale/&lt;locale_dir&gt;/LC_MESSAGES/ directory?

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 …

debian locale

9
推荐指数
1
解决办法
1123
查看次数

为什么 ss(8) 与 netstat(8) 对监听 UDP 端口的理解不同?

如果我执行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)

udp netstat

8
推荐指数
1
解决办法
1万
查看次数

删除用户无权写入的文件背后的逻辑

当我在主目录中创建一个没有写权限的文件时:

$ 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)

我是否正确地认为写权限是从父目录继承的?读取和执行权限也是如此吗?

permissions rm

8
推荐指数
2
解决办法
2万
查看次数

tun接口上IP地址的用途?

--ifconfig为点对点隧道接口配置本地和对等 IP 地址的选项是OpenVPN的强制性配置选项。但是,本地和对等 IP 地址的用途是什么?我能想到的唯一目的是可以使用这些 IP 地址将流量路由到隧道。例如ip route add 10.10.3.0/24 via 192.168.1.2 dev tun0192.168.1.2对等 IP 地址在哪里。然而,对于点对点链路,应该能够将流量直接路由到接口上,例如ip route add 10.10.3.0/24 dev tun0

openvpn

8
推荐指数
1
解决办法
1万
查看次数

如何找出哪个进程使隧道接口(tun)保持运行状态?

如果我tunip 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 tun0lsof | grep tun0

linux text-processing network-interface

8
推荐指数
2
解决办法
4232
查看次数

“ip route get”显示错误的源IP地址

我有一台带有两个 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)

但是,当我例如pingSSHto 时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 …

linux routing ip

8
推荐指数
1
解决办法
6230
查看次数