Linux

win换行符导致sh脚本异常

方法一:

sed -i 's/\r$//' target.sh

方法二:

进入脚本文件的命令模式

vi target.sh :set ff=unix :wq

不同的Profile异同

  1. /etc/profile
  • 用途:系统级的全局配置文件。
  • 适用范围:适用于所有用户。
  • 加载时机:当用户登录并启动一个登录 shell(如通过终端或 SSH 登录)时加载。
  • 影响:为所有用户设置全局环境变量。
  1. /etc/bashrc
  • 用途:系统级的全局 bash 配置文件。
  • 适用范围:适用于所有用户。
  • 加载时机:每次启动一个新的交互式 shell(即打开一个新的终端窗口)时加载,不区分登录或非登录。
  • 影响:为所有用户设置全局的 bash 配置和别名等。
  1. ~/.bash_profile
  • 用途:用户级的登录 shell 配置文件。
  • 适用范围:只适用于特定用户。
  • 加载时机:当用户登录并启动一个登录 shell 时加载。通常,~/.bash_profile 中会加载 ~/.bashrc 以确保包含非登录 shell 的配置。
  • 影响:为特定用户设置个性化的环境变量、路径和其他 shell 设置。
  1. ~/.bashrc
  • 用途:用户级的交互式 shell 配置文件。
  • 适用范围:只适用于特定用户。
  • 加载时机:每次启动一个新的交互式 shell(如打开一个终端窗口)时加载,不区分登录或非登录。
  • 影响:为特定用户设置个性化的 bash 配置、别名等。

防火墙配置信任集群

firewall 集群内信任配置
sudo firewall-cmd --permanent --new-zone=trusted_cluster
sudo firewall-cmd --permanent --zone=trusted_cluster --add-source=172.24.3.11
sudo firewall-cmd --permanent --zone=trusted_cluster --add-source=172.24.3.12
sudo firewall-cmd --permanent --zone=trusted_cluster --add-source=172.24.3.13
sudo firewall-cmd --permanent --zone=trusted_cluster --add-source=172.24.3.14
sudo firewall-cmd --permanent --zone=trusted_cluster --add-source=172.24.3.15

sudo firewall-cmd --permanent --zone=trusted_cluster --set-target=ACCEPT
sudo firewall-cmd --reload

SSH

1. 允许root远程登陆
vi /etc/ssh/sshd_config
PermitRootLogin yes
service sshd restart
systemctl restart sshd
/etc/init.d/ssh restart

2. SSH Weak Key Exchange Algorithms Enabled | SSH Server CBC Mode Ciphers Enabled
vim /etc/ssh/sshd_config

KexAlgorithms curve25519-sha256,[email protected],diffie-hellman-group-exchange-sha256
Ciphers [email protected],[email protected],[email protected]

systemctl restart sshd
//检查服务端接受的方法
sshd -T | grep -w kexalgorithms
ssh -c aes128-cbc IP地址

nmcl

NetworkManager Command Line Interface
1. 查看网络状态
nmcli device status
nmcli dev

# 显示设备的名称、类型、状态(已连接或未连接)及对应的网络连接。
# 显示所有连接信息
nmcli connection show
nmcli con show

# 显示活动连接
nmcli connection show --active

2. 管理连接
# 激活连接
nmcli connection up <connection_name>
nmcli connection up eno5

# 停用连接
nmcli connection down <connection_name>
nmcli connection down eno5

# 删除连接
nmcli connection delete <connection_name>
nmcli connection delete eno5

3. 配置连接
# 修改连接
nmcli connection modify <connection_name> <property> <value>
nmcli connection modify eno5 ipv4.addresses 192.168.1.100/24
nmcli con mod eno5 ipv4.dns "223.5.5.5,180.76.76.76,8.8.8.8"

# 禁用自动获取的 DNS 配置,强制使用手动设置的 DNS 服务器。
nmcli connection modify eno5 ipv4.ignore-auto-dns yes

# ipv4.dns-search 定义了默认的域名后缀。当你访问一个主机名(如 server)时,系统会自动尝试将其解析为 server.fengtaisec.com,方便访问域内资源。
nmcli connection modify eno5 ipv4.dns-search "fengtaisec.com"

# 添加新连接
nmcli connection add type ethernet ifname <interface_name> con-name <connection_name> ip4 <ip_address> gw4 <gateway>
nmcli connection add type ethernet ifname eno5 con-name my_ethernet ip4 192.168.1.100/24 gw4 192.168.1.1

