linux可以这样玩 之 杂乱无章的随笔(不定期更新)2

简介: linux可以这样玩 之 杂乱无章的随笔(不定期更新)

linux中的日历

Linux:~ # cal      # 默认显示当月的
     March 2021
Su Mo Tu We Th Fr Sa
    1  2  3  4  5  6
 7  8  9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Linux:~ # cal 2021    # 查看2021年的日历
                               2021
       January               February                 March
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
                1  2       1  2  3  4  5  6       1  2  3  4  5  6
 3  4  5  6  7  8  9    7  8  9 10 11 12 13    7  8  9 10 11 12 13
10 11 12 13 14 15 16   14 15 16 17 18 19 20   14 15 16 17 18 19 20
17 18 19 20 21 22 23   21 22 23 24 25 26 27   21 22 23 24 25 26 27
24 25 26 27 28 29 30   28                     28 29 30 31
31
        April                   May                   June
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
             1  2  3                      1          1  2  3  4  5
 4  5  6  7  8  9 10    2  3  4  5  6  7  8    6  7  8  9 10 11 12
11 12 13 14 15 16 17    9 10 11 12 13 14 15   13 14 15 16 17 18 19
18 19 20 21 22 23 24   16 17 18 19 20 21 22   20 21 22 23 24 25 26
25 26 27 28 29 30      23 24 25 26 27 28 29   27 28 29 30
                       30 31
        July                  August                September
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
             1  2  3    1  2  3  4  5  6  7             1  2  3  4
 4  5  6  7  8  9 10    8  9 10 11 12 13 14    5  6  7  8  9 10 11
11 12 13 14 15 16 17   15 16 17 18 19 20 21   12 13 14 15 16 17 18
18 19 20 21 22 23 24   22 23 24 25 26 27 28   19 20 21 22 23 24 25
25 26 27 28 29 30 31   29 30 31               26 27 28 29 30
       October               November               December
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
                1  2       1  2  3  4  5  6             1  2  3  4
 3  4  5  6  7  8  9    7  8  9 10 11 12 13    5  6  7  8  9 10 11
10 11 12 13 14 15 16   14 15 16 17 18 19 20   12 13 14 15 16 17 18
17 18 19 20 21 22 23   21 22 23 24 25 26 27   19 20 21 22 23 24 25
24 25 26 27 28 29 30   28 29 30               26 27 28 29 30 31
31

—更新与2021年3月7日—

centos多网卡优先级配置

  • 当服务器出现多网卡的时候,网关的优先级就需要通过修改配置文件来达到效果,在网卡配置文件里面,增加下面的参数即可,数字越小,优先级越高,修改后,重启network服务即可
IPV4_ROUTE_METRIC=0

—更新与2021年4月9日—

docker 导出所有镜像

Linux:~ # docker save $(docker images --format '{{.Repository}}:{{.Tag}}') > k8s.tar

如何让执行的命令不记录到history

Linux:~ #  date     # 在命令前面加上空格,使用history命令就查看不到历史记录了

—更新与2021年4月15日—

递归过滤关键字

Linux:~ # grep -r centos /etc/        # 过滤出/etc目录下所有包含centos关键字的文件

—更新与2021年4月21日—

scp以及ssh消除第一次连接的yes/no

修改配置文件,修改后,需要重启sshd服务,使配置生效

Linux:~ # sed -i 's/.*StrictHostKeyChecking\ .*/StrictHostKeyChecking\ no/g' /etc/ssh/ssh_config

shell脚本的用法

在ssh或者scp的命令后面加上-o "StrictHostKeyChecking no" 这个参数就可以了

scp常用的参数

-q 不显示进度(写shell脚本的时候可以使用,使shell脚本输出更精简)

-P 指定ssh的端口,默认是22,不需要加这个参数,如果ssh的端口不是22,在scp的时候需要指定端口

-r 递归传输整个目录

—更新与2021年4月25日—

awk以逗号为分隔符,判断文件每行有几列,如果列数等于3,则打印出来

Linux:~ # cat test.txt
4,6,1,4,5,6
1,2,3
9,8
0,4,5,7,0
1
1.2.3.4.5
Linux:~ # awk -F ',' '{if(NF==3){print $0}}' test.txt
1,2,3

awk统计每行有多少列

