首页 > 系统相关 >linux 三剑客命令

linux 三剑客命令

时间:2023-07-25 15:46:05浏览次数:25  
标签:log etc 命令 awk aliyun linux print root 三剑客

Linux 命令集合

目录

基础概念

1 软连接和硬链接

1.1 基础概念


#01 硬链接
硬链接(Hard links):可以这样理解,硬链接就是某个文件实体的别名。硬链接甚至可以使多个文件名拥有相同的inode,你可以为单个文件创建多个硬链接。在不同的文件系统中,inode可能产生冲突,所以不能为不同文件系统或分区的目录和文件创建硬链接。


#02 软连接
软链接(Soft links, Symbolic links):就像在Windows系统中创建快捷方式一样,创建软链接实际上相当于创建一个指向某个文件实体指针变量,可以为不同文件系统或分区的目录创建软链接。



1.2 如何创建软链接

语法格式

ln -s FILE_NAME LINK_NAME

​ -s 创建软连接 给谁创建 -目录或者文件 创建后的软链接名称

##Linux 原生态软连接
[root@master01 ~]# ll /
总用量 20
lrwxrwxrwx.   1 root root    7 7月  22 20:57 bin -> usr/bin
dr-xr-xr-x.   5 root root 4096 7月  22 21:00 boot
drwxrwxrwx    4 root root   27 7月  22 23:34 data
drwxr-xr-x   19 root root 3120 7月  22 22:43 dev
drwxr-xr-x.  80 root root 8192 7月  23 20:13 etc
drwxr-xr-x.   2 root root    6 7月  23 21:15 home
lrwxrwxrwx.   1 root root    7 7月  22 20:57 lib -> usr/lib				##软连接
lrwxrwxrwx.   1 root root    9 7月  22 20:57 lib64 -> usr/lib64			##软连接
drwxr-xr-x.   2 root root    6 4月  11 2018 media
drwxr-xr-x.   2 root root    6 4月  11 2018 mnt
drwxr-xr-x.   5 root root  199 7月  23 21:48 opt
dr-xr-xr-x  147 root root    0 7月  22 22:43 proc
dr-xr-x---.   3 root root  176 7月  23 21:16 root
drwxr-xr-x   27 root root  840 7月  23 21:04 run
lrwxrwxrwx.   1 root root    8 7月  22 20:57 sbin -> usr/sbin			#软连接
drwxr-xr-x.   2 root root    6 4月  11 2018 srv
dr-xr-xr-x   13 root root    0 7月  23 21:54 sys
drwxrwxrwt.  12 root root 4096 7月  23 22:00 tmp
drwxr-xr-x.  13 root root  155 7月  22 20:57 usr
drwxr-xr-x.  20 root root  278 7月  22 21:59 var
 
解释下:	
		lrwxrwxrwx  l 代表软连接
					

#01 创建软连接  
[root@master01 opt]# ln -s html-v2  html

	解释下:
		   ln -s  给html-v2 创建软连接  名称叫 html
			


零.正则

  • 基础正则
  • 扩展正则

含义:帮助人门处理有规律的内容

01 区别

基础正则(bre basic ) 扩展正则(ere 121 extended )
区别1:符号不同 ^ $ . * [] [^] + | () {} ?
区别2: 支持的命令不同 grep/sed/awk/高级语言 egrep(grep -E) /sed -r /awk/高级语言

02 通配符

#01 含义
*  		匹配所有
{} 		生成序列
?		匹配任何一个字符


#02 匹配有规律的  {}
1) 无规律的
[root@aliyun day08]# echo {a,z,1,4,6}
a z 1 4 6

2)有规律的
[root@aliyun day08]# echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z

3) 可以添加前后内容
[root@aliyun day08]# echo q{a..z}
qa qb qc qd qe qf qg qh qi qj qk ql qm qn qo qp qq qr qs qt qu qv qw qx qy qz




03 基础正则

含义 应用场景
^ 以...开头的行
$ 以...结尾的行
^$ 空行(没有任何字符) 排除配置文件中的空行或带注释的行
. 任意一个字符
* 前一个字符出现零次或者零次以上
.* 所有 任何字符 匹配所有 ^.*zhangyuzhou
[] [abc] 相当于是1个字符 匹配a或者b或者c 一次匹配一个字符 与扩展正则+一起使用
[^] [^abc] 相当于是1个字符 不匹配a或者b或者c 排除 与扩展正则+一起使用
  • 空行 ^$