# 设置静态 IP
nmcli con mod <connection_name> ipv4.addresses <ip_address>/<subnet_mask>
nmcli con mod <connection_name> ipv4.gateway <gateway>
nmcli con mod <connection_name> ipv4.dns <dns_servers>
nmcli con mod <connection_name> ipv4.method manual

# 设置为 DHCP
nmcli con mod <connection_name> ipv4.method auto

4. Wi-Fi 操作
# 扫描 Wi-Fi
nmcli device wifi list

# 连接到 Wi-Fi
nmcli device wifi connect <SSID> password <password>
nmcli device wifi connect MyWiFi password mypassword

# 显示当前 Wi-Fi 信息
nmcli device show wlan0

5. 显示设备信息
# 显示设备详情
nmcli device show

# 显示特定设备详情
nmcli device show <device_name>
nmcli device show eno5

6. 检查连接和配置
# 测试互联网连接
nmcli general connectivity
返回结果:
full: 连接正常。
limited: 有网络,但不能访问互联网。
none: 无网络连接。

# 显示主机名
nmcli general hostname

# 设置主机名
nmcli general hostname <new_hostname>

7. 帮助命令
# 查看 nmcli 帮助
nmcli help

# 查看子命令帮助
nmcli <command> help
nmcli connection help

cockpit配置

1. 配置(如果不是先配置再enable service需要systemctl daemon-reload)
/etc/systemd/system/cockpit.socket.d/listen.conf
[Socket]
ListenStream=
ListenStream=7777
FreeBind=yes

mkdir /etc/systemd/system/cockpit.socket.d
vim /etc/systemd/system/cockpit.socket.d/listen.conf
yum -y install cockpit
systemctl enable --now cockpit.socket
systemctl start firewalld
firewall-cmd --permanent --zone=public --add-service=cockpit

2. cockpit tls 关闭 1.1
mkdir /etc/systemd/system/cockpit.service.d
vim /etc/systemd/system/cockpit.service.d/ssl.conf
systemctl daemon-reload
systemctl restart cockpit

[Service]
Environment=G_TLS_GNUTLS_PRIORITY=SECURE128:-VERS-SSL3.0:-VERS-TLS1.0:-VERS-TLS1.1

3. 证书位置(非必须)
/etc/cockpit/ws-certs.d

查找

netstat -ntulp | grep 
ps -ef | grep
ps -aux | grep

vim

基本命令
以下是一些基本的Vim命令:
- i:在当前光标位置插入文本。
- x:删除当前光标所在位置的字符。
- :w:保存文件。
- :q:退出Vim编辑器。
- :q!:强制退出Vim编辑器,不保存文件。
- :wq:保存文件并退出Vim编辑器。
光标移动命令
在编辑文本时,移动光标是一个常见的操作。以下是一些常用的光标移动命令:
- h:将光标向左移动一个字符。
- j:将光标向下移动一行。
- k:将光标向上移动一行。
- l:将光标向右移动一个字符。
- w:将光标移动到下一个单词的开头。
- e:将光标移动到当前单词的末尾。
- b:将光标移动到上一个单词的开头。
- 0:将光标移动到当前行的开头。
- $:将光标移动到当前行的末尾。
- G:将光标移动到文件的末尾。
- gg:将光标移动到文件的开头。
- /<pattern>:向下搜索
<pattern>。
文本编辑命令
Vim具有丰富的文本编辑命令,以下是一些常用的命令:
- dd:删除当前行。
- yy:复制当前行。(要配合p使用)
- p:粘贴已复制或删除的文本。
- u:撤销上一次操作。
- Ctrl-r:重做上一次操作。
- r:替换当前光标所在位置的字符。
- c:删除从当前光标位置到指定位置的文本并进入插入模式。
- v:进入可视模式,选择文本。
- :s/<old>/<new>/g:将当前行中的
<old>替换为
<new>。
- :%s/<old>/<new>/g:将整个文件中的
<old>替换为
<new>。
插入模式命令
在插入模式中,您可以输入文本。以下是一些插入模式中的常用命令:
- Esc:退出插入模式。
- Ctrl-h:删除光标左侧的字符。
- Ctrl-w:删除光标左侧的单词。
- Ctrl-u:删除当前行的所有文本。
- Ctrl-a:插入文本到行首。
- Ctrl-e:插入文本到行尾。
- Ctrl-t:插入一个制表符。
宏命令
宏是一种将多个操作序列记录并重复执行的方法。以下是一些宏命令:
- qa:开始录制宏并将其存储在寄存器
a中。
- q:停止录制宏。
- @a:执行存储在寄存器
a中的宏。
- @@:重复上一次执行的宏。
分屏命令
Vim可以在窗口中分屏显示文件。以下是一些分屏命令:
- :sp:水平分屏当前窗口。
- :vsp:垂直分屏当前窗口。
- Ctrl-w h:将光标移到左侧窗口。
- Ctrl-w j:将光标移到下方窗口。
- Ctrl-w k:将光标移到上方窗口。
- Ctrl-w l:将光标移到右侧窗口。
- Ctrl-w +:增加当前窗口的高度。
- Ctrl-w -:减小当前窗口的高度。
多文件编辑命令
在Vim中,您可以编辑多个文件。以下是一些多文件编辑命令:
- :e <filename>:打开指定的文件。
- :tabnew <filename>:在新选项卡中打开指定的文件。
- :tabnext:切换到下一个选项卡。
- :tabprev:切换到上一个选项卡。
- :tabclose:关闭当前选项卡。
其他命令
以下是一些其他常用的Vim命令:
- :set number:显示行号。
- :set nonumber:隐藏行号。
- :set expandtab:使用空格代替制表符。
- :set tabstop=4:设置制表符宽度为4个字符。
- :set hlsearch:高亮显示搜索结果。
- :set nohlsearch:取消高亮显示搜索结果。
- :set background=dark:将背景设置为暗色。
- :set background=light:将背景设置为亮色。

