运维工作常见问题处理38-74(二)

本篇目录链接

问题38、磁盘检查和修复

报错:Linux mount: Structure needs cleaning 且命令行无法使用命令
解决办法:可以使用fsck/xfs_repair来修复,但是要注意 fsck/xfs_repair 修复的分区中的文件有可能会丢失,先卸载挂在盘,然后在修复。
ext4文件系统,使用命令 umount /dev/vda2 ; fsck.ext4 /dev/vda2 修复
xfs文件系统, 使用命令 umount /dev/vda2 ; xfs_repair -L /dev/vda2 修复
修复完后不确实是否成功,可以使用echo $? , 看返回值是否为0,0表示成功,不为0则失败,多尝试几次修复
https://www.cnblogs.com/hystj/articles/9359263.html
http://sfc.wz58.com/index.php/post/72.html
https://blog.51cto.com/dangzhiqiang/1657511
详细版
首先尝试mount和umount文件系统,以便重放日志,修复文件系统,如果不行,再进行如下操作。
1、检查文件系统:先确保umount
xfs_check /dev/sdd(盘符); echo $?
返回0表示正常
2、执行xfs_repair -n,检查文件系统是否损坏,如何损坏会列出将要执行的操作
如果幸运的话,会发现没有问题,你可以跳过后续的操作。
该命令将表明会做出什么修改,一般情况下速度很快,即便数据量很大,没理由跳过。
该命令将表明会做出什么修改,一般情况下速度很快,即便数据量很大,没理由跳过。
3、执行xfs_repair修复文件系统
xfs_repair /dev/sdd (ext系列工具为fsck)
4、最后方法:损失部分数据的修复方法
根据打印消息,修复失败时:
先执行xfs_repair -L /dev/sdd(清空日志,会丢失文件),再执行xfs_repair /dev/sdd,再执行xfs_check /dev/sdd 检查文件系统是否修复成功。
说明:-L是修复xfs文件系统的最后手段,慎重选择,它会清空日志,会丢失用户数据和文件。
备注:
在执行xfs_repair操作前,最好使用xfs_metadump工具保存元数据,一旦修复失败,最起码可以恢复到修复之前的状态。
xfs_metadump为调试工具,可以不管,跳过。

问题39、查看uuid

ls -l /dev/disk/by-uuid

问题40、用户组

增加一个新用户到主要用户组
useradd -g developers cnzhx
-g:将新增加的用户初始化为指定为登录组(主要用户组)。此组名必须已经存在。组号(gid)即是此已有组的组号
将一个已有用户增加到一个已有用户组中
usermod -a -G apache cnzhx
创建用户并将其加入到某个用户组
useradd -G developers cnzhx

问题41、数据库主从不同步问题

问题现象:
Slave_IO_Running: Yes
Slave_SQL_Running: No
Last_Errno: 1062
Last_Error: Error ‘Duplicate entry ‘3057-1-2019-05-25 00:00:00’ for key ‘idx’’ on query. Default database: ‘wg_qc_event’. Query: ‘insert into event_location_entity(map_types, eid, start_time, update_time, location_result) values(1, 3057, ‘2019-05-25 00:00:00’, ‘2019-07-03 15:04:18’, ‘{“event_news_ref”:{“Singapore”:“1”,“United States”:“24”,“United Kingdom”:“20”,“Malaysia”:“1”,“United Arab Emirates”:“2”,“India”:“2”,“Russia”:“2”,“Pakistan”:“2”,“China”:“14”,“Brazil”:“2”,“Australia”:“2”,“France”:“1”,“Germany”:“1”}}’)’

原因分析:
1)有可能插入重复主键导致从库不工作了
2)有可能在从库上做写操作了
解决办法:
1)跳过错误,比如在从库上执行
stop slave;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER =1;
start slave;
或者直接在从库上配置文件中添加slave-skip-errors=1062配置
这样确实解决了问题,恢复了复制。但是久而久之主从数据相差就很大了
2)将主库上的此表在从库上重新执行一遍sql
先将从库上的表重命名
将主库上对应此表导出来在从库上执行
停止从库上的同步操作stop slave,重新做主从同步操作即可
change master to
master_host=‘192.168.171.139’,
master_user=‘repluser2’,
master_password=‘123456’,
master_log_file=‘master52.000001’,
master_log_pos=154;
最后,如果发现有数据不一致,可以通过pt-table-checksum 进行数据校验
https://www.cnblogs.com/gomysql/p/3662264.html

