首页 > 技术文章 > 一些零散笔记

flhs 2020-07-09 16:42 原文

alpine

修改镜像(阿里云)

sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

telnet不是通过 apk add telnet 安装,而是需要安装busybox-extras

$ apk add busybox-extras
$ busybox-extras telnet xxx xx

kubectl自动补全与别名

$ echo "alias k='sudo kubectl'" >> ~/.bashrc
$ echo "source <(sudo kubectl completion bash | sed 's/kubectl/k/g')" >> ~/.bashrc
$ source ~/.bashrc

配置docker的镜像加速

$ vi /etc/docker/daemon.json  

//添加以下内容
{
     "registry-mirrors": ["https://hub-mirror.c.163.com"]
}

RUN指令内容失效

Dockerfile VOLUME的目录,RUN命令操作该目录无效

CentOS7 yum源

阿里云

cd /etc/yum.repos.d/ && mv CentOS-Base.repo CentOS-Base.repo_bak && wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

epel源

yum -y install epel-release

最后 yum clean all && yum makecache

Git颜色设置

git config --global color.status auto  
git config --global color.diff auto  
git config --global color.branch auto  
git config --global color.interactive auto

linux

sed多次替换

sed -i 's/aaa/AAA/g;s/bbb/BBB/;s/ccc/CCC/' file.txt

curl输出后换行

echo '-w "\n"' >> ~/.curlrc

后台运行命令

nohup command >file 2>&1 &

命令解释:

  • 最后的&作用是将命令在后台运行,不占用控制台
  • 但是当关闭终端时,命令会终止,nohup可以使之继续运行(no hang up)
  • >表示重定向,>file表示将标准输出(默认)重定向到文件file中,也就是1>file
  • 2>&1将标准错误重定向到标准输出(0:键盘输入,1:标准输出,2:错误输出),其中&1中的&表示1是一个描述符,而不是普通文件。

何2>&1要写在后面?

  • command > file 2>&1
    首先是command > file将标准输出重定向到file中, 2>&1 是标准错误拷贝了标准输出的行为,也就是同样被重定向到file中,最终结果就是标准输出和错误都被重定向到file中。
  • command 2>&1 >file
    2>&1 标准错误拷贝了标准输出的行为,但此时标准输出还是在终端。>file 后输出才被重定向到file,但标准错误仍然保持在终端。

du结果排序

du -h --max-depth=2|sort -hr

两个文件的交集与差集计算

# 交集
sort a.txt b.txt | uniq -d
# 并集
sort a.txt b.txt | uniq 
# 差集
# a.txt - b.txt:
sort a.txt b.txt b.txt | uniq -u
# b.txt - a.txt:
sort b.txt a.txt a.txt | uniq -u

tar批量解压文件

ls *.tar.gz|xargs -n1 tar -xzf

批量ssh认证

sshpass -f ~/.ssh/passfile ssh-copy-id -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no xxx@yyy.com

kubectl多集群配置及命令补全

kubectl默认读取~/.kube/config的内容连接kubernetes集群,别名及命令补全可见官网,这里给kubectl定义了别名k

source <(kubectl completion zsh)
echo 'alias k=kubectl' >>~/.zshrc
echo 'complete -F __start_kubectl k' >>~/.zshrc

假如需要连接另一个名为foo的集群时(对应config为~/.kube/fooconfig),可以使用k --kubeconfig ~/.kube/fooconfig或者KUBECONFIG=~/.kube/fooconfig k
但是这样不太方便,就需要自己再定义一个别名kf并配置命令补全。

执行kubectl completion zsh > ~/.kube/kubectl.complete保存补全shell
vim ~/.kube/kubectl.complete复制__start_kubectl整个函数并命名为__start_kubectl_foo
然后在函数体的第一行添加export KUBECONFIG=~/.kube/fooconfig即可。
上代码:

__start_kubectl()
{
  #函数体
}

#复制自__start_kubectl
__start_kubectl_foo()
{
  #只额外添加这一行就可以了
  export KUBECONFIG=~/.kube/fooconfig
  #函数体
}

下一步是要更改.zshrc。注意需要注释掉最开始添加的source <(kubectl completion zsh),最终代码如下

# 被注释
# source <(kubectl completion zsh)
# 加载修改后的补全脚本
source ~/.kube/kubectl.complete
# 默认集群的别名配置和自动补全
alias k='kubectl'
complete -F __start_kubectl k
# foo集群的别名配置和自动补全
function kf (){
  KUBECONFIG=~/.kube/fooconfig kubectl "$@"
}
complete -F __start_kubectl_foo kb

推荐阅读