swap

# 查看使用Swap的应用程序
for i in $(cd /proc;ls | grep "^[0-9]" | awk '$0>100'); do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps;done| sort -k2nr | head

FIREWALL

查看防火墙状态
firewall-cmd --state
开启防火墙
systemctl start firewalld.service
开启指定端口
firewall-cmd --zone=public --add-port=8848/tcp --permanent
firewall-cmd --zone=public --add-port=8848/udp --permanent
端口转发
#开启端口转发
firewall-cmd --permanent --add-masquerade
firewall-cmd --permanent --add-forward-port=port=8888:proto=tcp:toport=80
firewall-cmd --permanent --add-forward-port=port=9999:proto=tcp:toaddr=192.168.199.185:toport=3389
#获得容器的ip地址
docker inspect ubuntu1804-1 | grep IPAddress
172.19.0.3
docker inspect griffinTest | grep IPAddress
172.17.0.3
#新增
firewall-cmd --permanent --add-forward-port=port=29083:proto=tcp:toaddr=172.19.0.3:toport=9083
#删除
firewall-cmd --permanent --remove-forward-port=port=29083:proto=tcp:toaddr=172.19.0.3:toport=9083
#刷新
firewall-cmd --reload
重启防火墙
systemctl restart firewalld.service
重新加载防火墙
firewall-cmd --reload
查看已开启的端口
firewall-cmd --list-ports
查看已设置的规则
firewall-cmd --list-all
关闭指定端口
firewall-cmd --zone=public --remove-port=8080/tcp --permanent
firewall-cmd --zone=public --remove-port=8080/udp --permanent
临时关闭防火墙
systemctl stop firewalld.service
systemctl stop firewalld
永久关闭防火墙(须先临时关闭防火墙,再执行)
systemctl disable firewalld.service
systemctl disable firewalld

IPTables