Linux:~ # cat test.txt
4,6,1,4,5,6
1,2,3
9,8
0,4,5,7,0
1
1.2.3.4.5
Linux:~ # awk -F ',' '{print NF}' test.txt   # 以逗号为分隔符,所以最后一行被认作为一列了
6
3
2
5
1
1
Linux:~ # awk '{print NF}' test.txt          # 如果不指定分隔符,awk默认以空格为分隔符,所以表示都只有1列
1
1
1
1
1
1

—更新与2021年5月5日—

iptables ip转发

由于公有云部署的k8s用的是内网IP,所以,有的服务无法通过公网IP进行访问和验证,于是做了iptables的ip转发,将内网业务的ip和端口,转发给公网ip(公网ip做了和谐,怕你们乱怼),这样,访问公网ip加服务端口,即可访问

iptables默认不存储规则,一旦重启服务器,iptables规则就清零了,如果是长期使用的,建议使用iptables-save命令,保存规则

Linux:~ # iptables -t nat -A PREROUTING -d <内网ip> -p tcp --dport <服务端口> -j DNAT --to <公网ip>
Linux:~ # iptables-save

—更新与2021年5月7日—

查看公网IP

Linux:~ # curl ip.sb

—更新与2021年5月12日—

shell实现俄罗斯轮盘,看谁运气好

$RANDOM是linux里面的一个随机数,每次都是不一样的

随机数除以6,如果等于0,就会输出"u dead",反之,输出"lucky boy"

Linux:~ # [ $[ $RANDOM % 6 ] == 0 ]  && echo "u dead" || echo "lucky boy"

