前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux系统运维问题解决(一)

Linux系统运维问题解决(一)

作者头像
全栈工程师修炼指南
发布2022-09-28 16:34:34
2.9K0
发布2022-09-28 16:34:34
举报

[TOC]

主要记录工作和学习中遇到的一些问题;

Q:挂载的目录进行卸载挂载繁忙,如:umount: /var: device is busy A:解决方法

fuser -m -v /dev/mapper/vg_zabbix-LogVol02
fuser -m –k /dev/mapper/vg_zabbix-LogVol02
#注:上面是使用kill直接杀掉挂载点上面的进程,建议使用daemon的方式停掉进程。
/etc/init.d/rsyslog stop 
fuser -m -v /dev/mapper/vg_zabbix-LogVol02
#停止上面显示的守护进程
[root@zabbix ~]# /etc/init.d/crond stop
root@zabbix ~]# /etc/init.d/auditd stop

#重新卸载
umount /dev/mapper/vg_zabbix-LogVol02

Q: CentOs6.x误卸载自带python和yum后的解决办法 A:解决方法:

Step1. 卸载python(以免有些同学没有卸载干净)
rpm -qa|grep python|xargs rpm -ev --allmatches --nodeps #强制删除已安装程序及其关联
whereis python|xargs rm -frv #删除所有残余文件 #xargs,允许你对输出执行其他某些命令