常用命令
#查看状态
iptables -L -n
#添加对特定端口开放
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
#保存
/etc/rc.d/init.d/iptables save
/sbin/iptables save
#重启服务
service iptables restart
#查看需要打开的端口是否生效
/etc/init.d/iptables status
#编辑/etc/sysconfig/iptables
-A INPUT -p tcp -m tcp –dport 4000 -j ACCEPT 保存在前面部分
#重启
service iptables restart
20条IPTables防火墙规则用法!
IPTables 只是能够帮助管理员定义各种规则并与 Linux Kernel 进行沟通的一个命令行工具。
它只是帮助管理员配置网络流量的传入、传出规则列表,具体的实现其实是在 Linux 内核当中。
IPTables 包括一组内置和由用户定义规则的「链」,管理员可以在「链」上附加各种数据包处理规则。
- FILTER 默认过滤表,内建的链有:
- INPUT:处理流入本地的数据包
- FORWARD:处理通过系统路由的数据包
- OUTPUT:处理本地流出的数据包
- NAT 实现网络地址转换的表,内建的链有:
- PREROUTING:处理即将接收的数据包
- OUTPUT:处理本地产生的数据包
- POSTROUTING:处理即将传出的数据包
- MANGLE 此表用于改变数据包,共 5 条链:
- PREROUTING:处理传入连接
- OUTPUT:处理本地生成的数据包
- INPUT:处理报文
- POSTROUTING:处理即将传出数据包
- FORWARD:处理通过本机转发的数据包
接下来我们将由简入难介绍 25 条 Linux 管理员最常会用到的 IPTables 规则。
1、启动、停止和重启IPTables
虽然 IPTables 并不是一项服务,但在 Linux 中还是可以像服务一样对其状态进行管理。
基于SystemD的系统
systemctl start iptables
systemctl stop iptables
systemctl restart iptables
基于SysVinit的系统
/etc/init.d/iptables start
/etc/init.d/iptables stop
/etc/init.d/iptables restart
2、查看IPtables防火墙策略
你可以使用如下命令来查看 IPtables 防火墙策略:
iptables -L -n -v
以上命令应该返回数据下图的输出:
以上命令是查看默认的 FILTER 表,如果你只希望查看特定的表,可以在 -t 参数后跟上要单独查看的表名。例如只查看 NAT 表中的规则,可以使用如下命令:
iptables -t nat -L -v –n
3、屏蔽某个IP地址
如果你发布有某个 IP 向服务器导入攻击或非正常流量,可以使用如下规则屏蔽其 IP 地址:
iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP
注意需要将上述的 XXX 改成要屏蔽的实际 IP 地址,其中的 -A 参数表示在 INPUT 链的最后追加本条规则。(IPTables 中的规则是从上到下匹配的,一旦匹配成功就不再继续往下匹配)
如果你只想屏蔽 TCP 流量,可以使用 -p 参数的指定协议,例如:
iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j DROP
4、解封某个IP地址
要解封对 IP 地址的屏蔽,可以使用如下命令进行删除:
iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP
其中 -D 参数表示从链中删除一条或多条规则。
5、使用IPtables关闭特定端口
很多时候,我们需要阻止某个特定端口的网络连接,可以使用 IPtables 关闭特定端口。
阻止特定的传出连接:
iptables -A OUTPUT -p tcp --dport xxx -j DROP
阻止特定的传入连接:
iptables -A INPUT -p tcp --dport xxx -j ACCEPT
6、使用Multiport控制多端口
使用 multiport 我们可以一次性在单条规则中写入多个端口,例如:
iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --sports 22,80,443 -j ACCEPT
7、在规则中使用 IP 地址范围
在 IPtables 中 IP 地址范围是可以直接使用 CIDR 进行表示的,例如:
iptables -A OUTPUT -p tcp -d 192.168.100.0/24 --dport 22 -j ACCEPT
8、配置端口转发
有时我们需要将 Linux 服务器的某个服务流量转发到另一端口,此时可以使用如下命令:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j REDIRECT --to-port 2525
上述命令会将所有到达 eth0 网卡 25 端口的流量重定向转发到 2525 端口。
9、屏蔽HTTP服务Flood攻击
有时会有用户在某个服务,例如 HTTP 80 上发起大量连接请求,此时我们可以启用如下规则:
iptables -A INPUT -p tcp --dport 80 -m limit --limit 100/minute --limit-burst 200 -j ACCEPT
上述命令会将连接限制到每分钟 100 个,上限设定为 200。
10、禁止PING
对 Linux 禁 PING 可以使用如下规则屏蔽 ICMP 传入连接:
iptables -A INPUT -p icmp -i eth0 -j DROP
11、允许访问回环网卡
环回访问(127.0.0.1)是比较重要的,建议大家都开放:
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
12、屏蔽指定MAC地址
使用如下规则可以屏蔽指定的 MAC 地址:
iptables -A INPUT -m mac --mac-source 00:00:00:00:00:00 -j DROP
13、限制并发连接数
如果你不希望来自特定端口的过多并发连接,可以使用如下规则:
iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT
以上规则限制每客户端不超过 3 个连接。
14、清空IPtables规则
要清空 IPtables 链可以使用如下命令:
iptables -F
要清空特定的表可以使用 -t 参数进行指定,例如:
iptables -t nat –F
15、保存IPtables规则
默认情况下,管理员对 IPtables 规则的操作会立即生效。但由于规则都是保存在内存当中的,所以重启系统会造成配置丢失,要永久保存 IPtables 规则可以使用 iptables-save 命令:
iptables-save > ~/iptables.rules
保存的名称大家可以自己改。
16、还原IPtables规则
有保存自然就对应有还原,大家可以使用 iptables-restore 命令还原已保存的规则:
iptables-restore < ~/iptables.rules
17、允许建立相关连接
随着网络流量的进出分离,要允许建立传入相关连接,可以使用如下规则:
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
允许建立传出相关连接的规则:
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
18、丢弃无效数据包
很多网络攻击都会尝试用黑客自定义的非法数据包进行尝试,我们可以使用如下命令来丢弃无效数据包:
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
19、IPtables屏蔽邮件发送规则
如果你的系统不会用于邮件发送,我们可以在规则中屏蔽 SMTP 传出端口:
iptables -A OUTPUT -p tcp --dports 25,465,587 -j REJECT
20、阻止连接到某块网卡
如果你的系统有多块网卡,我们可以限制 IP 范围访问某块网卡:
iptables -A INPUT -i eth0 -s xxx.xxx.xxx.xxx -j DROP
源地址可以是 IP 或 CIDR。

