准备

首先在gcp创建实例

1. 设置当前用户的新密码


$ sudo passwd ${whoami} // 下面以 user 代替 ${whoami}
# 输入新密码

2. 设置下 root 的新密码


$ sudo passwd root
# 输入新密码

3. 在本地生成私钥和公钥


$ cd ~/.ssh
$ ssh-****** -f myKey
或者
$ ssh-keygen -t rsa -f ~/.ssh/my-ssh-key -C [USERNAME]

Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): ( 按enter键即可)
Enter same passphrase again: ( 按enter键即可)
Your identification has been saved in myKey.
Your public key has been saved in myKey.pub.
The key fingerprint is:
SHA256:EW7ow1aaaaaf8mNvk 该邮件地址已受到反垃圾邮件插件保护。要显示它需要在浏览器中启用 JavaScript。
The key's randomart image is:
+---[RSA 2048]----+
|=.o+= o .        |
|o+.o+= + .       |
|o.o..oo *        |
|..o+ +o+ o       |
|.oo+  =+S o      |
| o. * o. = o     |
| ..o =  . =      |
|. o.. .    E     |
| . .o.           |
+----[SHA256]-----+
# 此时会生成 公钥 myKey.pub 和 私钥 myKey

一、定时器的实现原理

定时器的实现,依赖的是CPU时钟中断;时钟中断的精度,决定了定时器精度的极限。那么,一个时钟中断源如何实现多个定时器呢?

对于内核,简单来说就是用特定的数据结构管理众多的定时器,在时钟中断处理中判断哪些定时器超时,然后执行超时处理动作。而用户空间程序不直接感知CPU时钟中断,通过感知内核的信号、IO事件、调度,间接依赖时钟中断。

用软件来实现动态定时器常用数据结构有:时间轮、最小堆和红黑树。下面就是一些知名的实现:

  • Linux内核的 Hierarchy 时间轮算法
  • Asio C++ Library最小堆定时器实现
  • nginx 使用红黑树结构管理定时器事件

下面,介绍一下Linux内核定时器的一些相关代码。

内核启动注册时钟中断:

为文件搜索文字字符串,fgrep命令 是用来搜索 file 参数指定的输入文件(缺省为标准输入)中的匹配模式的行。fgrep 命令特别搜索 Pattern 参数,它们是固定的字符串。如果在 File 参数中指定一个以上的文件 fgrep 命令将显示包含匹配行的文件。

fgrep 命令于 grep 和 egrep 命令不同,因为它搜索字符串而不是搜索匹配表达式的模式。fgrep 命令使用快速的压缩算法。$, *, [, |, (, )和\等字符串被 fgrep 命令按字面意思解释。这些字符并不解释为正则表达式,但它们在 grep 和 egrep 命令中解释为正则表达式。因为这些字符对于 shell 有特定的含义,完整的字符串应该加上单引号' ... '。如果没有指定文件, fgrep 命令假定标准输入。一般,找到的每行都复制到标准输出中去。如果不止一个输入文件,则在找到的每行前打印文件名。

  1. fgrep 命令和带 -F 标志的 grep命令是一样的但出错和用法消息不同-s 标志功能也不同。
  2. 每行限制在 2048 个字节。
  3. 段落(-p 标志下)目前限制在5000个字符的长度。
  4. 不要在特定的文件中运行 grep 命令,因为会产生不可预料的结果。
  5. 输入行不能包含空字符。
  6. 输入文件应该以换行字符结尾。
  7. 虽然可以同时指定很多标志,但某些标志会覆盖其余的标志。例如,如果同时指定 -l 和 -n ,只有文件名写入到标准输出中去。

命令语法


fgrep [选项][参数]

本文分为三个等级自顶向下地分析了glibc中内存分配与回收的过程。本文不过度关注细节,因此只是分别从arena层次、bin层次、chunk层次进行图解,而不涉及有关指针的具体操作。

前言

在展开本文之前,先解释一下本文中会提到的三个重要概念:arena,bin,chunk。三者在逻辑上的蕴含关系一般如下图所示(图中的chunk严格来说应该是Free Chunk)。

Linux glibc malloc

三者概念的解释如下:

arena:通过sbrk或mmap系统调用为线程分配的堆区,按线程的类型可以分为2类:

main arena:主线程建立的arena;

thread arena:子线程建立的arena;

chunk:逻辑上划分的一小块内存,根据作用不同分为4类:

Allocated chunk:即分配给用户且未释放的内存块;

Free chunk:即用户已经释放的内存块;

Top chunk

Last Remainder chunk

bin:一个用以保存Free chunk链表的表头信息的指针数组,按所悬挂链表的类型可以分为4类:

Fast bin

Unsorted bin

Small bin

Large bin

在这里读者仅需明白arena的等级大于bin的等级大于(free)chunk的等级即可,即A>B>C。

Linux NTP

NTP(网络时间协议)

NTP(网络时间协议)是一种运行在端口 123 UDP 上的协议。NTP 将客户端的时间和日期与主服务器同步。

RHEL 8 不再支持 NTP 包。Chrony是默认的 NTP 客户端,也是 Red Hat Enterprise Linux 8 上的 NTP 服务器。


Service Name= chronyd

chrony 和 ntp 的区别