Linux Shell 自动补全
一直使用kubectl操作k8s集群,每次都需要查看pod名字、查看service名字等,比较麻烦,看了kubectl官方就支持bash自动补全,所以记录一下。
官方文档地址:https://kubernetes.io/zh/docs/tasks/tools/included/optional-kubectl-configs-bash-linux/
本文以Ubuntu20.04下的kubectl为例
Bash自动补全kubectl 的 Bash 补全脚本可以用命令 kubectl completion bash 生成。 在 shell 中导入(Sourcing)补全脚本,将启用 kubectl 自动补全功能。
然而,补全脚本依赖于工具 bash-completion, 所以要先安装它(可以用命令 type _init_completion 检查 bash-completion 是否已安装)。
安装 bash-completion很多包管理工具均支持 bash-completion。 可以通过 apt-get install bash-completion 或 yum install b ...
Nginx使用module_vts模块来做监控
最近我们想要用Prometheus来监控Nginx的状态,所以看了一下有个module可以支持。项目地址在:https://github.com/vozlt/nginx-module-vts.git
重新编译Nginx首先执行nginx -V 查看编译参数,记录一下, 比如
1--prefix=/usr/local/nginx --user=www --group=www --with-stream --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-openssl=../openssl-1.1.1k --with-pcre=../pcre-8.45 --with-pcre-jit --with-ld-opt=-ljemall ...
正则表达式入门
在线测试正则表达式: https://c.runoob.com/front-end/854/
字符匹配普通字符:普通字符按照字面意义进行匹配,例如匹配字母 “a” 将匹配到文本中的 “a” 字符。
元字符:元字符具有特殊的含义,例如 \d 匹配任意数字字符,\w 匹配任意字母数字字符,. 匹配任意字符(除了换行符)等。
量词123456*:匹配前面的模式零次或多次。+:匹配前面的模式一次或多次。?:匹配前面的模式零次或一次。{n}:匹配前面的模式恰好 n 次。{n,}:匹配前面的模式至少 n 次。{n,m}:匹配前面的模式至少 n 次且不超过 m 次。
字符类12[ ]:匹配括号内的任意一个字符。例如,[abc] 匹配字符 "a"、"b" 或 "c"。[^ ]:匹配除了括号内的字符以外的任意一个字符。例如,[^abc] 匹配除了字符 "a"、"b" 或 "c" 以外的任意字符。
边界匹配1234^:匹 ...
Ansible系列之条件判断
在ansible中,使用when关键字来做条件判断,when关键字即为当条件成功就执行此条任务。在when判断中不需要加{{}}
字符串判断
判断符
说明
==
判断字符串是否相同,相同为真,不同为假
lower
是否全是小写,是为真,不是为假
upper
是否是纯大写,是为真,不是为假
in
判断字符串是否在另一个字符串中,是为真,不是为假
判断系统,不支持的系统直接报错退出
ansible_distribution是ansible自带变量,查看变量可以用ansible localhost -m setup命令。
12345---- hosts: all tasks: - fail: msg="this playbook don't support CentOS" when: ansible_distribution == "CentOS"
判断字符串大小写123456789101112---- hosts: all va ...
Ubuntu20.04 xfce桌面环境 配置vncserver
linux上搭建vncserver其实还是挺简单的,但是有不少坑,比如桌面环境不一样会有问题,奇葩的是很多教程会让你安装一个xfce桌面,这种只适合于目前是没有图形桌面的用户并且用户正好想要安装xfce桌面,不然就是扯淡。
本文记录一下我使用xubuntu(ubuntu和xfce桌面环境)过程中是如何配置vncserver的吧
友情提醒:本人是xubuntu20.04,如果你不是这个系统,可能需要做一些修改。
首先安装vncserver开源的常见vncserver有以下几个:tightvnc tigervnc 等
收费的vncserver有realvncserver,顺便提一句,Realvncserver基本上做的和windows一致了,安装完成就可以直接使用,图形化控制界面,非常简单易用。如果不介意付费软件的话,可以考虑,省的折腾。
1sudo apt install tigervnc-standalone-server
创建vnc密码1vncpasswd
然后输入两次密码,最后看看是否启用观看密码,我一般都是n
密码会写入到~/.vnc/passwd目录,也就是vncpa ...
安装和配置samba共享
在windows平台创建smb共享是一件很方便的事情,右键共享即可,一直没有关心linux平台的smb服务,最近家里有一台装了ubuntu的笔记本,想放在角落里做nas用,所以看看如何搭建smb共享。
安装服务1apt install samba
如果不小心删除了配置文件,可以通过:
12sudo apt purge samba-common sambasudo apt install samba
来重新生成
创建samba用户samba使用Linux的用户和权限系统,但是有自己的认证机制。
samba用户首先要是一个Linux用户,不然是创建不成功的。
创建一个Linux用户1sudo useradd -s /bin/bash -m zhanglikun
-m 是在home目录自动创建一个zhanglikun目录
创建一个smb用户1sudo smbpasswd -a zhanglikun
手动输入两遍密码即可,其他操作可以通过smbpass -h查看
创建共享目录使用zhanglikun用户在家目录创建一个共享目录
1mkdir samba
修改配置文件1vim ...
Hyper-V 自定义内部网络网段和IP地址
开始之前首先如果是仅仅想要主机和虚拟机进行数据互通,其实不需要固定IP,直接通过计算机名就可以互相访问。
Hyper-V网络模式外部虚拟网络: 类似于VMware的桥接网络模式, 在希望允许虚拟机与外部服务器和管理操作系统(有时称为父分区)进行通信时,可以使用此类型的虚拟网络。此类型的虚拟网络还允许位于同一物理服务器上的虚拟机互相通信。
内部虚拟网络: 类似于VMware的NAT网络模式, 在希望允许同一物理服务器上的虚拟机与虚拟机和管理操作系统之间进行通信时,可以使用此类型的虚拟网络。内部虚拟网络是一种未绑定到物理网络适配器的虚拟网络。它通常用来构建从管理操作系统连接到虚拟机所需的测试环境。
专用虚拟网络: 在希望只允许同一物理服务器上的虚拟机之间进行通信时,可以使用此类型的虚拟网络。专用虚拟网络是一种无需在管理操作系统中装有虚拟网络适配器的虚拟网络。在希望将虚拟机从管理操作系统以及外部网络中的网络通信中分离出来时,通常会使用专用虚拟网络。
由于Hyper-V自带的Default Switch在每次电脑重启的时候会自动分配一个未使用的网段, 无法达到固定IP的效果, Hyper-V ...
Linux的crontab无法执行的一些问题
crontab是linux平台的定时任务系统,不过有时候可以运行的命令或脚本在crontab里面就是不运行,下面找了一些可能的原因以及解决方案。
看不到日志一般来说,crontab的任务控制台输出会打到/var/spool/mail/<username>里面,然后通过email发出去crontab服务的运行的日志一般都在/var/log/cron里面,这个日志可以看到任务有没有执行
如果想将命令输出内容重定向到其他文件,可以在命令后添加2>&1, 不加2>&1错误日志看不到
1* * * * * date >> /tmp/cron.log 2>&1
环境变量的问题crontab环境变量和登录shell查看的环境变量是不同的,比如
1* * * * * env >> /tmp/env.log 2>&1
查看一下:
123456HOME=/home/iuxtLOGNAME=iuxtPATH=/usr/bin:/binLANG=C.UTF-8SHELL=/bin/shPWD=/home/iux ...
两台计算机直接传输文件的几种方式
这里的计算机指的是广义上的计算机,包括但不限于家用电脑、服务器、手机、树莓派等等
scp
scp 使用的是SSH端口
12345678# 拷贝本地文件testfile到192.168.1.100的/tmp目录下scp testfile root@192.168.1.100:/tmp# 拷贝本地文件夹到192.168.1.100的/tmp目录下scp -r testfolder root@192.168.1.100:/tmp# 拷贝远程到本地scp root@192.168.1.100:/tmp/testfile .
ftp
ftp控制端口是21,用于账号密码认证以及协商端口等。主动模式:数据端口是20被动模式:客户端可服务端协商一个端口
使用Python简单搭建一个ftp服务器
12pip3 install pyftpdlibpython3 -m pyftpdlib -p 21
sftp
sftp 是安全的ftp,走的是SSH协议
sftp常用命令
命令
功能
cd path
Change remote directory to ‘path’
get [-afp ...
使用s6-Overlay来管理多进程容器
容器使用最佳实践是:一个容器运行一个进程,进程退出容器也就退出,很优雅是不是?但是…在日常工作中总有一些你懂的的原因,就需要多个进程塞在一个容器里面,那么我们可以怎么来管理容器内进程呢?这个时候容器内的进程管理工具就派上用场了。s6-Overlay就是其中之一s6-Overlay官方github地址:https://github.com/just-containers/s6-overlay
安装容器是通过判断pid=1的进程来判断容器是否工作正常的,也就是说s6-Overlay进程pid为1
通过官方安装脚本来安装
12345678FROM ubuntuADD https://github.com/just-containers/s6-overlay/releases/download/v2.2.0.1/s6-overlay-amd64-installer /tmp/RUN chmod +x /tmp/s6-overlay-amd64-installer && /tmp/s6-overlay-amd64-installer /RUN apt-get updat ...