screen

基础命令
1. 创建一个“窗口”(Session)
screen -S "window1"
创建窗口后,系统将自动进入window1并开始工作。随后的操作与普通终端无异。
2. 离开窗口(detach)
# 请按照以下步骤操作:首先,在window1里,请按下快捷键ctrl+a,然后再按下d键,即可离开虚拟窗口window1,回到真实的terminal。
ctrl-a d
3. 再次进入窗口(attach)
# 用-r参数来重新进入窗口window1。
screen -r "window1"


screen命令的一些特殊操作
1. 查看有哪些窗口
# 这个-ls将列出之前创建的所有虚拟窗口,和窗口的状态,是detach还是attach。
screen -ls
2. ssh意外中断后,重新回到attach状态的窗口
# -r选项用于将窗口从attach状态切换到detach状态,而-x选项则用于将窗口从detach状态切换到attach状态。需要注意的是,这两个选项的功能是互补的,它们的区别在于窗口的状态。
screen -x "window1"
3. 删除不用的窗口
# 进入窗口后用exit命令退出
screen -r "window1"
exit
# 用-X直接指定执行命令
screen -r "window1" -X quit
4. 窗口可以重名
如果未使用-ls选项查询,而是直接创建了一个同名的虚拟窗口,则screen会在窗口名称前添加一串数字以区分它们。在使用时,只需指定带数字前缀的完整名称即可。

Git

克隆指定分支

git clone -b 分支名 xx.git

强制推送分支

git push origin HEAD:main --force

git clone关闭sslverify

git config --global http.sslverify false
git config --global https.sslverify false

大数据

HDFS设置ACL权限

# whoyouwant:给谁权限 /where:路径
# -m 修改现有的ACL -R 递归应用到子路径
hadoop fs -setfacl -m -R user:whoyouwant:rwx /where

IMPALA同步hive元数据

impala-shell
INVALIDATE METADATA;

YARN

1. 切换队列
yarn application -changeQueue yarn-system -appId id名
yarn app -kill id名

## 将ats-hbase的任务切换到名为yarn-system的队列中
APP_ID=$(yarn application -list -appStates RUNNING | grep "ats-hbase" | awk '{print $1}') && yarn application -changeQueue yarn-system -appId $APP_ID