https://blog.csdn.net/bumoon/article/details/51619408

问题42、ping www.baidu.com 不通

step1:检查/etc/resolv.conf的配置(ok转step2)
step2:检查网关(route -n,查看网关是否正确)
step3:查看网卡配置文件(结合step2和step3,重启网卡即可)

curl http://192.168.10.113:9200/_cat/indices?v&h=host,creation.date.string,index,health,status&s=creation.date 查看es节点的索引信息

curl -XPOST ‘localhost:9200/_cluster/reroute’ -d ‘{
“commands”:[
{
“allocate_replica”:{
“index”:“major_info_201908”,
“shard”:“0”,
“node”:“192.168.10.106”,
“allow_primary”:true
}
}
]
}’

curl -XGET http://localhost:9200/_cat/nodes?h=heap.max 查看es集群分配的最大jvm堆内存

问题43、linux上rar解压

1、wget http://www.rarsoft.com/rar/rarlinux-x64-5.4.0.tar.gz
2、tar -zxvf rarlinux-x64-5.4.0.tar.gz
3、cd rar && make
4、rar --help
解压 rar x test.rar
加压 rar a test.rar *.jpg

问题44、zabbix_agent安装

yum -y install pcre*
tar -xf zabbix-3.4.15.tar.gz
cd zabbix-3.4.15
./configure --prefix=/usr/local/zabbix --enable-agent
make && make install
cp /tmp/zabbix-3.4.15/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/ 复制启动脚本
sed -i ‘s#BASEDIR=/usr/local#BASEDIR=/usr/local/zabbix_agent#’ /etc/init.d/zabbix_agentd 修改 Agent 安装路径
vim /usr/local/zabbix/etc/zabbix_agentd.conf

service zabbix_agentd start您与该网站的连接不是私密连接,存在安全隐患。
攻击者可能会试图窃取您的信息(例如:密码、通讯内容或信用卡信息)。为避免您的信息失窃,建议您

groupadd zabbix
useradd -g zabbix zabbix
mkdir /var/run/zabbix
mkdir /var/log/zabbix
mkdir /var/lock/subsys/
chown zabbix.zabbix -R /var/log/zabbix/
chown zabbix.zabbix -R /var/run/zabbix/
chown -R zabbix.zabbix /var/lock/subsys/

chkconfig --list
chkconfig --level 35 zabbix_agentd on

问题45、date在shell中的日期