#01 grep 排除空行
[root@aliyun test]# egrep -v  '^$' 1.txt
I am zhangyuzhou teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://zhangyuzhou.blog.51cto.com
our size is http://blog.zhangyuzhouedu.com
my qq is 49000448
not 4900000448.
my god ,i am not oldbey,but zhangyuzhou!


#02 sed 
[root@aliyun test]#  sed -r -n '/^$/!p'  1.txt
I am zhangyuzhou teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://zhangyuzhou.blog.51cto.com
our size is http://blog.zhangyuzhouedu.com
my qq is 49000448
not 4900000448.
my god ,i am not oldbey,but zhangyuzhou!


#03 排除 awk 
[root@aliyun test]# awk '!/^($|#)/' /etc/ssh/sshd_config
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
AuthorizedKeysFile	.ssh/authorized_keys
ChallengeResponseAuthentication no
GSSAPIAuthentication yes
GSSAPICleanupCredentials no
UsePAM yes




# 含义
. 	任意一个字符
* 	前一个字符连续出现零次或者零次以上 


1) * 详解
连续出现
1
1111111
11111111111

#01 案例
[root@aliyun test]# egrep  -n -o  '0*' 1.txt
7:000
9:00000

	解释下:匹配0 连续多个0
	
	
  • .*

# .* 匹配所有   连续出现 * + {} ? 
# 正则表达式的贪婪行 (增加条件 限制)

# 匹配 以^.*root:x 开头的行
[root@m01 files]# egrep  -o '^.*root:x' /etc/passwd
root:x



# 案例1) 匹配以m开头并且 以8结尾的行
[root@m01 files]# egrep '^m.*8$' zhangyuzhou.txt 
my qq is 49000448

#匹配 zhangyuzhou.txt中 以字母m开头并且以m空格即为的行
[root@m01 /server/files]# grep '^m.*m $' zhangyuzhou.txt 

  • [] 一个整体 每次匹配一个
#匹配数字
[0-9]
# 匹配字母
[a-z]
[A-Z]
[a-zA-Z]
[a-Z]


# 每次只匹配一个
[root@m01 files]# egrep  -o '[abc]' zhangyuzhou.txt 
a
b
a
c


# 匹配两个
[root@m01 files]# egrep  -o '[abc][eml]' zhangyuzhou.txt 
am
al
al
bl
bl



# 案例2) 匹配m和o开头 并且 !结尾的行
[root@m01 files]# egrep  -o '^[om].*[ .!]$' zhangyuzhou.txt 


# 案例3) 只显示文件中大小写字母
[root@m01 files]# egrep  -o '[a-Z]+' zhangyuzhou.txt


# 案例4)显示以.结尾的行
[root@m01 files]# egrep '\.$' zhangyuzhou.txt 
I teach linux.
not 4900000448.


  • [^] [^abc] 一个整体 排除a b c
## 排除 [^括号内容]
[root@m01 files]# grep '[^abc]' zhangyuzhou.txt 


1)进阶案例 
[root@m01 files]# egrep '^[0-9a-Z]*' /etc/passwd
egrep '^[0-9a-Z]+' /etc/passwd

找出字母和数字开头并且结束的内容

2) [^] 写法
[root@m01 files]# egrep '^[^:]*' /etc/passwd

[^:] 排除: ^ 以除了:冒号开头的连续的所有内容
找出来除了冒号开头和冒号以外的 所有内容


  • 制表符号

# 特殊符号
\n  回车键
\t  tab键
\b	退格键


[root@m01 files]# echo -e '\nolaboy'

olaboy
[root@m01 files]# echo -e 'dd\bolaboy'
dolaboy
[root@m01 files]# echo -e 'qwe\bolaboy'
qwolaboy


04 扩展正则

符号 含义
| 或者
+ 前一个字符连续出现1次或者1次以上
{} 固定/范围 连续出现
() 多含义
() 整体
() sed 反向引用 后向引用
? 前一个字符连续出现0次或者1次 有或者没有
  • | 或者