2. 队列配置 分default flink yarn-service 89:10:1
yarn.scheduler.capacity.maximum-am-resource-percent=0.3
yarn.scheduler.capacity.maximum-applications=10000
yarn.scheduler.capacity.node-locality-delay=40
yarn.scheduler.capacity.queue-mappings-override.enable=false
yarn.scheduler.capacity.resource-calculator=org.apache.hadoop.yarn.util.resource.DominantResourceCalculator
yarn.scheduler.capacity.root.accessible-node-labels=*
yarn.scheduler.capacity.root.acl_administer_queue=*
yarn.scheduler.capacity.root.acl_submit_applications=*
yarn.scheduler.capacity.root.capacity=100
yarn.scheduler.capacity.root.default.acl_submit_applications=*
yarn.scheduler.capacity.root.default.capacity=89
yarn.scheduler.capacity.root.default.maximum-capacity=100
yarn.scheduler.capacity.root.default.priority=0
yarn.scheduler.capacity.root.default.state=RUNNING
yarn.scheduler.capacity.root.default.user-limit-factor=1
yarn.scheduler.capacity.root.flink.acl_administer_queue=*
yarn.scheduler.capacity.root.flink.acl_submit_applications=*
yarn.scheduler.capacity.root.flink.capacity=10
yarn.scheduler.capacity.root.flink.maximum-capacity=43
yarn.scheduler.capacity.root.flink.minimum-user-limit-percent=100
yarn.scheduler.capacity.root.flink.ordering-policy=fifo
yarn.scheduler.capacity.root.flink.priority=0
yarn.scheduler.capacity.root.flink.state=RUNNING
yarn.scheduler.capacity.root.flink.user-limit-factor=1
yarn.scheduler.capacity.root.priority=0
yarn.scheduler.capacity.root.queues=default,flink,yarn-system
yarn.scheduler.capacity.root.yarn-system.acl_administer_queue=hive
yarn.scheduler.capacity.root.yarn-system.acl_submit_applications=hive
yarn.scheduler.capacity.root.yarn-system.capacity=1
yarn.scheduler.capacity.root.yarn-system.maximum-am-resource-percent=1
yarn.scheduler.capacity.root.yarn-system.maximum-capacity=1
yarn.scheduler.capacity.root.yarn-system.minimum-user-limit-percent=100
yarn.scheduler.capacity.root.yarn-system.ordering-policy=fifo
yarn.scheduler.capacity.root.yarn-system.priority=0
yarn.scheduler.capacity.root.yarn-system.state=RUNNING
yarn.scheduler.capacity.root.yarn-system.user-limit-factor=1

切换元数据库为TIDB

1. hostname无法解析

<property>
<name>dfs.namenode.datanode.registration.ip-hostname-check</name>
<value>false</value>
</property>

2. 安装tidb后需要执行的sql及hive-site需要增加的配置

SET GLOBAL tidb_skip_isolation_level_check=1;

hive.metastore.schema.verification false

Spark在drop表的时候不会删除hdfs上对应的目录文件

set spark.sql.legacy.useV1Command = true;

查看hdfs副本信息并设置为3

1、打印所有块信息:
hdfs fsck / -files -blocks > ./blocks.txt
2、检查副本:
sed '$!N;/Live_repl=0/P;D' ./blocks.txt | grep "block" | awk '{print $1}' > ./rep_0.txt # 0副本文件
sed '$!N;/Live_repl=1/P;D' ./blocks.txt | grep "block" | awk '{print $1}' > ./rep_1.txt # 1副本文件
sed '$!N;/Live_repl=2/P;D' ./blocks.txt | grep "block" | awk '{print $1}' > ./rep_2.txt # 2副本文件
3、改副本数:(改之前确认一下文件内容)
for hdfsfile in `cat ./rep_0.txt`; do hdfs dfs -setrep 3 $hdfsfile; done
for hdfsfile in `cat ./rep_1.txt`; do hdfs dfs -setrep 3 $hdfsfile; done
for hdfsfile in `cat ./rep_2.txt`; do hdfs dfs -setrep 3 $hdfsfile; done

Hive on tez count 0

1. 由于元数据缺失 执行sql更新信息 
ANALYZE TABLE table_name COMPUTE STATISTICS;

2. 修改配置,不依赖读取元数据,每次count都会进行计算
hive.compute.query.using.stats=FALSE

ES-HADOOP

1. 插入异常,查询正常
commons-httpclient-3.1.jar放入文件夹(当前es版本7.10.2)
/path/to/hive/auxlib

TRINO

1. 单独增加额外的jdk23
在launcher文件中增加
PATH=/path/to/jdk23/bin:$PATH

WIN

查看文件MD5值

certutil -hashfile 文件全路径 MD5

POSTMAN

版本转换

postman-collection-transformer convert -i source.json -o target.json -j 2.1.0 -p 1.0.0 -P

ClickHouse

数据备份软件

clickhouse-backup

Yum

RPM 数据库文件损坏修复

rpm --rebuilddb

HTOP下载

yum -y install epel-release
yum -y install htop

命令