TIME= ( d a t e − d y e s t e r d a y " + T I M E = (date -d yesterday "+%Y%m%d") --------- 20190720 TIME= (datedyesterday"+TIME=(date “+%Y%m%d”) --------- 20190720
TIME=$(date "+%F) --------- 2019-07-20

问题46、安装python

#安装依赖
yum -y install gcc gcc-c++ cmake make lrzsz bash-complation
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
#Python版本
PKG=“Python-3.7.3.tgz”
#Python解压目录
VS=“Python-3.7.0”
#路径
dir_path=KaTeX parse error: Expected 'EOF', got '#' at position 41: …local/python3" #̲下载太慢跳过 #wget ht…{PKG}
#解压
tar -xvf d i r p a t h / {dir_path}/ dirpath/{PKG}
cd V S . / c o n f i g u r e − − p r e f i x = {VS} ./configure --prefix= VS./configureprefix={install_path}
make -j 4 && make install
[ KaTeX parse error: Expected 'EOF', got '&' at position 11: ? -eq 0 ] &̲& echo "Python3…(which python3)"
echo “ ( w h i c h p i p 3 ) " e c h o " (which pip3)" echo " (whichpip3)"echo"(ls -l /usr/local/python3/)”

pip3 install flask
pip3 install gunicorn
pip3 install opencv-python
pip3 install numpy

问题47、docker建立软连接

1、停止正在运行的docker:systemctl stop docker
2、创建文件夹:mkdir /data/docker (/data为新磁盘目录名)
3、移动/var/lib/docker/目录到新目录中: mv /var/lib/docker/* /data/docker
4、删除/var/lib/docker/目录: rm -rf /var/lib/docker
5、软连接/data/docker 到 /var/lib/里: ln -s /data/docker /var/lib/
6、启动docker: systemctl start docker

问题48、ENOSPC:System limit for number of file watchers reached

意思是系统对文件监控的数量已经到达限制数量了,造成的结果: 执行的命令失败!或抛出警告(比如执行 react-native start 或者打开 vsocde)
解决方法:
echo “fs.inotify.max_user_watches=524288” >> /etc/sysctl.conf && sysctl -p

问题49、windows 磁盘分区命令

Win+R—diskpart—lis dis-----sel dis 1----clean--------------------create partition primary-----active------format fs=ntfs quick-----exit------------exit
进入diskpart界面—列出磁盘----选择磁盘-----清理该磁盘下的所有分区—创建主分区-------------------激活主分区–对主分区进行快速格式化—退出diskppark—退出cmd命令行
快速格式化只是删除了硬盘上的文件,完全格式化是真正的将硬盘重新分道分簇。一般来说,快速格式化比完全格式化要好,因为一方面可以以很快的速度格式化完成,另外一方面对硬盘的磨损要少。但是如果怀疑硬盘上可能有坏道的话,就应该进行完全格式化对硬盘进行一次完全的扫描,完全格式化会对硬盘上的坏道作标记防止后续的使用,可以在一定程度上提高有坏道硬盘的使用。

问题50、kvm虚拟机资源调整

虚拟机关机,cd /etc/libvirt/qemu
编辑相应虚拟机的xml文件
保存文件后,在此定义虚拟机virsh define *****.xml
虚拟机开机

问题51、查看linux本机的出口ip/公网ip/外网ip

方法一:curl http://members.3322.org/dyndns/getip 推荐使用
方法二:curl ifconfig.me 比较慢
方法三:curl cip.cc 推荐使用

问题52、make太慢了,加快编译速度的方法 make -j

对于源码包的编译,默认的make不加-j参数效率比较低。加上-j参数,-j4和-j8性能差距不大,-j16性能就比较差了,相对而言,make -j 4较为合理,最后再make install -j 4。
scl enable devtoolset-6 bash 激活cmake

问题53、mysql配置文件自动生成器

http://imysql.com/my-cnf-wizard.html

问题54、linux添加路由策略

在linux下永久添加静态路由有两种方法:
1.route add
route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0#添加一条静态路由
等同于
route add -net 192.56.76.0/24 dev eth0

route add default gw 192.168.0.1#添加默认路由
route del -net 192.168.1.0/24 gw 192.168.0.1#删除一条路由
route -n#查看路由表
2.ip ro add
ip ro add 192.56.76.0/24 dev 192.168.0.1#添加一条静态路由
ip ro add default via 192.168.0.1 dev eth0#添加默认路由
ip ro del 192.168.1.0/24#删除一条路由
ip route show#查看路由表

add 增加路由
del 删除路由
via 网关出口IP地址
dev 网关出口物理设备名

一:使用 route 命令添加
使用route 命令添加的路由,机器重启或者网卡重启后路由就失效了,方法:
添加到主机的路由
route add –host 192.168.1.11 dev eth0
route add –host 192.168.1.12 gw 192.168.1.1
添加到网络的路由
route add –net 192.168.1.11 netmask 255.255.255.0 eth0
route add –net 192.168.1.11 netmask 255.255.255.0 gw 192.168.1.1
route add –net 192.168.1.0/24 eth1

route add default gw 192.168.2.1 添加默认网关
route del –host 192.168.1.11 dev eth0 删除路由
route del default gw 192.168.2.1 删除默认路由
二:在linux下设置永久路由的方法:
1.在/etc/rc.local里添加
方法:
route add -net 192.168.3.0/24 dev eth0
route add -net 192.168.2.0/24 gw 192.168.2.254
2.在/etc/sysconfig/network里添加到末尾
方法:GATEWAY=gw-ip 或者 GATEWAY=gw-dev
3./etc/sysconfig/static-routes : (没有static-routes的话就手动建立一个这样的文件)
any net 192.168.3.0/24 gw 192.168.3.254
any net 10.250.228.128 netmask 255.255.255.192 gw 10.250.228.129
4.开启 IP 转发:
#echo “1” >/proc/sys/net/ipv4/ip_forward (临时)
#vi /etc/sysctl.conf --> net.ipv4.ip_forward=1 (永久开启)
这里并没有错误的地方,只不过之前没有接触对这些参数没什么想法,这次正好研究了下,大概了解了下没个参数的意思。

问题55、添加历史命令使用者记录(/etc/profile)

export HISTTIMEFORMAT="%F %T whoami "

问题56、yum update遇到问题Delta RPMs disabled because /usr/bin/applydeltarpm not installed.

解决办法
此问题安装Deltarpm包(增量 RPM 套件)即可解决,当然您也可以先使用一下命令,查看是哪个包提供applydeltarpm
yum provides ‘*/applydeltarpm’
yum install deltarpm -y
安装完后然后在yum update

问题57、MYSQL57密码策略修改

1、查看当前的密码测试 show variables like ‘validate_password%’;
2、各项值说明
validate_password_policy:密码安全策略,默认MEDIUM策略
0 or LOW Length
1 or MEDIUM Length; numeric, lowercase/uppercase, and special characters
2 or STRONG Length; numeric, lowercase/uppercase, and special characters; dictionary file

validate_password_dictionary_file:密码策略文件,策略为STRONG才需要
validate_password_length:密码最少长度
validate_password_mixed_case_count:大小写字符长度,至少1个
validate_password_number_count :数字至少1个 validate_password_special_char_count:特殊字符至少1个
3、修改策略(将策略要求置为LOW,长度要求置为1)
set global validate_password_policy=0;
set global validate_password_length=1;
4、重置密码
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘123456’;
5、mysql最大连接数查询并设置
查看最大连接数:
mysql -u root -p 回车后输入密码
命令行输入:show variables like ‘%max_connections%’;
设置最大连接数:
编辑配置文件/etc/my.cnf
在[mysqld]配置项下面添加
max_connections=1000,保存退后后重启数据库即可service mysqld restart

问题58、常用yum源

Centos-7
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
epel-7
wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo
zabbix
cat < /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591

[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1
EOF

添加gpgkey
curl https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591 -o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
curl https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX -o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX

问题59、linux安装tv和向日葵

tv14
step1:下载tv14
wget https://dl.teamviewer.cn/download/linux/version_14x/teamviewer_14.5.5819.x86_64.rpm
step2:安装eperl源
yum -y install eperl-ralease
step3:安装tv
yum -y localinstall teamviewer_14.5.5819.x86_64.rpm
如果这里安装不成功,解决部分依赖后仍然不行的话,用rpm强制安装
rpm -ivh --force --nodeps
step4:启动服务,查看id,设置密码,开机自启
systemctl start teamviewerd.service 启动服务
teamviewer --info 查看id
teamviewer passwd zkwg123 设置密码
systemctl enable teamviewerd.service 开机自启
向日葵
step1:下载向日葵
wget http://download.oray.com/sunlogin/linux/SunloginClient9.6.1.tar.gz
step2:解压安装
tar -xf SunloginClient9.6.1.tar.gz
cd sunloginclient
./install.sh
安装即可,只需要输入三次Y,后面直接N,不需要oray账号
step3:服务端口是30080,登录浏览器即可查看
systemctl start runsunloginclient.service 或 /usr/local/sunlogin/start.sh
systemctl enable runsunloginclient.service 或 /usr/local/sunlogin/stop.sh

问题60、系统时钟不同步,有时差

step1、确认时区是否为shanghai
ll /etc/localtime
如果不正确,手动修改时 区:ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
step2、检查本地时间与硬件时间
timedatectl
step3、修改本地时间
date -s ‘-8hour’
step4、将本地时间写入硬件时间并重新检查
hwclock -w

问题61、journalctl命令(/etc/systemd/journald.conf)

journalctl #查看所有日志(默认显示本次启动的所有日志)
journalctl -b #查看本次启动的所有日志也可以使用
journalctl -k #查看内核日志
journalctl --since=“2018-09-21 10:21:00” #查看指定时间的日志,通过–since和–until选项,可以过滤任意时间限制,显示指定条件之前、之后或之间的日志。
journalctl --since=“2018-09-21 10:21:00” --until=“2018-09-21 10:22:00” #查询一个时间段范围内的日志。
journalctl -u kubelet.service #根据服务筛选,或journalctl -u kubelet
journalctl _PID=1 #根据进程ID查询,如果进程使用了systemd托管日志,则可以通过以下命令查找进程对应的日志。
journalctl -p 5 -u kubelet #按优先级,操作系统提供了从0 (emerg) 到 7 (debug) 一共7个级别的日志,可以配合-p参数分别查看对应级别的日志
7个级别的含义为
0: emerg
1: alert
2: crit
3: err
4: warning
5: notice
6: info
7: debug

journalctl -p 5 --no-pager -o json #以Json格式输出,默认情况,journal输出进入分页模式,用户可以在终端上调整显示的内容,如果要不需要分页,需要加上–no-pager参数,通过-o参数,可以设置为json格式输出,这对于其他接收json格式的日志分析工具非常友好。
journalctl -p 5 --no-pager -o json-pretty
使用json-pretty则对于管理员查看日志非常易读。

json-pretty支持的各种格式如下:
cat: 只显示信息字段本身。
export: 适合传输或备份的二进制格式。
json: 标准JSON,每行一个条目。
json-pretty: JSON格式,适合人类阅读习惯。
json-sse: JSON格式,经过打包以兼容server-sent事件。
short: 默认syslog类输出格式。
short-iso: 默认格式,强调显示ISO 8601挂钟时间戳。
short-monotonic: 默认格式,提供普通时间戳。
short-precise: 默认格式,提供微秒级精度。
verbose: 显示该条目的全部可用journal字段,包括通常被内部隐藏的字段

journalctl -unf kubelet #活动日志跟踪,journalctl也支持类似tail的功能,如通过-n参数指定显示最近的多少行,默认为10行,通过-f参数持续监控日志输出。

journalctl --disk-usage #查看日志占用的磁盘空间
journalctl --vacuum-size=500M #设置日志占用的空间
journalctl --vacuum-time=1month #设置日志保存的时间

问题62、k8s之kubectl命令补全;docker命令补全

k8s部署
https://hazx.hmacg.cn/server/k8s-install.html

k8s
yum install -y epel-release bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
echo “source <(kubectl completion bash)” >> ~/.bashrc
docker并设置开机自启
yum install -y epel-release bash-completion && cp /usr/share/bash-completion/completions/docker /etc/bash_completion.d/
systemctl enable --now docker

问题63、linux内核升级

step1:下载yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
step2:升级内核依赖, perl是内核的依赖包
[ ! -f /usr/bin/perl ] && yum install perl -y
step3:升级内核需要使用 elrepo 的yum 源,首先我们导入 elrepo 的 key并安装 elrepo 源
yum update
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
step4:查看可用内核 (不导入升级内核的elrepo源,无法查看可用内核)
yum --disablerepo="" --enablerepo=“elrepo-kernel” list available --showduplicates
在yum的ELRepo源中,mainline 为最新版本的内核,安装kernel
yum --enablerepo=elrepo-kernel install kernel-ml -y&&
step5:下面链接可以下载到其他归档版本的
http://mirror.rc.usf.edu/compute_lock/elrepo/kernel/el7/x86_64/RPMS/
下载rpm包,手动yum
自选版本内核安装方法(求稳定我使用的是4.18内核版本)
export Kernel_Version=4.18.9-1
wget http://mirror.rc.usf.edu/compute_lock/elrepo/kernel/el7/x86_64/RPMS/kernel-ml{,-devel}-${Kernel_Version}.el7.elrepo.x86_64.rpm
yum localinstall -y kernel-ml

#如果是手动下载内核rpm包,直接执行后面yum install -y kernel-ml即可
step6:
如果是不想升级后面的最新内核可以此时升级到保守内核去掉update的exclude即可
yum install epel-release -y
yum install wget git jq psmisc socat -y
yum update -y --exclude=kernel

如果想安装最新内核可以使用下面方法
yum --disablerepo="" --enablerepo=“elrepo-kernel” list available --showduplicates | grep -Po ‘^kernel-ml.x86_64\s+\K\S+(?=.el7)’
yum --disablerepo="
" --enablerepo=elrepo-kernel install -y kernel-ml{,-devel}
step7:重启下加载保守内核
sed -i s/saved/0/g /etc/default/grub&&
grub2-mkconfig -o /boot/grub2/grub.cfg && reboot

问题64、设置内核参数

echo “* soft nofile 190000” >> /etc/security/limits.conf
echo “* hard nofile 200000” >> /etc/security/limits.conf
echo “* soft nproc 252144” >> /etc/security/limits.conf
echo “* hadr nproc 262144” >> /etc/security/limits.conf
cat /etc/sysctl.conf <<-‘EOF’
#System default settings live in /usr/lib/sysctl.d/00-system.conf.
#To override those settings, enter new settings here, or in an /etc/sysctl.d/.conf file
net.ipv4.tcp_tw_recycle = 0
net.ipv4.ip_local_port_range = 10000 61000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.ip_forward = 1
net.core.netdev_max_backlog = 2000
net.ipv4.tcp_mem = 131072 262144 524288
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_low_latency = 0
net.core.rmem_default = 256960
net.core.rmem_max = 513920
net.core.wmem_default = 256960
net.core.wmem_max = 513920
net.core.somaxconn = 2048
net.core.optmem_max = 81920
net.ipv4.tcp_mem = 131072 262144 524288
net.ipv4.tcp_rmem = 8760 256960 4088000
net.ipv4.tcp_wmem = 8760 256960 4088000
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_sack = 1
net.ipv4.tcp_fack = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_syn_retries = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 1
EOF
echo “options nf_conntrack hashsize=819200” >> /etc/modprobe.d/mlx4.conf
modprobe br_netfilter
sysctl -p

问题65、查看当前TCP连接

netstat -nat | awk ‘/^tcp/{state[$NF]++}END{for(a in state){print a " " state[a]}}’ 统计tcp连接状态数
netstat -n | awk ‘/^tcp/ {print $4}’ | sort | uniq -c | sort -nr 查看当前主机各端口连接数

问题66、dell vostro 3668设置U盘启动

重启按F2
win7电脑进入安全模式,重启按F8,使用 net user administrator /active:yes 重新激活管理员账号

问题67、php依赖问题https://blog.csdn.net/u011608531/article/details/50756112

Please reinstall readline - I cannot find readline.h yum -y install readline-devel
configure: error: mcrypt.h not found. Please reinstall libmcrypt yum install -y libmcrypt-devel
configure: error: Please reinstall the libcurl distribution-easy.h should be in /include/curl/ yum install curl curl-devel
configure: error:Please reinstall the BZip2 distribution yum install bzip2 bzip2-devel

问题68、创建交换分区

step1、创建要作为swap分区的文件:增加1GB大小的交换分区,则命令写法如下,其中的count等于想要的块的数量(bs*count=文件大小)。
dd if=/dev/zero of=/root/swapfile bs=1M count=1024
step2、创建要作为swap分区的文件格式化为交换分区文件:
mkswap /root/swapfile #建立swap的文件系统
step3、创建要作为swap分区的文件启用交换分区文件:
swapon /root/swapfile #启用swap文件
step4、创建要作为swap分区的文件使系统开机时自启用,在文件/etc/fstab中添加一行:
/root/swapfile swap swap defaults 0 0

问题69、ssh限制ip

限制 ssh 连接的 IP 地址
/etc/hosts.deny
sshd:(all/ip):deny #禁止某个ip/all连接服务器

问题70、tcpdump抓包 https://www.cnblogs.com/chenpingzhao/p/9108570.html

tcpdump是一个用于截取网络分组,并输出分组内容的工具。凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具
1、默认启动
tcpdump -vv 普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包
2、过滤主机
tcpdump -i eth1 host 192.168.1.1 抓取所有经过eth1,目的或源地址是192.168.1.1的网络数据
tcpdump -i eth1 src host 192.168.1.1 抓取所有经过eth1,指定源地址是192.168.1.1的网络数据
tcpdump -i eth1 dst host 192.168.1.1 抓取所有经过eth1,指定目的地址是192.168.1.1的网络数据
3、过滤端口
tcpdump -i eth1 port 25 抓取所有经过eth1,目的或源端口是25的网络数据
tcpdump -i eth1 src port 25 抓取所有经过eth1,指定源端口25
tcpdump -i eth1 dst port 25 抓取所有经过eth1,指定目的端口25
4、网络过滤
tcpdump -i eth1 net 192.168
tcpdump -i eth1 src net 192.168
tcpdump -i eth1 dst net 192.168
5、协议过滤
tcpdump -i eth1 arp
tcpdump -i eth1 ip
tcpdump -i eth1 tcp
tcpdump -i eth1 udp
tcpdump -i eth1 icmp
6、常用表达式
非 : ! or “not” (去掉双引号)
且 : && or “and”
或 : || or “or”
tcpdump -i eth1 ‘((tcp) and (port 80) and ((dst host 192.168.1.254) or (dst host 192.168.1.200)))’ 抓取所有经过eth1,目的地址是192.168.1.254或192.168.1.200端口是80的TCP数
tcpdump -i eth1 ‘((icmp) and ((ether dst host 00:0c:29:0e:3e:98)))’ 抓取所有经过eth1,目标MAC地址是00:0c:29:0e:3e:98的ICMP数据,ether MAC地址的前缀名;下面两种写法也可以
tcpdump -i eth1 ‘((icmp) and (ether dst host 00:0c:29:0e:3e:98))’
tcpdump -i eth1 ‘(icmp and (ether dst host 00:0c:29:0e:3e:98))’
tcpdump -i eth1 ‘((tcp) and ((dst net 192.168) and (not dst host 192.168.1.200)))’ 抓取所有经过eth1,目的网络是192.168,但目的主机不是192.168.1.200的TCP数据

问题70、lvm扩容后,刷新磁盘有异常报错resize2fs
resize2fs: Bad magic number in super-block while trying to open /dev/centos/root Couldn’t find valid filesystem superblock
检查 /dev/centos/root 文件系统,发现是xfs,如下;
#mount |grep root
/dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,noquota)
xfs的文件系统重新定义大小用如下命令:
xfs_growfs /dev/mapper/centos-root
重新进行df -h查看挂载点,发现大小已经更改

问题71、redis、kafka、zookeeper集群命令

redis集群命令 参考链接:https://blog.csdn.net/hguisu/article/details/82979050
redis可视化工具:Another.Redis.Desktop.Manager.1.2.5.exe
登录时只需要输入主机名(Host),端口号(Port);密码(Auth)和数据库名(Name)根据需要即可
https://github-production-release-asset-2e65be.s3.amazonaws.com/164574693/ae472800-bafa-11e9-891e-c2a9d75bb226?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20191028%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20191028T035514Z&X-Amz-Expires=300&X-Amz-Signature=d33bac8e00d280dfbd9d8fc6d108434c8db925b858f65da6baba2ddf4b766f6c&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3DAnother.Redis.Desktop.Manager.1.2.5.exe&response-content-type=application%2Foctet-stream

/u01/isi/application/component/redis-4.0.6/src
1、查看集群
CLUSTER INFO 打印集群的信息
CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。
./redis-cli -c -p 6379 cluster nodes
./redis-cli -c -p 6379 cluster info
或者
./redis-trib.rb info 192.168.16.8:7101
./redis-trib.rb check 192.168.16.8:7101
2、节点(node) 命令
1、加入节点:将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
1)CLUSTER MEET
2)redis-trib.rb add-node 10.25.157.78:7022
例如:新增节点:10.80.82.74:7029
./redis-trib.rb add-node 10.80.82.74:7029 10.25.157.78:7022
2、移除节点:
1)、登陆集群任意节点:执行:CLUSTER FORGET <node_id>
2)、redis-trib.rb del-node <node_id>
例如
./redis-trib.rb del-node 10.80.82.74:7030 923e869b3fda8add429fb200ea00ce94bdbc84e6
CLUSTER FORGET 923e869b3fda8add429fb200ea00ce94bdbc84e6
3、设置主从节点:
CLUSTER REPLICATE <node_id> 将当前节点设置为 node_id 指定的节点的从节点。
4、节点数据备份到硬盘:
CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。
3、槽(slot命令
CLUSTER ADDSLOTS [slot …] 将一个或多个槽(slot)指派(assign)给当前节点。
CLUSTER DELSLOTS [slot …] 移除一个或多个槽对当前节点的指派。
CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
CLUSTER SETSLOT NODE <node_id> 将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。
CLUSTER SETSLOT MIGRATING <node_id> 将本节点的槽 slot 迁移到 node_id 指定的节点中。
CLUSTER SETSLOT IMPORTING <node_id> 从 node_id 指定的节点中导入槽 slot 到本节点。
CLUSTER SETSLOT STABLE 取消对槽 slot 的导入(import)或者迁移(migrate)。
4、键 (key) 命令
CLUSTER KEYSLOT 计算键 key 应该被放置在哪个槽上。
CLUSTER COUNTKEYSINSLOT 返回槽 slot 目前包含的键值对数量。
CLUSTER GETKEYSINSLOT 返回 count 个 slot 槽中的键。
5、redis cluster管理工具redis-trib.rb详解
redis-trib.rb是redis官方推出的管理redis集群的工具,集成在redis的源码src目录下,是基于redis提供的集群命令封装成简单、便捷、实用的操作工具。
可以通过redis-trib.rb的help信息,看下redis-trib.rb提供了哪些功能。可以看到redis-trib.rb具有以下功能:
1、create:创建集群
2、check:检查集群
3、info:查看集群信息
4、fix:修复集群
5、reshard:在线迁移slot
6、rebalance:平衡集群节点slot数量
7、add-node:将新节点加入集群
8、del-node:从集群中删除节点
9、set-timeout:设置集群节点间心跳连接的超时时间
10、call:在集群全部节点上执行命令
11、import:将外部redis数据导入集群


zk集群

zkCli.sh连接zookeeper
bin/zkCli.sh -server localhost:2181
1)查看当前节点列表
[zk: localhost:2181(CONNECTED) 1] ls /
[zookeeper]
2)创建节点
[zk: localhost:2181(CONNECTED) 2] create /test “test”
Created /test
[zk: localhost:2181(CONNECTED) 3] ls /
[zookeeper, test]
3)查看节点数据
[zk: localhost:2181(CONNECTED) 4] get /test
“test”
cZxid = 0x300000007
ctime = Thu Sep 24 05:54:51 PDT 2015
mZxid = 0x300000007
mtime = Thu Sep 24 05:54:51 PDT 2015
pZxid = 0x300000007
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0
4)设置节点数据
[zk: localhost:2181(CONNECTED) 7] set /test “111111”
cZxid = 0x300000007
ctime = Thu Sep 24 05:54:51 PDT 2015
mZxid = 0x300000008
mtime = Thu Sep 24 05:57:40 PDT 2015
pZxid = 0x300000007
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 8
numChildren = 0
[zk: localhost:2181(CONNECTED) 8] get /test
“111111”
cZxid = 0x300000007
ctime = Thu Sep 24 05:54:51 PDT 2015
mZxid = 0x300000008
mtime = Thu Sep 24 05:57:40 PDT 2015
pZxid = 0x300000007
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 8
numChildren = 0
5)删除节点
[zk: localhost:2181(CONNECTED) 9] delete /test
[zk: localhost:2181(CONNECTED) 10] ls /
[zookeeper]
查看连接到结点上所有的client信息,被选作leader还是follower
[root@rocket zookeeper-server1]# echo stat|nc 127.0.0.1 2181
Zookeeper version: 3.4.6-1569965, built on 02/20/2014 09:09 GMT
Clients:
/127.0.0.1:525470
/0:0:0:0:0:0:0:1:539131
Latency min/avg/max: 0/3/9
Received: 13
Sent: 12
Connections: 2
Outstanding: 0
Zxid: 0x300000005
Mode: leader
Node count: 4

