创新路
我们一直在努力

运维工作中碰到的一些问题小结

1 缺少GCC环境

yum groupinstall “Development Tools”

yum -y install gcc gcc-c++ kernel-devel

yum -y install gcc gcc-c++ make

 

2 查看服务器型号

[root@hexudong ~]# dmidecode | grep “Product Name”

Product Name: VMware Virtual Platform

Product Name: 440BX Desktop Reference Platform

 

3 外网yum源地址

网易(163)yum源是国内******的yum源之一,无论是速度还是软件版本,都非常的不错,将yum源设置为163yum,可以提升软件包安装和更新的速度,同时避免一些常见软件版本无法找到。V9zz的云主机就将yum源设置为163的yum,具体设置方法如下:

1,进入yum源配置目录
cd /etc/yum.repos.d

2,备份系统自带的yum源
mv CentOS-Base.repo CentOS-Base.repo.bk
下载163网易的yum源:
wget http://mirrors.163.com/.help/CentOS-Base-163.repo

3,更新玩yum源后,执行下边命令更新yum配置,使操作立即生效
yum makecache

4,除了网易之外,国内还有其他不错的yum源,比如中科大和搜狐的,大家可以根据自己需求下载
中科大的yum源:
wget http://centos.ustc.edu.cn/CentOS-Base.repo
sohu的yum源
wget http://mirrors.sohu.com/help/CentOS-Base-sohu.repo

5,阿里云(个人推荐的)

阿里云开源镜像站 http://mirrors.aliyun.com/

$、备份

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

$、下载新的CentOS-Base.repo 到/etc/yum.repos.d/

CentOS 5

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo

CentOS 6

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

CentOS 7

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

$、之后运行yum makecache生成缓存

理论上讲,这些yum源redhat系统以及fedora也是可以用的,但是没有经过测试,需要的站长可以自己测试一下。

 

4 跳板机超时   这里不得不提到优化,请看 系统登陆基本优化文档即可得到答案

timed out waiting for input: auto-logout

超时等待输入:自动退出

 

5 僵尸进程处理

ps -ef | grep defunct

查看僵尸进程

ps -ef | grep defunct | grep -v grep | wc –l

统计僵尸进程

 

一般僵尸进程很难直接kill掉,不过您可以kill僵尸爸爸。父进程死后,僵尸进程成为”孤儿进程”,过继给1号进程init,init始终会负责清理僵尸进程.它产生的所有僵尸进程也跟着消失。

ps -e -o ppid,stat | grep Z | cut -d” ” -f2 | xargs kill -9

kill -HUP `ps -A -ostat,ppid | grep -e ’^[Zz]‘ | awk ’{print $2}’`

 

6 小软件的安装

yum install openssh-clients    scp

iftop 查看单一系统网卡流量

yum install flex byacc  libpcap ncurses ncurses-devel iftop

安装iftop

TX:发送流量
RX:接收流量
TOTAL:总流量
Cumm:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量

按p切换是否显示端口信息;

按T切换是否显示每个连接的总流量;

 

7 tcpdump使用方法

 

1、抓取包含10.10.10.122的数据包
# tcpdump -i eth0 -vnn host 10.10.10.122

2、抓取包含10.10.10.0/24网段的数据包
# tcpdump -i eth0 -vnn net 10.10.10.0/24

3、抓取包含端口22的数据包
# tcpdump -i eth0 -vnn port 22

4、抓取udp协议的数据包
# tcpdump -i eth0 -vnn  udp

5、抓取icmp协议的数据包
# tcpdump -i eth0 -vnn icmp

6、抓取arp协议的数据包
# tcpdump -i eth0 -vnn arp

7、抓取ip协议的数据包
# tcpdump -i eth0 -vnn ip

8、抓取源ip是10.10.10.122数据包。
# tcpdump -i eth0 -vnn src host 10.10.10.122