1. 安装
yum install
2. 更新
yum update vim -y #只更新vim
yum update #更新所有软件
3. 组安装
yum -y groupinstall gnome-desktop
yum grouplist #查看包组
4. yum列出当前仓库
yum repolist #查看当前有哪些yum源, 分别由多少包,总共有多少包
5. yum搜索包或者命令
yum search all ifconfig #搜索ifconfig命令来自哪个包, 如果安装了的话, 可以用/usr/sbin/ifconfig查询
6. yum清除缓存
# yum命令会把yum源信息缓存到本地,以减少网络开销,缓存2周(可以设置的)
# 更换了yum源, 不清缓存的话, 就用不了新的
yum clean all
7. 卸载
yum remove vim -y
yum erase vim -y
8. 列出当前可用包
yum list all #列出所有缓存的包信息
yum grouplist #列出缓存的包组信息
yum groupinfo "Base" #查看base包组包含的包
9. 下载软件包
提前下载rpm包用于内网安装
yumdownloader dstat #下载dsat的rpm包
10. 重新安装
yum reinstall

RPM

命令

#安装
rpm -ivh
#查询所有
rpm -qa
#查询指定
rpm -q
#升级指定
rpm -Uvh
#删除指定
rpm -e

APT

命令

# apt 是 Advanced Packaging Tool 的简称,是一款安装包管理工具。在 Ubuntu 下,我们可以使用 apt
# 命令可用于软件包的安装、删除、清理等,类似于 Windows 中的软件管理工具。
#更新源
sudo apt-get update
#安装包
sudo apt-get install package
#删除包
sudo apt-get remove package
#搜索软件包
sudo apt-cache search package
#获取包的相关信息,如说明、大小、版本等
sudo apt-cache show packagename
#重新安装包
sudo apt-get install package --reinstall
#修复安装
sudo apt-get -f install
#删除包,包括配置文件等
sudo apt-get remove package --purge
#安装相关的编译环境
sudo apt-get build-dep package
#更新已安装的包
sudo apt-get upgrade
#升级系统
sudo apt-get dist-upgrade
#了解使用该包依赖那些包
sudo apt-cache depends package
#查看该包被哪些包依赖
sudo apt-cache rdepends package
#下载该包的源代码
sudo apt-get source package
#检查是否有损坏的依赖
apt-get check

PYTHON

PIP下载

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

ANACONDA源设置

用户目录下的 .condarc 文件

channels:
- defaults
show_channel_urls: true
default_channels:
- http://mirrors.aliyun.com/anaconda/pkgs/main
- http://mirrors.aliyun.com/anaconda/pkgs/r
- http://mirrors.aliyun.com/anaconda/pkgs/msys2
custom_channels:
conda-forge: http://mirrors.aliyun.com/anaconda/cloud
msys2: http://mirrors.aliyun.com/anaconda/cloud
bioconda: http://mirrors.aliyun.com/anaconda/cloud
menpo: http://mirrors.aliyun.com/anaconda/cloud
pytorch: http://mirrors.aliyun.com/anaconda/cloud
simpleitk: http://mirrors.aliyun.com/anaconda/cloud

VSCODE

VS Code 设置文件观察程序的句柄

cat /proc/sys/fs/inotify/max_user_watches
fs.inotify.max_user_watches=524288
sudo sysctl -p

REDIS

配置文件

# Redis configuration file example
# redis.conf
# General settings
daemonize yes
pidfile /var/run/redis/redis-server.pid
port 6379
bind 0.0.0.0
timeout 0
tcp-keepalive 300

# Security
requirepass ThisMiMa
# Network settings
protected-mode no

PGSQL

安装

# https://www.postgresql.org/ 官网
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum install -y postgresql15-server
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
sudo systemctl enable postgresql-15
sudo systemctl start postgresql-15

命令

1. 启动、查看状态
systemctl start postgresql-15
systemctl status postgresql-15

2. 登录、使用
切换默认用户
su - postgres
连接
psql
查看数据
\l
退出
\q

3. 修改角色postgres密码、系统用户postgres密码
ALTER USER postgres WITH PASSWORD 'fengtaibigdata';
sudo passwd -d postgres
sudo -u postgres passwd
fengtaibigdata

4. 配置远程登录 修改配置文件 重启
vim /var/lib/pgsql/15/data/postgresql.conf
前两行原始 第三行新增
# - Connection Settings -
#listen_addresses = 'localhost' # what IP address(es) to listen on;
listen_addresses = '*'

vim /var/lib/pgsql/15/data/pg_hba.conf
前两行原始 第三行新增
# IPv4 local connections:
host all all 127.0.0.1/32 scram-sha-256
host all all 0.0.0.0/0 md5

systemctl restart postgresql-15