#01 或者
案例1) 匹配zhangyuzhou或者m的行
[root@aliyun test]# egrep  'zhang|m' 1.txt
I am zhangyuzhou teacher!
I like badminton ball ,billiard ball and chinese chess!
my blog is http://zhangyuzhou.blog.51cto.com


#02 匹配 oldboy 或者 oldbey
[root@aliyun test]# egrep  'oldb(o|e)y' 1.txt
my god ,i am not oldbey,but zhangyuzhou!
my god ,i am not oldboy,but zhangyuzhou!

#03 写法2 
[root@aliyun test]#  grep  'oldb[oe]y' 1.txt
my god ,i am not oldbey,but zhangyuzhou!
my god ,i am not oldboy,but zhangyuzhou!



## 注意

[]  每次匹配一个字符		[abc]      a b c 

#最佳推荐
单个字符 使用 [abc] [0-9] [a-z]
多个字符使用 zhang|yu|zhou|。。


  • + 前一个字符连续出现1次或者1次以上
##含义 前一个字符连续出现1次或者1次以上

# 统计单词出现的次数
root@m01 files]# egrep -o '[a-Z]+' zhangyuzhou.txt | sort -nr  | uniq -c

# 统计字母出现的次数
egrep -o '[a-Z]' zhangyuzhou.txt | sort -nr  | uniq -c


  • { } a{n,m} 前一个字符a连续出现至少n次,最多m次

# 语法格式
a{n,m}  前一个字符a 连续出现最少n次 最多m次

a{n} 前一个字符a 连续出现n次

a{n,} 前一个字符a 连续出现至少n次  	#基本不用

a{,m} 前一个字符a 连续出现最多m次		#基本不用


案例1)
[root@m01 files]# egrep '0{1,5}' zhangyuzhou.txt 
my qq is 49000448
not 4900000448.
[root@m01 files]# egrep -o '0{1,5}' zhangyuzhou.txt 
000
00000

[root@m01 files]# egrep '0{2,3}' zhangyuzhou.txt 
my qq is 49000448
not 4900000448.
[root@m01 files]# egrep -o '0{2,3}' zhangyuzhou.txt 
000
000
00

[root@m01 files]# egrep -o '0{3,4}' zhangyuzhou.txt 
000
0000


3) 案例 取出正确的身份证号
id.txt
金 211324198705244720
万 500224197105168312
任 1231231231zhangyuzhou
任 3zhangyuzhou
任 lidao97303136098
任 alex2197303136098
任 350182197303oldgir
吕 211282199209113038
孔 150000198309176071
邹 371001197412221284
贺 130185200011215926
杜 362522198711278101
向 14052219961008852X
取出文件中正确的身份证号码的行


1) 开始书写
[root@m01 files]# egrep '[0-Z]{18}' shen.txt  
[root@m01 files]# egrep '[0-Z]{18,18}' shen.txt 
金 211324198705244720
万 500224197105168312
任 350182197303oldgir
吕 211282199209113038
孔 150000198309176071
邹 371001197412221284
贺 130185200011215926
杜 362522198711278101
向 14052219961008852X

[root@m01 files]# egrep '[0-9]{17}[0-9X]' shen.txt 
金 211324198705244720
万 500224197105168312
吕 211282199209113038
孔 150000198309176071
邹 371001197412221284
贺 130185200011215926
杜 362522198711278101
向 14052219961008852X

解释下:匹配前17位连续为数字 最后一位是数字和字母 

[root@m01 files]# egrep '[0-9X]{18}' shen.txt 
金 211324198705244720
万 500224197105168312
吕 211282199209113038
孔 150000198309176071
邹 371001197412221284
贺 130185200011215926
杜 362522198711278101
向 14052219961008852X

  • ( ) 后向引用
# 案例 给数字加大于和小于号
[root@ECs conf.d]# echo 123456 | sed -r 's#(.*)#\1#g'
123456

[root@ECs conf.d]# echo 123456 | sed -r 's#(.*)#<\1>#g'
<123456>

给每个数字加括号
[root@ECs conf.d]# echo 123456 | sed -r 's#(.)#<\1>#g'
<1><2><3><4><5><6>


[root@ECs conf.d]# echo {1..10} |  sed -r 's#([0-9]+)#<\1>#g'
<1> <2> <3> <4> <5> <6> <7> <8> <9> <10>


  • ? 前一个字符出现了0次或者1次