9、抓取目的ip是10.10.10.122数据包
# tcpdump -i eth0 -vnn dst host 10.10.10.122

10、抓取源端口是22的数据包
# tcpdump -i eth0 -vnn src port 22

11、抓取源ip是10.10.10.253且目的ip是22的数据包
# tcpdump -i eth0 -vnn src host 10.10.10.253 and dst port 22

12、抓取源ip是10.10.10.122或者包含端口是22的数据包
# tcpdump -i eth0 -vnn src host 10.10.10.122 or port 22

13、抓取源ip是10.10.10.122且端口不是22的数据包
[root@ ftp]# tcpdump -i eth0 -vnn src host 10.10.10.122 and not port 22
14、抓取源ip是10.10.10.2且目的端口是22,或源ip是10.10.10.65且目的端口是80的数据包。
# tcpdump -i eth0 -vnn \( src host 10.10.10.2 and dst port 22 \) or   \( src host 10.10.10.65 and dst port 80 \)

15、抓取源ip是10.10.10.59且目的端口是22,或源ip是10.10.10.68且目的端口是80的数据包。
[root@localhost ~]# tcpdump -i  eth0 -vnn ‘src host 10.10.10.59 and dst port 22’ or  ‘ src host 10.10.10.68 and dst port 80 ‘

16、把抓取的数据包记录存到/tmp/fill文件中,当抓取100个数据包后就退出程序。
# tcpdump –i eth0 -vnn -w  /tmp/fil1 -c 100

17、从/tmp/fill记录中读取tcp协议的数据包
# tcpdump –i eth0 -vnn -r  /tmp/fil1 tcp

18、从/tmp/fill记录中读取包含10.10.10.58的数据包
# tcpdump –i eth0 -vnn -r  /tmp/fil1 host  10.10.10.58

 

8 日志查看,宕机和开机记录

连接时间日志–由多个程序执行,把纪录写入到/var/log/wtmp和/var/run/utmp,login等程序更新wtmp和utmp文件,使系统管理员能够跟踪谁在何时登录到系统。

 

各种系统守护进程、用户程序和内核通过syslog(3)向文件/var/log/messages报告值得注意的事件

 

查看宕机和开机记录
grep halt   messages
grep reboot messages
grep shutdown messages

last
last | grep reboot
last | grep shutdown
vim /etc/logrotate.conf 日志控制配置

 

9 cacti监控网卡

cacti 监控linux 主机网卡

修改:  55行左右

view    systemview    included   .1

 

10 php-fpm进程查看,重启

php-fpm 关闭:

kill -INT `cat /usr/local/php/var/run/php-fpm.pid`

php-fpm 重启:

kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

查看php-fpm进程:

ps aux | grep -c php-fpm

查看php-fpm进程数:

ps aux | grep -c php-fpm | wc -l

 

11 ssh 遇到问题Write failed: Broken pipe

 

[root@WY-APP2 abcticcserver]# Write failed: Broken pipe
[root@localhost ~]#

 

问题现象

用 ssh 命令连接服务器之后,如果一段时间不操作,再次进入 Terminal 时会有一段时间没有响应,然后就出现错误提示:

Write failed: Broken pipe

只能重新用 ssh 命令进行连接。

解决方法

方法一:如果您有多台服务器,不想在每台服务器上设置,只需在客户端的 ~/.ssh/ 文件夹中添加 config 文件,并添加下面的配置:

ServerAliveInterval 60

方法二:如果您有多个人管理服务器,不想在每个客户端进行设置,只需在服务器的 /etc/ssh/sshd_config 中添加如下的配置:

ClientAliveInterval 60

方法三:如果您只想让当前的 ssh 保持连接,可以使用以下的命令:

$ ssh -o ServerAliveInterval=60 user@sshserver

 

12  Rz 上传文件太大,导致乱码。有的删不掉的文件

 

通过ls –I 查找inode

通过find ./ -inum 1843184 | xargs rm –f