5. 建库建表 pg的库有模式的划分 默认会建到public中去 因此前缀多了个public ods_ztm_zhyw.public.
CREATE DATABASE ods_ztm_zhyw;
CREATE TABLE ods_ztm_zhyw.public.ods_m6_ztm_ops_early_warning_management (
id BIGINT,
line_id BIGINT,
line_id_jd VARCHAR(255),
station_id BIGINT,
station_id_jd VARCHAR(255),
platform_id BIGINT,
platform_id_jd VARCHAR(255),
door_code VARCHAR(255),
warning_content TEXT,
create_time TIMESTAMP,
update_time TIMESTAMP,
is_delete INT,
type VARCHAR(50),
status SMALLINT,
handler VARCHAR(255),
handle_comment TEXT,
operator_time TIMESTAMP,
deal_state SMALLINT,
debug_state SMALLINT,
level VARCHAR(50),
key_name VARCHAR(255),
s_insert_time TIMESTAMP
);

CADDY

安装

sudo dnf install 'dnf-command(copr)'
sudo dnf copr enable @caddy/caddy
sudo dnf install caddy

MITM

反向代理

# 将请求到该目标地址的请求转发到本地的指定端口
mitmweb --mode=reverse:http://bigdata.com:21001 -o 21001

KVM

安装

//虚拟机步骤
//检查硬件是否支持虚拟化 输出大于 0 表示支持虚拟化
egrep -c '(vmx|svm)' /proc/cpuinfo

//安装 KVM 和虚拟化工具
sudo dnf install @virt virt-install libvirt libvirt-daemon-kvm qemu-kvm

//启动并启用 libvirtd 服务
sudo systemctl start libvirtdsudo
systemctl enable libvirtd

//检查 KVM 是否正常工作 应该看到 kvm 和 kvm_intel 或 kvm_amd,这取决于 CPU 类型
lsmod | grep kvm

//安装 virt-manager(可选,图形界面管理工具)
sudo dnf install virt-manager

//打开虚拟机管理工具
virt-manager

X11转发

解释

X11转发 是一种通过网络转发 X11 协议的技术,常用于远程连接的场景下,将运行在远程主机上的图形化应用程序的用户界面显示到本地计算机上。它的工作机制依赖于 X Window System(简称 X11)的设计。

配置

# x11配置步骤
dnf install xorg-x11-xauth

vim /etc/ssh/sshd_config

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

systemctl restart sshd

xshell中打开转发到xmanager/ssh -X username@server_ip

pA1>dT6|epA1>dT6|eB1_qT2pZ4[B1_qT2pZ4[pA1>dT6|eB1_qT2*pZ4[

Mydumper

备份及恢复

# https://github.com/mydumper/mydumper
# 适用mysql及tidb
# -t 线程数
# -F 将表拆分为此输出文件大小的块。该值以 MB 为单位
mydumper -h 127.0.0.1 -P 4000 -u root -p 'bigdata' -t 16 -F 64 --skip-tz-utc -o ./
myloader -h 127.0.0.1 -u root -P 4000 -t 32 -d ./

DOCKER

命令

1. docker run - 运行一个容器
2. docker stop - 停止一个容器
3. docker ps - 列出所有正在运行的容器
4. docker images - 列出所有镜像
5. docker pull - 从仓库中拉取镜像
6. docker rmi - 删除指定的镜像
7. docker build - 从Dockerfile构建镜像
8. docker inspect - 查看容器的详细信息
9. docker logs - 查看容器的日志
10. docker exec - 在容器中执行命令
11. docker port - 查看容器的端口映射
12. docker rm - 删除指定的容器
13. docker restart - 重启指定的容器
14. docker kill - 强制停止指定的容器
15. docker tag - 给镜像打标签
16. docker push
17. docker stop $(docker ps -a -q)

网络重建(由于docker自身的bug)

docker network rm 所有网络
docker network ls
systemctl stop docker
iptables -F && iptables -F -t nat
systemctl start docker

镜像的保存及启动

1. 将当前容器保存为镜像
docker commit <容器ID> <镜像名>:<标签>

2. 保存镜像到文件
docker save -o <文件名>.tar <镜像名>:<标签>

3. 加载镜像
docker load -i <文件名>.tar

4. 启动镜像生成容器
# -d:以守护进程模式运行容器(后台运行)。
# --name <容器名>:为容器指定一个名称(如 mycontainer)。

docker run [选项] <镜像名>:<标签>
docker run -d --name mycontainer myapp:latest

GO

设置代理

#设置代理
go env -w GOPROXY=https://goproxy.cn,direct
go mod tidy