Step2. 卸载yum
rpm -qa|grep yum|xargs rpm -ev --allmatches --nodeps
rm -rf /etc/yum.repos.d/*
whereis yum|xargs rm -frv<br>

step3. 验证是否删除干净
whereis python 
whereis yum

Step4.重新安装python和yum
#在以下链接的镜像站中找到你系统对应版本的python rpm包,选择系统对应的位数,32位选i386,64位选择x86_64,进入Packages文件夹
http://vault.centos.org/
#进去之后你会看到很多rpm文件,下载如下文件:
python-2.6.6-66.el6_8.x86_64.rpm
python-devel-2.6.6-66.el6_8.x86_64.rpm
python-iniparse-0.3.1-2.1.el6.noarch.rpm
python-libs-2.6.6-66.el6_8.x86_64.rpm
python-pycurl-7.19.0-9.el6.x86_64.rpm
python-urlgrabber-3.9.1-11.el6.noarch.rpm
rpm-python-4.8.0-55.el6.x86_64.rpm
yum-3.2.29-81.el6.centos.noarch.rpm
yum-metadata-parser-1.1.2-16.el6.x86_64.rpm
yum-plugin-fastestmirror-1.1.30-40.el6.noarch.rpm

Step5.登录服务器,在你喜欢的地方建一个python文件夹,这里我local的src下
mkdir /usr/local/src/python
cd /usr/local/src/python
rz -be  #出现弹框,上传文件


Step6.#这里建议先安装 python-*的文件,再安装rpm-python-*的文件,最后安装yum-*的文件
rpm -ivh python-*
rpm -ivh rpm-python-*
rpm -ivh yum-*

#这里博主没有用rpm -ivh python-*命令安装是怕以防万一会漏掉,所以还是乖乖的输入全名安装,安装yum的时候同理
#rpm -ivh python-2.6.6-66.el6_8.x86_64.rpm python-devel-2.6.6-66.el6_8.x86_64.rpm python-iniparse-0.3.1-2.1.el6.noarch.rpm python-libs-2.6.6-66.el6_8.x86_64.rpm python-pycurl-7.19.0-9.el6.x86_64.rpm python-urlgrabber-3.9.1-11.el6.noarch.rpm


Step7.测试安装,测试有版本信息就成功了
yum --version
python -V

注意事项:

(1) 一定要选对应自己系统版本的文件,

(2) 当安装依赖包错误的时候进行一起安装即可(不知道谁与谁有依赖关系,就都一起安装就好了,亲测有效))

Q:Centos6.x安装/升级到python2.7 A:因为在linux机器上用yum安装的默认是2.6.6版本的想升级到2.7。 测试环境:CentOS release 6.10 (Final) 2.6.32-754.10.1.el6.i686 安装过程:

#安装相应的依赖
yum -y install gcc openssl-devel bzip2-devel

#下载最新Python 2.x 版本
cd /opt && wget https://www.python.org/ftp/python/2.7.16/Python-2.7.16.tgz
tar xvzf Python-2.7.15.tgz

#检测脚本中加上enable-optimizations优化,主要是在这个版本上能启用PGO优化,让Python在运行时能变得更快
make 加altinstall参数,避免覆盖原来安装在/usr/bin/python 的版本
cd Python-2.7.15
./configure --enable-optimizations
make && make altinstall

#安装是否成功
/usr/local/bin/python2.7 -V

#建立软连接,使系统默认python指向2.7版本
mv /usr/bin/python /usr/bin/python2.6.6    #这一步重要
ln -s /usr/local/bin/python2.7 /usr/bin/python


#直接用vi编辑/usr/bin/yum把头部的python换成2.6.6。
#ps:编辑前记得备份。
sed -i 's/python/python2.6.6/' /usr/bin/yum


#安装升级pip (因为2.7.16版本已经内建了ensurepip模块)
python -m ensurepip

pip -V
-->pip 9.0.3 from /usr/local/lib/python2.7/site-packages (python 2.7)

CentOS7 Failed to start LSB: Bring up/down networking 问题 虚拟机复制机器并且更改了网卡名称,服务器更换了主板之前配置的静态IP发现启动网卡出现异常

#在centos7系统下执行:
#显示有标题的错误信息。《Failed to start LSB: Bring up/down networking.》 原因是mac地址的问题
systemctl status network。


#解决方案如下:
1. 查看服务对应网卡最新的mac地址 命令:ip addr  下图 圈出来就是最新的mac地址
ip addr | grep "link/ether" | awk '{print $2}'

2. cd /etc/sysconfig/network-scripts/
#修改ifcfg-XXX文件了,只修改HWADDR就可以了。接下来执行service network restart 就正常了。
echo HWADDR=08:00:27:46:9b:14 >> ifcfg-eth0
echo HWADDR=08:00:27:36:63:b1 >> ifcfg-eth1
echo HWADDR=08:00:27:0b:01:7d >> ifcfg-eth2

3. #前提是上面得都不行得时候
systemctl enable NetworkManager-wait-online.service
systemctl stop NetworkManager
systemctl disable NetworkManager

##完美解决
[root@data2 ~]# service network restart
Restarting network (via systemctl):                        [  OK  ]
  1. 不小心执行 rm -rf该如何恢复? 在什么情况下,文件才是可恢复的? 答:有先决条件,就是在进程中被打开,在内存中被分配资源;

恢复原理: 在Linux系统中,每个运行中的程序都有一个宿主进程彼此隔离,以/proc/进程号来体现(Linux本质上就是一个文件系统) 比如:ls -l /proc/13067 查看进程PID为13067的进程信息;当程序运行时操作系统会专门开辟一块内存区域,提供给当前进程使用,对于依赖的文件,操作系统会发放一个文件描述符,以便读写文件; 当我们执行 rm -f 删除文件时,其实只是删除了文件的目录索引节点,对于文件系统不可见,但是对于打开它的进程依然可见,即仍然可以使用先前发放的文件描述符读写文件,正是利用这样的原理,所以我们可以使用I/O重定向的方式来恢复文件。

执行步骤:

#1.使用lsof查看打开该文件进程
#2.再使用cat /proc/进程号/fd/文件描述符 查看恢复数据
#3.最后使用I/O重定向的方式来恢复文件

常见模拟:

#1.误删除文件
> rm -f /root/selenium/Spider/MySql.Data.dll
> ll /root/selenium/Spider/MySql.Data.dll
ls: cannot access /root/selenium/Spider/MySql.Data.dll: No such file or directory

#2.恢复
yum install lsof -y  #没有的请自行安装
(1)、使用lsof命令查看当前是否有进程打开/root/selenium/Spider/MySql.Data.dll文件:
> lsof | grep /root/selenium/Spider/MySql.Data.dll
root 86r REG 253,1 702464 141324 /root/selenium/Spider/MySql.Data.dll

(2)、查看是否存在恢复数据:
/proc/13067/fd:进程操作的文件描述符目录。
86:文件描述符。
> cat /proc/13067/fd/86

(3)、使用I/O重定向恢复文件
> cat /proc/23778/fd/86 > /root/selenium/Spider/MySql.Data.dll
> ls -l /root/selenium/Spider/MySql.Data.dll
-rw-r--r-- 1 root root 702464 Feb 10 12:03 /root/selenium/Spider/MySql.Data.dll

补充方法:

#找到删除的文件的进程PID 
pid=25499

#获取进程映射地址
cat /proc/$pid/maps | awk '$6 !~ "^/" {split($1,addrs,"-"); print "dump memory mem_" addrs[1] "0x" addrs[1] " 0x" addrs[2] ;}END{print "quit"}' > gdb-commands

#dump地址中数据
gdb -p $pid -x gdb-commands

比如查找mysql参数信息, grep datadir ./mem_* 会显示所有包含datadir字符串二进制文件。
vim ./mem_7f18284af000 查找datadir如下,跟进程信息获取参数有部分重复
WeiyiGeek.
WeiyiGeek.

WeiyiGeek.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档