截取分割

#$%

格式 说明
${string: start :length} 从 string 字符串的左边第 start 个字符开始,向右截取 length 个字符。
${string: start} 从 string 字符串的左边第 start 个字符开始截取,直到最后。
${string: 0-start :length} 从 string 字符串的右边第 start 个字符开始,向右截取 length 个字符。
${string: 0-start} 从 string 字符串的右边第 start 个字符开始截取,直到最后。
${string#*chars} 从 string 字符串第一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。
${string##*chars} 从 string 字符串最后一次出现 *chars 的位置开始,截取 *chars 右边的所有字符。
${string%*chars} 从 string 字符串第一次出现 *chars 的位置开始,截取 *chars 左边的所有字符。
${string%%*chars} 从 string 字符串最后一次出现 *chars 的位置开始,截取 *chars 左边的所有字符。
1
var=https://github.com/csyuancode/csyuancode.github.io/tree/master/js

#

从左边开始截取删除保留匹配剩下字符

1
2
3
4
5
6
7
8
9
10
cs@debian:~/oss/hexo$ var=https://github.com/csyuancode/csyuancode.github.io/tree/master/js

#一次匹配
cs@debian:~/oss/hexo$ echo ${var#*cs}
yuancode/csyuancode.github.io/tree/master/js

##最后一次匹配
cs@debian:~/oss/hexo$ echo ${var##*cs}
yuancode.github.io/tree/master/js

%

从末尾开始往前删除保留匹配剩下字符

1
2
3
4
5
6
7
8
9
cs@debian:~/oss/hexo$ var=https://github.com/csyuancode/csyuancode.github.io/tree/master/js

#截取从后面开始第一次cs前字符
cs@debian:~/oss/hexo$ echo ${var%cs*}
https://github.com/csyuancode/

#截取从后面开始最一次cs前字符
cs@debian:~/oss/hexo$ echo ${var%%cs*}
https://github.com/

containerd安装

Installing containerd

https://github.com/containerd/containerd/releases

1
2
$ tar -zxvf  ../containerd-1.6.19-linux-amd64.tar.gz
scp ./bin/* root@k8s01:/usr/local/bin

Warning: Permanently added ‘k8s01,192.168.122.11’ (ECDSA) to the list of known hosts.
containerd 100% 50MB 172.4MB/s 00:00
containerd-shim 100% 7180KB 167.3MB/s 00:00
containerd-shim-runc-v1 100% 9248KB 161.9MB/s 00:00
containerd-shim-runc-v2 100% 9264KB 169.7MB/s 00:00
containerd-stress 100% 22MB 146.9MB/s 00:00
ctr 100% 26MB 193.4MB/s 00:00

scp上传下载

语法

1
scp [可选参数] file_source file_target
  • -F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。
  • -i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
  • -P port:注意是大写的P, port是指定数据传输用到的端口号
  • -q: 不显示传输进度条。
  • -r: 递归复制整个目录。
  • -v:详细方式显示输出。

k8s1.26.1编译部署

k8s去docker,1.24版本移除 Dockershim https://kubernetes.io/zh-cn/blog/2022/02/17/dockershim-faq/

kubernetes

准备

1.26.1 需要>=go1.19 go env

1
2
3
4
5
6
7
8
9
wget  https://github.com/golang/go/archive/refs/tags/go1.19.tar.gz
export GOROOT=/opt/go/1.19
export GOPROXY="https://goproxy.cn,direct"
export PATH=$PATH:$GOROOT/bin

git clone https://github.com/kubernetes/kubernetes
cd kubernetes
go mod vendor
make

#编译指定组件

$ make WHAT=cmd/kubelet
+++ [0325 21:01:36] Building go targets for linux/amd64
k8s.io/kubernetes/cmd/kubelet (non-static)

$ make kubectl kubeadm kubelet
+++ [0325 21:19:43] Building go targets for linux/amd64
k8s.io/kubernetes/cmd/kubectl (static)

+++ [0325 21:21:23] Building go targets for linux/amd64
k8s.io/kubernetes/cmd/kubeadm (static)

+++ [0325 21:19:45] Building go targets for linux/amd64
k8s.io/kubernetes/cmd/kubelet (non-static)

#不同机器编译的 GLIBC_2.34版本不同,存在不兼容情况

KUBE_BUILD_PLATFORMS=linux/amd64 make WHAT=cmd/kubelet GOFLAGS=-v GOGCFLAGS=”-N -l”

network

go环境配置

https://github.com/golang/go

编译

GOPATH之下主要包含三个目录:

bin 编译后可的执行文件的存放路径

pkg 编译包时,生成的.a文件的存放路径

src 源码路径

升级或编译源码,需要旧的二进制版本来编译

1
2
3
4
5
6
7
8
9
10
export GOROOT=/opt/go/1.18.1
export PATH=$PATH:$GOROOT/bin
export GOROOT_BOOTSTRAP=/opt/go/1.18.1

git clone https://github.com/golang/go.git
cd go
git checkout go1.20.1
cd ./src
./make.bash

Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.17.13

ruby从git拉取编译安装

https://github.com/ruby/ruby/blob/master/doc/contributing/building_ruby.md

build

Dependencies

  1. Install the prerequisite dependencies for building the CRuby interpreter:

    • C compiler

    For RubyGems, you will also need:

    • OpenSSL 1.1.x or 3.0.x / LibreSSL
    • libyaml 0.1.7 or later
    • zlib

    If you want to build from the git repository, you will also need:

    • autoconf - 2.67 or later
    • bison - 3.0 or later
    • gperf - 3.1 or later
      • Usually unneeded; only if you edit some source files using gperf
    • ruby - 2.2 or later
      • We can upgrade this version to system ruby version of the latest Ubuntu LTS.
  2. Install optional, recommended dependencies:

    • readline/editline (libedit, to build readline)
    • libffi (to build fiddle)
    • gmp (if you with to accelerate Bignum operations)
    • libexecinfo (FreeBSD)
    • rustc - 1.58.0 or later (if you wish to build YJIT)

    If you installed the libraries needed for extensions (openssl, readline, libyaml, zlib) into other than the OS default place, typically using Homebrew on macOS, add --with-EXTLIB-dir options to CONFIGURE_ARGS environment variable.

    1
    2
    3
    4
    export CONFIGURE_ARGS=""
    for ext in openssl readline libyaml zlib; do
    CONFIGURE_ARGS="${CONFIGURE_ARGS} --with-$ext-dir=$(brew --prefix $ext)"
    done

用户组命令

user

adduser 与 useradd 指令为同一指令

1
2
[root@localhost ~]# useradd user1
[root@localhost ~]# useradd user2
  • -c<备注>  加上备注文字。备注文字会保存在passwd的备注栏位中。
  • -d<登入目录>  指定用户登入时的起始目录。
  • -D  变更预设值.
  • -e<有效期限>  指定帐号的有效期限。
  • -f<缓冲天数>  指定在密码过期后多少天即关闭该帐号。
  • -g<群组>  指定用户所属的群组。
  • -G<群组>  指定用户所属的附加群组。
  • -m  制定用户的登入目录。
  • -M  不要自动建立用户的登入目录。
  • -n  取消建立以用户名称为名的群组.
  • -r  建立系统帐号。
  • -s   指定用户登入后所使用的shell。
  • -u  指定用户ID。
1
2
#添加一个不能登录的用户
useradd -d /usr/local/apache -g apache -s /bin/false apache
1
2
# -r 删除用户登入目录以及目录中所有文件。
userdel -r name

group

  • /etc/group 组账户信息。
  • /etc/gshadow 安全组账户信息。
  • /etc/login.defs Shadow密码套件配置。
1
2
3
[root@localhost ~]# groupadd group1

groupdel group_name
1
2
3
❯ id www-data
uid=33(www-data) gid=33(www-data) 组=33(www-data)

gpasswd

1
gpasswd [-a user][-d user][-A user,...][-M user,...][-r][-R] groupname
  • -a:添加用户到组;
  • -d:从组删除用户;
  • -A:指定管理员;
  • -M:指定组成员和-A的用途差不多;
  • -r:删除密码;
  • -R:限制用户登入组,只有组中的成员才可以用newgrp加入该组。
载入天数...载入时分秒... ,