cat<<EOF>>ta.txt
joooop
jooop
joop
jop
jp
EOF


[root@ECs conf.d]# cat ta.txt 
joooop
jooop
joop
jop
jp


#01  取出jp和jop
方法1
[root@ECs conf.d]# egrep 'jo?p' ta.txt 
jop
jp


一 awk 取列

1.1 基本用法

称呼
记录 record
字段 域 field
替换 gsub(/找谁/,"替换成什么",替换那一列 不写默认全部)
-v 修改或者添加 awk 默认变量
-vOFS= 指定 awk 默认字段分隔符 (内置)
printf 格式化输出
1. 取行
RS -vRS= 修改默认行与行之间的 标记 间隔符 记录行分隔符
ORS 输出当前记录分隔符
NR 记录号 行号 内置变量
2. 取列
-F (FS) 指定 字段分割符 默认是空格
NF 每一行有多少列 $NF 变量 内容
-v 修改或者添加 awk 默认变量
-vOFS= 指定 awk 默认字段分隔符 (内置)
-f 指定awk 脚本

1.2 取列案例

#01 找出系统中所有的用户?
[root@aliyun day04]# awk -F':' '{print $1}' test
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
systemd-network
dbus
polkitd
postfix
chrony
sshd
tcpdump
nscd
saslauth


#02 打印第一列和最后两列
awk -F':' '{print $1,$(NF-1),$NF}' test  | column -t

解释下:
	$(NF-1) 倒数第二行
	$NF			倒数第一行
	


1.3 取行案例 取反

#01 取出前三行
[root@aliyun day04]# awk 'NR<=3' test
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

#02 取出第8行到第12行 
[root@aliyun day04]# awk 'NR >=8 && NR <=12  {print NR,$0}' test
8 halt:x:7:0:halt:/sbin:/sbin/halt
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10 operator:x:11:0:operator:/root:/sbin/nologin
11 games:x:12:100:games:/usr/games:/sbin/nologin
12 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin


#03 排除空行 并统计
[root@station ~]# awk '$0 !~/^$/  {i++} END { print "总计行数: " i }' /etc/services
总计行数: 11159

解释下:
				$0 !~/^$/     $0 代表全部  
											! 代表取反 
				排除空行


#04 每隔5行打印一个空行
[root@aliyun ~]# awk '{if (NR%5==0) {print " "};print NR,$0 }' /etc/passwd
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
 
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8 halt:x:7:0:halt:/sbin:/sbin/halt
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
 
10 operator:x:11:0:operator:/root:/sbin/nologin
11 games:x:12:100:games:/usr/games:/sbin/nologin
12 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13 nobody:x:99:99:Nobody:/:/sbin/nologin
14 systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin


解释下:
		NR%5==0		能被5整除的行 代表处理5行 



#04 找出/etc/passwd 用户ID和用户组ID 不一样的 所有用户
[root@aliyun ~]# awk -F':'  ' $3!=$4 {print}' /etc/passwd
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin


解释下:
		$3!=$4  第三行 不等于第四行

1.4 取行取列结合案例

#01 取前五行的 第一列和最后一列 并显示行号
[root@aliyun day04]# awk  -F ':'  'NR<=5 {print NR,$1,$NF}' test  | column -t
1  root    /bin/bash
2  bin     /sbin/nologin
3  daemon  /sbin/nologin
4  adm     /sbin/nologin
5  lp      /sbin/nologin


1.5 取偶数和奇数

#01 取出前20行 所有的偶数行
[root@aliyun day04]# awk  'NR%2==0 && NR <=20  {print NR,$0}'   test
2 bin:x:1:1:bin:/bin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
8 halt:x:7:0:halt:/sbin:/sbin/halt
10 operator:x:11:0:operator:/root:/sbin/nologin
12 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
14 systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
16 polkitd:x:999:997:User for polkitd:/:/sbin/nologin
18 chrony:x:998:996::/var/lib/chrony:/sbin/nologin
20 tcpdump:x:72:72::/:/sbin/nologin


#02 取出前20行 所有的奇数行
[root@aliyun day04]# awk  'NR%2==1 && NR <=20  {print NR,$0}'   test
1 root:x:0:0:root:/root:/bin/bash
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
11 games:x:12:100:games:/usr/games:/sbin/nologin
13 nobody:x:99:99:Nobody:/:/sbin/nologin
15 dbus:x:81:81:System message bus:/:/sbin/nologin
17 postfix:x:89:89::/var/spool/postfix:/sbin/nologin
19 sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin


解释下:
	&& 				代表并且 需要条件全部成立
	NR%2==1		取出奇数行
	NR%2==0		取出偶数行


1.6 过滤 取反排除

  • 语法解析
#01  找出最后一列包含 sbin 
awk -F ':' '$NF ~/sbin/   {print $NF}' test

解释下:
  -F  						 指定分隔符 ':' 
  $NF ~/sbin/ 		 ' 从哪里找 '  ' ~ 模糊匹配 包含'  ' /找什么/ '
  {print $NF}			打印最后一列
  
  指定分隔符为 ':' 寻找最后一列 包含 sbin 的所有行。并打印最后一列 
  

#02 排除空行 并统计行号
[root@station ~]# awk '$0 !~/^$/  {i++} END { print "总计行数: " i }' /etc/services
总计行数: 11159

解释下:
		$0 !~/^$/		$0代表全部  !代表取反 

1.7 取IP地址 多个分隔符

#01 取出eth0 IP地址
[root@aliyun ~]# ip a | awk -F '[ /]+'     '/eth0$/ {print $3}'
172.26.138.198

解释下:
		-F '[ /]+' 指定多个分隔符:[ /]  分隔符是 空格和 /  
							 这里的 + 代表 连续匹配 匹配多次为一个分隔符
		/eth0$/		 过滤以 eth0 结尾的行  $代表 以什么什么结尾 
		

1.8 取出剩余内存

#01 取出可用内存 并且以人类可读对方式显示
1)查看可用内存
[root@aliyun ~]# free
              total        used        free      shared  buff/cache   available
Mem:        1881828      956024       71312      124864      854492      613464
Swap:             0           0           0

2)取出内存 并换算
[root@aliyun ~]# free | awk '/^Mem/ {print $NF/1024 "MB"}'
598.441MB

解释下:
		print $NF/1024 "MB"  取出最后一列 并除以 1024 得到单位 MB
			除以:/
			乘以:*
			加法:+
			减法:-
		
		free  查看系统内存信息
			-h  以人类可读方式显示

1.9 取出磁盘剩余容量

#01 取出磁盘可用容量 已经使用百分比
[root@aliyun ~]# df | awk '/\/$/ {print   "可用对磁盘容量是:"$(NF-2)/(1024*1024) " GB" ,$(NF-1)}'
可用对磁盘容量是:18.2567 GB 52%

	解释下: 
			/\/$/    过滤以 / 结尾的行
			\				 转义字符;去掉命令原有的属性;回归命令本身;
			
	df
		显示文件系统使用率
			

2.0 变量的使用

#案例1
[root@aliyun awk]# cat 01.txt
waiwai 90 98 98 96 96 92
xiaoyu 70 77 85 83 70 89
gege 85 92 78 94 88 91
xingxing 89 90 85 94 90 95
bingbing 84 88 80 92 84 82
dandan 64 80 60 60 61 62

#01 请计算同学们各科的平均成绩
[root@aliyun awk]# awk '{ x=$2+$3+$4+$5+$6+$7;y=x/6;print $1,y}' 01.txt
waiwai 95
xiaoyu 79
gege 88
xingxing 90.5
bingbing 85
dandan 64.5

		解释: 
				x=$2+$3+$4+$5+$6+$7;y=x/6;print $1,y
				x 设置的变量 = 总成绩
				y 设置的变量 = 平均值
				; 分号 ,命令可以同时执行


#02 以循环的方式 取出平均分数
[root@aliyun 01-awk]# awk '{sum=0;for (i=2;i<=NF;i++) sum=sum+$i ;y=sum/NF;print $1,"总成绩: "sum,"平均分: "y}' 01.txt  | column -t
waiwai    总成绩:  570  平均分:  81.4286
xiaoyu    总成绩:  474  平均分:  67.7143
gege      总成绩:  528  平均分:  75.4286
xingxing  总成绩:  543  平均分:  77.5714
bingbing  总成绩:  510  平均分:  72.8571
dandan    总成绩:  387  平均分:  55.2857

	解释下:
		sum=0 因为每次循环的成绩累加
    i=2;i<=NF;i++   i 的默认值是2 从第二列开始 循环到NF最后一列 每次i++ 自增
    sum=sum+$i  sum 等于$i相加  ; $i 变量的值 就是每一列对应的值	