测试是否启动了该Server,若回复imok表示已经启动
[root@rocket zookeeper-server1]# echo ruok|nc 127.0.0.1 2181
Imok
查看连接到服务器的所有客户端的会话信息
[root@rocket zookeeper-server1]# echo cons|nc 127.0.0.1 2181
/127.0.0.1:525520
/0:0:0:0:0:0:0:1:539131

问题72、linux 下 dirname $0 的作用

在命令行状态下单纯执行 dirname $0 是毫无意义的。只有在脚本中它返回当前路径的"."
SPARK_HOME="$(cd “dirname "$0"”/…; pwd)"
所以SPARK_HOME的路径相当于在命令行执行了一条命令 cd ./…;pwd

问题73、查看linux服务器上的僵尸进程

查询命令:ps -A -o stat,ppid,pid,cmd | grep -e ‘1
查看进程的启动命令:ls -la /proc/ppid
杀死僵尸进程:ps -A -o stat,ppid,pid,cmd | grep -e ‘2’ | awk ‘{print $2}’ | xargs kill -9

问题73、解决非root用户登录mysql出现ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/u01/mysql/mysql.sock’ (13)

解决办法:在/etc/my.cnf配置文件中将[client]和[mysqld]的socks文件放在/tmp/mysql.sock,然后重启mysql即可

问题74、linux统计ip连接数

netstat -tanlp |grep 141:3306 | awk ‘{print $5}’ | cut -d ‘:’ -f 4 |sort |uniq -c | sort -k 1 -n -r

都到这儿了,更多文章,详见个人微信公众号ALL In Linux,来扫一扫吧!
在这里插入图片描述


  1. Zz ↩︎

  2. Zz ↩︎

猜你喜欢

转载自blog.csdn.net/weixin_44729138/article/details/116047019