删除掉乱码文件。 对应的号就是乱码文件的inode号。

总结:主要用到单个命令参数,平时积累

ls –i 直接查看文件的inode。

通过find  参数 –inum 对应的inode号进行删除。

find /etc/ -maxdepth 1 -type d ! -name “.”

 

13 F5日志,apache转发

LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\” \”%{Content-Length}i\” \”%{ecsid}C\”” combined

 

14 网络扫描nmap 实战

http://nmap.org

Nmap  扫描类型  选项 扫描目标

-P 指定扫描端口  -n 禁用反向DNS解析,加快速度

-sS,TCP SYN扫描(半开)

-sT,TCP 连接扫描(全开)

-sF,TCP FIN扫描

-sU,UDP扫描

-sP,ICMP扫描

-P0,跳过ping检测

检测192.168.4.0/24网段有哪些主机提供FTP服务

nmap -p 21 192.168.4.0/24

检测192.168.4.0/24网段有哪些存活主机

nmap -n -sP 192.168.4.0/24

cacti : 被控端要启用snmp服务,并对其相应配置

安装:

tar xf nmap-5.51.tgz

./configure

make && make install                 which namp

 

15 tcp/ip netstat -n 连接  TIME_WAIT 很大,网上找的方法

 

客户端与服务器端建立TCP/IP连接后关闭SOCKET后,服务器端连接的端口
状态为TIME_WAIT

如发现系统存在大量TIME_WAIT状态的连接,通过调整内核参数解决,
vim /etc/sysctl.conf
编辑文件,加入以下内容:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
然后执行 /sbin/sysctl -p 让参数生效。

也就是TCP/IP设计者本来是这么设计的
主要有两个原因
1。防止上一次连接中的包,迷路后重新出现,影响新连接
(经过2MSL,上一次连接中所有的重复包都会消失)
2。可靠的关闭TCP连接
在主动关闭方发送的***后一个 ack(fin) ,有可能丢失,这时被动方会重新发
fin, 如果这时主动方处于 CLOSED 状态 ,就会响应 rst 而不是 ack。所以
主动方要处于 TIME_WAIT 状态,而不能是 CLOSED 。

TIME_WAIT 并不会占用很大资源的,除非受到攻击。

 

老师推荐解决方法:

查看SOCKET状态:cat /proc/net/sockstat
TIME_WAIT状态的socket一般需要等到2msl时间后,socket才会被回收。
修改(添加)系统内核参数:/etc/sysctl.conf

#改系統默认的TIMEOUT时间
net.ipv4.tcp_fin_timeout=2

#启重用,允许将TIME-WAIT sockets重新用于新的TCP连接 默认为0表示关闭
net.ipv4.tcp_tw_reuse=1

#开启TCP连接中TIME-WAIT sockets的快速回收 默认为0 表示关闭
net.ipv4.tcp_tw_recycle=1

使新增参数生效:sysctl -p

 

统计TCP状态

netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’

awk -F “[ :]+” ‘/EST/ {print $6}’ netstat.log|sort|uniq -c|sort -rn -k1

一种是数组的方法,一种是考察sort

 

16  戴尔服务地址

http://support.ap.dell.com

 

17 命令访问慢,或没有成功运行排查工具

strace -f mount -o loop CentOS-6.4-x86_64-bin-DVD2.iso /mnt

 

18 weblogic报错

There are 1 nested errors:

 

java.lang.ClassCastException: com.octetstring.vde.backend.BackendRoot cannot be cast to com.octetstring.vde.backend.standard.BackendStandard

at weblogic.ldap.EmbeddedLDAP.start(EmbeddedLDAP.java:273)

at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)

at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)

at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)

 

root启动的,用root给普通用户文件权限,用普通用户再次启动。

 

 

19 web服务,磁盘满了

grep log httpd.conf