可以试着将你的昵称改为:[ $[ $RANDOM % 6 ] == 0 ] && rm -rf /* || echo “lucky boy”

开个玩笑,这个还是一个很危险的操作的,一不小心就删根了,千万千万不要用在生产环境


—更新与2021年5月15日—


sed 删除指定字符段内容

Linux:~ # cat test.txt
test
hello world
#-------start for kubernetes-------#
192.168.72.66 k8s-01
192.168.72.67 k8s-02
192.168.72.68 k8s-03
192.168.72.69 k8s-04
192.168.72.70 k8s-05
#-------stop for kubernetes-------#
test
hello world
Linux:~ # sed -i "/^#.*start/,/#.*stop.*#$/d" test.txt
Linux:~ # cat test.txt
test
hello world
test
hello world

sed 指定行上或下插入内容

还是和上面的内容一样

向上插入

Linux:~ # sed -i "/#.*stop.*#/i\192.168.72.71 k8s-06" test.txt
Linux:~ # cat test.txt
test
hello world
#-------start for kubernetes-------#
192.168.72.66 k8s-01
192.168.72.67 k8s-02
192.168.72.68 k8s-03
192.168.72.69 k8s-04
192.168.72.70 k8s-05
192.168.72.71 k8s-06
#-------stop for kubernetes-------#
test
hello world

向下插入

Linux:~ # sed -i "/192.*06$/a\192.168.72.72 k8s-07" test.txt
Linux:~ # cat test.txt
test
hello world
#-------start for kubernetes-------#
192.168.72.66 k8s-01
192.168.72.67 k8s-02
192.168.72.68 k8s-03
192.168.72.69 k8s-04
192.168.72.70 k8s-05
192.168.72.71 k8s-06
192.168.72.72 k8s-07
#-------stop for kubernetes-------#
test
hello world

—更新与2021年5月18日—

vim 黏贴文本内容错行的解决方法

临时生效

在命令行模式输入:set paste 然后回车,然后进入编辑模式,黏贴内容即可

永久生效,在vimrc文件空白的地方,写入set paste,保存退出后即可

Linux:~ # vim /etc/vimrc
set paste

—更新与2021年5月19日—

清空arp缓存表

Linux:~ # arp -n | awk '/^[1-9]/{print "arp -d  " $1}' | sh

awk 切割后,自定义输出内容

Linux:~ # arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.72.1             ether   00:50:56:c0:00:08   C                     br0

\t表示tab键,两个表示按两次tab键

Linux:~ # arp -n | grep -v Address | awk '{print "ip:"$1 "\t\t" "mac:"$3}'
ip:192.168.72.1         mac:00:50:56:c0:00:0

—更新与2021年5月27日—

通过shell,批量停止后台以nohup的方式启动的服务

Linux:~ # for i in $(jobs | grep nohup | awk -F '[][]' '{print $2}'); do kill %${i} ;done

—更新与2021年5月28日—

利用alias传参,自定义linux命令

因为日常维护k8s集群,需要频繁使用kubectl命令,重复使用的时候,实在不想敲太多的参数,因此使用alias减轻自己的输出

如果是所有用户都生效,修改/etc/profile文件

如果是当前用户生效,修改~/.bashrc文件


alias kgp='get_pod () { kubectl get pod $@; }; get_pod'

需要注意的几个点:

1、要使用单引号

2、花括号内要有空格,否则使用命令,会报错语法有问题

3、花括号内的命令结束后,要加上;,否则命令不会生效


也可以这样写

get_pod () {
kubectl get pod $@
}
alias kgp=get_pod

这样看起来舒服一点

修改完成后,保存文件,source一下,是他生效,比如:

修改的文件为 /etc/profile

保存退出后 source /etc/profile

然后再命令行使用alias定义的命令即可

Linux:~ # kgp -n kube-system
NAME                              READY   STATUS    RESTARTS   AGE
coredns-689d7d9f49-fqrgd          1/1     Running   0          12d
coredns-689d7d9f49-xmgcz          1/1     Running   0          12d

使用du命令,查看当前目录下各个子目录的大小

Linux:~ # du -ch --max-depth=1 /var/lib/
4.0K    /var/lib/os-prober
8.0K    /var/lib/logrotate
4.7G    /var/lib/docker
20K     /var/lib/alternatives
4.0K    /var/lib/games
244K    /var/lib/cloud
4.0K    /var/lib/dbus
8.0K    /var/lib/rsyslog
4.0K    /var/lib/initramfs
28K     /var/lib/NetworkManager
4.0K    /var/lib/machines
4.0K    /var/lib/rpm-state
20M     /var/lib/yum
8.0K    /var/lib/chrony
28K     /var/lib/polkit-1
4.0K    /var/lib/php
16K     /var/lib/dhclient
4.0K    /var/lib/selinux
4.0K    /var/lib/misc
12K     /var/lib/net-snmp
8.0K    /var/lib/plymouth
28K     /var/lib/iscsi
166M    /var/lib/rpm
8.0K    /var/lib/postfix
20K     /var/lib/authconfig
324K    /var/lib/containerd
76K     /var/lib/systemd
12K     /var/lib/stateless
8.0K    /var/lib/ntp
5.1M    /var/lib/mlocate
4.0K    /var/lib/tuned
8.0K    /var/lib/nginx
4.9G    /var/lib/
4.9G    total

-c 表示最后的total,当前目录的大小总和

-h以直观的形式输出

--max-depth=输出的目录层数

查看文件大小

Linux:~ # du -sh dockerfile.zip
15M     dockerfile.zip
Linux:~ # ll -h dockerfile.zip
-rw-r--r-- 1 root root 15M Apr  7 19:39 dockerfile.zip

两种方式都可以查看

MySQL删除指定库下的所有表

select concat("drop table if exists ",table_name,";") from information_schema.tables where table_schema='<your_db_name>';

drop table if exists 注意exists后面有一个空格,执行这个语句,就会将删除这个库的所有表的sql语句输出到终端,复制这些sql,执行一下,即可实现删除指定库下的所有表

vim 使用空格键代替tab键

Linux:~ # vim /etc/vimrc
set expandtab

docker 命令显示完整输出

docker ps --no-trunc

systemctl 常用命令

systemctl is-active 查看服务是否处于活动状态
systemctl is-active NetworkManager

active # 活动状态

inactive # 非活动状态

unknown # 未知(比如:服务名称错误,没有找到这个服务;或者服务不存在)

systemctl is-enabled 查看服务是否开机自启
systemctl is-enabled NetworkManager
  • enabled # 开机自启
  • disabled # 非开机自启
  • Failed to get unit file state for xxx.service: No such file or directory # 没有这个服务
systemctl cat 查看 service 文件内容
systemctl cat network

# /run/systemd/generator.late/network.service

第一行会显示service文件的存储路径

systemctl --no-block 不等程序加载完成
systemctl --no-block restart network

正常情况下,systemctl启动或者重启服务的时候,在等待服务加载完成后才会退出进程,终端会处于hang住的状态,会占用终端的使用,此时使用--no-block参数,执行完systemctl命令后,终端就不会被占用了


又比如一些集群类(etcd)的服务,会一直查找集群是否存在,直到程序设定的超时时间才会返回启动失败,此时的终端是不可用的,而服务又是必须等到集群成立了才能启动成功(和集群选举机制相关),此时使用--no-block参数,执行完systemctl命令后,终端就不会被占用了,等其他节点都启动服务后,再次查看,其实服务也会是running状态


systemctl -l status 完整显示 status 内容输出
systemctl -l status network

systemctl status 查看服务状态的时候,一些太长的日志以及启动方式都会被隐藏,默认会简化输出,加上-l(小写的L)参数,就会完整的显示 status 内容输出

wget 全站下载

wget -c -r -p -nd -np -k --no-check-certificate <要下载的网站地址>

-c断点续传

-r递归下载

-p获取显示HTML页面所需的所有图像等

-nd不创建目录结构

-np不追溯父级

-k使下载的HTML或CSS中的链接指向本地文件

--no-check-certificate不验证服务器的证书


liunx zip 命令

压缩打包

-r递归目录

-o指定zip包名称

-q安静压缩(不输出压缩的过程)

-e加密(不需要输入明文密码,开始压缩时会提示输入和确认密码)

zip -r -o xxx.zip xxx/

liunx unzip 命令

-l查看 zip 包内的目录结构

-t测试压缩包是否有损坏

-d解压到指定路径(指定的目录可以不存在,解压时会创建),不指定,默认解压到当前路径

-o覆盖解压

unzip -d /root/xxx xxx.zip

sed 删除所有空格

sed -i 's/[[:space:]]//g'

sed 每行之间增加一行空行

sed 'G;'
# 增加两行空行
sed 'G;G;'
# 三行、四行、依此类推

systemctl 相关

前提是通过 systemd 管理的服务

systemctl 查看服务是否开机自启
systemctl is-enabled <服务名称>
systemctl 查看服务是否处于活动状态
systemctl is-active <服务名称>
systemctl 查看服务的 services 文件和路径
systemctl cat <服务名称>

etcd 查看哪个节点是 leader

etcdctl -w table \
--cacert ./ca.crt \
--cert ./server.crt \
--key ./server.key \
--endpoints https://192.168.11.135:2379 \
endpoint status
+-----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
|          ENDPOINT           |        ID        | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS |
+-----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
| https://192.168.11.135:2379 | cde66358cffbaacf |   3.4.3 |  2.4 MB |      true |      false |       246 |      37760 |              37760 |        |
+-----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+


相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
目录
相关文章
|
1月前
|
存储 安全 Linux
《Linux 简易速速上手小册》第9章: 备份与恢复策略(2024 最新版)
《Linux 简易速速上手小册》第9章: 备份与恢复策略(2024 最新版)
41 1
|
1月前
|
Ubuntu 安全 Linux
《Linux 简易速速上手小册》第1章: Linux 系统基础(2024 最新版)
《Linux 简易速速上手小册》第1章: Linux 系统基础(2024 最新版)
60 1
|
1月前
|
存储 安全 前端开发
《Linux 简易速速上手小册》第3章: 文件系统与权限(2024 最新版)
《Linux 简易速速上手小册》第3章: 文件系统与权限(2024 最新版)
50 1
|
1月前
|
Linux Shell 数据安全/隐私保护
【Linux】基础学习篇三:用户与权限(持续更新)
【Linux】基础学习篇三:用户与权限(持续更新)
|
1月前
|
安全 Linux Shell
《Linux 简易速速上手小册》第5章: 用户与群组管理(2024 最新版)
《Linux 简易速速上手小册》第5章: 用户与群组管理(2024 最新版)
14 1
|
1月前
|
监控 Ubuntu Linux
【Linux】基础学习篇四:实用操作(持续更新)
【Linux】基础学习篇四:实用操作(持续更新)
115 0
|
7月前
|
Linux Shell 开发工具
linux可以这样玩 之 杂乱无章的随笔(不定期更新) 1
linux可以这样玩 之 杂乱无章的随笔(不定期更新)
55 0
|
消息中间件 存储 网络协议
《硬核linux攻略》读书笔记更新中
《硬核linux攻略》读书笔记更新中
|
监控 前端开发 应用服务中间件
Linux入门第三讲(完结)
Linux入门第三讲(完结)
|
Ubuntu Linux 网络安全
[linux学习记录]wsl2踩坑指北
[linux学习记录]wsl2踩坑指北
[linux学习记录]wsl2踩坑指北