运维工作常见问题处理38-74(二)
本篇目錄鏈接
- 問題38、磁盤檢查和修復
- 問題39、查看uuid
- 問題40、用戶組
- 問題41、數據庫主從不同步問題
- 問題42、ping www.baidu.com 不通
- 問題43、linux上rar解壓
- 問題44、zabbix_agent安裝
- 問題45、date在shell中的日期
- 問題46、安裝python
- 問題47、docker建立軟連接
- 問題48、ENOSPC:System limit for number of file watchers reached
- 問題49、windows 磁盤分區命令
- 問題50、kvm虛擬機資源調整
- 問題51、查看linux本機的出口ip/公網ip/外網ip
- 問題52、make太慢了,加快編譯速度的方法 make -j
- 問題53、mysql配置文件自動生成器
- 問題54、linux添加路由策略
- 問題55、添加歷史命令使用者記錄(/etc/profile)
- 問題56、yum update遇到問題Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
- 問題57、MYSQL57密碼策略修改
- 問題58、常用yum源
- 問題59、linux安裝tv和向日葵
- 問題60、系統時鐘不同步,有時差
- 問題61、journalctl命令(/etc/systemd/journald.conf)
- 問題62、k8s之kubectl命令補全;docker命令補全
- 問題63、linux內核升級
- 問題64、設置內核參數
- 問題65、查看當前TCP連接
- 問題66、dell vostro 3668設置U盤啟動
- 問題67、php依賴問題https://blog.csdn.net/u011608531/article/details/50756112
- 問題68、創建交換分區
- 問題69、ssh限制ip
- 問題70、tcpdump抓包 https://www.cnblogs.com/chenpingzhao/p/9108570.html
- 問題71、redis、kafka、zookeeper集群命令
- 問題72、linux 下 `dirname $0` 的作用
- 問題73、查看linux服務器上的僵尸進程
- 問題73、解決非root用戶登錄mysql出現ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/u01/mysql/mysql.sock' (13)
- 問題74、linux統計ip連接數
問題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=(date?dyesterday"+TIME=(date -d yesterday "+%Y%m%d") --------- 20190720 TIME=(date?dyesterday"+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 dirpath/{dir_path}/dirp?ath/{PKG}
cd VS./configure??prefix={VS} ./configure --prefix=VS./configure??prefix={install_path}
make -j 4 && make install
[ KaTeX parse error: Expected 'EOF', got '&' at position 11: ? -eq 0 ] &?& echo "Python3…(which python3)"
echo “(whichpip3)"echo"(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,來掃一掃吧!
Zz ??
Zz ??
總結
以上是生活随笔為你收集整理的运维工作常见问题处理38-74(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vdbench和fio
- 下一篇: linux线程全解