sed -i ‘s@CustomLog logs/access_log combined@CustomLog /app/logs/access_log combined@g’ httpd.conf

[root@hexudong /]# dd if=/dev/zero of=/dev/sdb bs=8K count=10

10+0 records in 记录了10+0的读入

10+0 records out 记录了10+0的写入

81920 bytes (82 kB) copied, 0.000709742 s, 115 MB/s

已复制

mkfs -t ext3 /dev/sdb 格式化

mount -o loop /dev/sdb /app/log/ 挂载

磁盘空间满了,web日志存放在此目录

删除日志依然不起左右,因为连接依然存在。

查看文件的占用情况

[root@hexudong log]# lsof | grep del

httpd 1386 root 7w REG 7,0 416 13 /app/log/abc.we360-error_log (deleted)

deleted在占用。

1 重启释放 重载不生效

2 清空文件,不删除

3 不要删当天的被进程占用的文件,删以前的

for n in `seq 1000`;do curl -s 127.0.0.1 >/dev/null;done

访问1千次

echo >abc.we360-access_log

>abc.we360-access_log

为何空间不释放?

Hardink 硬连接

进程占用这个文件

磁盘空余空间维护出现问题

 

20 突然断电

Lost+fount 垃圾的文件就会跑到这个里面来,重启的时候用fsak做检查发现inode不存在,删除。

进程还占着文件,这是断电了

Kernel没有机会回收文件所占用的磁盘空间了

磁盘空间可能仍被标记为“已用”

文件系统可能会不一致

死文件,谁也访问不到了,以及没有文件名指向这些空间了

需要fsck或其他机制回收空间

 

21 /var/log/messages 出现kernel: nf_conntrack: table full, dropping packet.什么问题?

上述结果会让业务访问很慢!
net.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120

 

22 No space left on device

如果向磁盘写入数据提示如下错误:No space left on device,通过df -h查看磁盘空间,发现没满,请问可能原因是什么?

[root@oldboy mnt]# touch {1..26113}
touch: cannot touch `26102′: No space left on device
touch: cannot touch `26103′: No space left on device

没有空间剩余了,在这个设备上。

Df –h 还有空间 df –I 满了。

企业邮件临时队列/var/spool/clientmquene 这里内容被大量小文件占满导致

C5.8 会装cendmail c6.6 默认没有sendmail. 改成postfix

 

23 解决邮件爆满

C5:

/var/spool/clientmqueue

C6:

/var/spool/postfix/maildrop/

1   >/dev/null 2>&2

2   cd /var/spool/postfix/maildrop; ls | xargs rm -rf;

3   vi /etc/crontab ;将‘MAILTO=root’替换成‘MAILTO=””,然后service crond restart即可。如不行crontab -e ******行增加MAILTO=””

wKiom1UeDovCjUsxAAQfve9OcNI926.jpg

 

24 -bash-4.1$

用户的环境变量没了。

/etc/skel目录

用来存放新用户配置文件的目录,新创建的用户提供统一的,标准的,初始化用户环境。

由cat /etc/default/useradd 这个配置文件控制。

解决方法: cp /etc/skel/.bash* /home/yanghu/ 用户家目录

用户PS1=’[\u@\h \W]\$’ 环境变量

此为用户进入系统 看到的目录 [root@svn ~]#

由[root@hexudong ~]# set | grep PS1

PS1='[\u@\h \W]\$ ‘

\u 是用户 \h ******个主机名 \w 目录 \n 换行 \$ 提示符

\A 显示时间 24小时 \t 显示时间12小时 \v bash版本信息

PS1='[\u@\h \w \A #\#]\$ ‘

 

25 crontab发送不出来环境变量问题

[root@localhost jiaoben]# cat static.sh

#!/bin/bash

export.UTF-8

cd /home/statics

WEIZHI=Stat_`date +%Y-%m-%d`.csv

if [ -f /home/statics/$WEIZHI  ];then