2.1 BEGIN 模式动作

BEGIN {} 含义 BEGIN {} 里面的内容 会在awk读取文件之前执行
应用场景 1. 进行统计或者计算

标签:log,etc,命令,awk,aliyun,linux,print,root,三剑客
From: https://www.cnblogs.com/saas-open/p/17580017.html

相关文章

  • Linux系统常用操作命令归纳整理
    操作分类命令查看ls      ls-l(以列表形式显示,容量为B) ls-l(以列表形式显示,容量为B)ls-a(显示隐藏目录)ls-lh(以列表形式显示,容量为KB)ls-i(显示文件id)清屏 clear    /    热键ctrl+L补全文件/查询命令热键tab取消当前指令/结束程序热键ctrl+c切换......
  • Linux扩容ext4格式的根目录
    Linux扩容ext4格式的根目录Ubuntu例子系统版本Ubuntu22.04.2LTS根目录信息sda磁盘是30G,基本都给了根目录根目录是/dev/sda1根目录文件系统格式是ext4通过vgslvspvs查看,并没有涉及到lvm方式扩容根目录扩大磁盘虚拟机先扩大sda硬盘扩容/dev/sda1分区即把sda......
  • Redis Scan命令踩坑笔记
    前记大部分人在接触Redis时就都会了解到Redis是以单线程的形式处理用户命令,导致O(N)的命令有极大的几率会阻塞Redis,所以在使用Redis时需要放弃一些O(n)命令的使用,比如不要去使用KEYS命令而应该使用SCAN命令,然而SCAN命令也有一些坑。1.踩到的坑为了减少MySQL的压力,在部分变动比较少......
  • Ubuntu中iptables的相关操作命令
    iptables简介:Iptables和UFW (UncomplicatedFirewall)都是Linux操作系统中常用的防火墙管理工具,它们的主要区别如下:相同点:两者都是Linux操作系统中的防火墙管理工具,可以配置网络规则以限制网络流量。工作原理:iptables和UFW都基于netfilter框架来实现防火墙功能。......
  • linux MHA架构
    MHA架构可以完成mysql的高可用,避免单台服务器的故障导致服务关闭,提高容错率,保证master的切换。目录一、MHA概述二、MHA组成三、MHA的特点四、MHA工作原理五、MHA实验六、总结    一、MHA概述1.MHA概述MHA(MasterHighAvailability)是一套优秀的MySQL......
  • 03-docker常用命令
    1.dockerps-a:显示运行后的容器,使用-a则显示全部,不使用-a只显示成功运行2.dockerrmi镜像名/镜像ID:删除镜像文件3.dockerstop容器名/容器ID:停止正在运行的容器4.dockerrm容器名/容器ID:删除停止的容器5.dockerlogs容器名:查看运行容器的运行日志6.dockerstart容......
  • Python 命令行库
     argparse、docopt、click、fire   google/python-fire:PythonFireisalibraryforautomaticallygeneratingcommandlineinterfaces(CLIs)fromabsolutelyanyPythonobject.(github.com)PythonFire PythonFireisalibraryforautomaticallygenera......
  • 设计模式—命令模式
    命令模式目录命令模式命令模式与策略模式的差异:例子命令模式是一个高内聚的模式,其定义为:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。命令模式(CommandPattern)是一种数据驱动的设计模式,它属于行为......
  • [Linux系统] 使用WSL2下的Ubuntu20.04
    一、安装WSL2下的Ubuntu20.04 1)打开windowsWSL服务#以管理员身份运行PowerShelldism.exe/online/enable-feature/featurename:Microsoft-Windows-Subsystem-Linux/all/norestartdism.exe/online/enable-feature/featurename:VirtualMachinePlatform/all/norest......
  • OSql命令操作函数(可用于安装程序的时候数据库脚本执行)
    ///<summary>///OSql命令操作函数(可用于安装程序的时候数据库脚本执行)///</summary>publicclassSqlScriptHelper{#regionOSql操作函数///<summary>///本地执行SQL脚本///</summary>///<paramname=......