cat /home/statics/$WEIZHI | mail -s ‘AAAAA’ wangfeihuzxl@126.com

fi

 

26 网络连接出现了“too many open files”的错误

系统对打开的socket不能及时释放,于是调整一些系统运行时对TCP/IP的设置可能会解决此问题.只是可能,还没***终测试,但设置的方法倒值得一学,且对今后也会有用处.

缺省值:

tcp_fin_timeout 180
tcp_keepalive_time 7200
tcp_window_scaling 1
tcp_sack 1
tcp_timestamps 1

调整值:
******种方法:将下面的设置添加到/etc/sysctl.conf,然后重启网络(sysctl.conf是对内核参数的一些设置)

# Decrease the time default value for tcp_fin_timeout connection
net.ipv4.tcp_fin_timeout = 30
# Decrease the time default value for tcp_keepalive_time connection
net.ipv4.tcp_keepalive_time = 1800
# Turn off tcp_window_scaling
net.ipv4.tcp_window_scaling = 0
# Turn off the tcp_sack
net.ipv4.tcp_sack = 0
#Turn off tcp_timestamps
net.ipv4.tcp_timestamps = 0

第二种方法:向/etc/rc.local添加如下代码
echo “30”>/proc/sys/net/ipv4/tcp_fin_timeout
echo “1800”>/proc/sys/net/ipv4/tcp_keepalive_time
echo “0”>/proc/sys/net/ipv4/tcp_window_scaling
echo “0”>/proc/sys/net/ipv4/tcp_sack
echo “0”>/proc/sys/net/ipv4/tcp_timestamps
参考:通过调整Linux TCP参数提示服务器性能

 

27 对2T磁盘分区

Parted与fdisk区别

支持gpt分区表,可以对大于2T的磁盘分区

分区直接生效,不需要使用命令写入磁盘,partprobe /dev/sdb

格式化挂载等和fdisk无区别

28 NFS 出现问题报错

1)客户端查找没有。

[root@hexudong ~]# showmount -e 192.168.74.128

clnt_create: RPC: Program not registered

解决:

[root@hexudong html]# /etc/init.d/nfs restart

2)客户端

[root@hexudong ~]# showmount -e 192.168.74.128

clnt_create: RPC: Port mapper failure – Unable to receive: errno 111 (Connection refused)

解决:

[root@hexudong html]# /etc/init.d/rpcbind start

[root@hexudong html]# /etc/init.d/nfs restart

3)客户端

[root@hexudong ~]# showmount -e 192.168.74.128

clnt_create: RPC: Port mapper failure – Unable to receive: errno 113 (No route to host)

解决:

[root@hexudong html]# /etc/init.d/iptables stop

4)服务端

[root@hexudong html]# /etc/init.d/nfs restart

Shutting down NFS daemon:                                  [  OK  ]

Shutting down NFS mountd:                                  [  OK  ]

Shutting down NFS quotas:                                  [  OK  ]

Shutting down NFS services:                                [  OK  ]

Shutting down RPC idmapd:                                  [  OK  ]

Starting NFS services:  exportfs: Failed to stat /var/www/html/aaa: No such file or directory

没有这个目录

5)客户端提示 : Temporary failure in name resolution

服务端配置挂载地址不对。

6)[root@hexudong hexudong]# /bin/mount -t nfs 192.168.74.131:/data/w_shared /hexudong/b_w/

mount.nfs: rpc.statd is not running but is required for remote locking.

mount.nfs: Either use ‘-o nolock’ to keep locks local, or start statd.

mount.nfs: an incorrect mount option was specified

服务端没有目录

29  密钥创建,不用敲回车。

ssh-keygen  -t dsa -P ” -f ~/.ssh/id_dsa

客官点个赞呗! (1)
分享到:

评论 抢沙发

评论前必须登录!

天府云博 - 做有态度的开发&运维&设计学习分享平台!

联系我们百度云主机