1 缺少GCC环境
yum groupinstall "Development Tools"
yum -y install gcc gcc-c++ kernel-devel
yum -y install gcc gcc-c++ make
2 查看服务器型号
[[email protected] ~]# 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
理论上讲,这些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的数据包
[[email protected] 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的数据包。
[[email protected] ~]# 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
[[email protected] abcticcserver]# Write failed: Broken pipe
[[email protected] ~]#
问题现象
用 ssh 命令连接服务器之后,如果一段时间不操作,再次进入 Terminal 时会有一段时间没有响应,然后就出现错误提示:
Write failed: Broken pipe
只能重新用 ssh 命令进行连接。
解决方法
方法一:如果您有多台服务器,不想在每台服务器上设置,只需在客户端的 ~/.ssh/ 文件夹中添加 config 文件,并添加下面的配置:
ServerAliveInterval 60
方法二:如果您有多个人管理服务器,不想在每个客户端进行设置,只需在服务器的 /etc/ssh/sshd_config 中添加如下的配置:
ClientAliveInterval 60
方法三:如果您只想让当前的 ssh 保持连接,可以使用以下的命令:
$ ssh -o ServerAliveInterval=60 [email protected]
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 ‘[email protected] logs/access_log [email protected] /app/logs/access_log [email protected]‘ httpd.conf
[[email protected] /]# 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日志存放在此目录
删除日志依然不起左右,因为连接依然存在。
查看文件的占用情况
[[email protected] 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查看磁盘空间,发现没满,请问可能原因是什么?
[[email protected] 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=""
24 -bash-4.1$
用户的环境变量没了。
/etc/skel目录
用来存放新用户配置文件的目录,新创建的用户提供统一的,标准的,初始化用户环境。
由cat /etc/default/useradd 这个配置文件控制。
解决方法: cp /etc/skel/.bash* /home/yanghu/ 用户家目录
用户PS1=’[\[email protected]\h \W]\$’ 环境变量
此为用户进入系统 看到的目录 [[email protected] ~]#
由[[email protected] ~]# set | grep PS1
PS1=‘[\[email protected]\h \W]\$ ‘
\u 是用户 \h 第一个主机名 \w 目录 \n 换行 \$ 提示符
\A 显示时间 24小时 \t 显示时间12小时 \v bash版本信息
PS1=‘[\[email protected]\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‘ [email protected]
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
27 对2T磁盘分区
Parted与fdisk区别
支持gpt分区表,可以对大于2T的磁盘分区
分区直接生效,不需要使用命令写入磁盘,partprobe /dev/sdb
格式化挂载等和fdisk无区别
28 NFS 出现问题报错
1)客户端查找没有。
[[email protected] ~]# showmount -e 192.168.74.128
clnt_create: RPC: Program not registered
解决:
[[email protected] html]# /etc/init.d/nfs restart
2)客户端
[[email protected] ~]# showmount -e 192.168.74.128
clnt_create: RPC: Port mapper failure - Unable to receive: errno 111 (Connection refused)
解决:
[[email protected] html]# /etc/init.d/rpcbind start
[[email protected] html]# /etc/init.d/nfs restart
3)客户端
[[email protected] ~]# showmount -e 192.168.74.128
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
解决:
[[email protected] html]# /etc/init.d/iptables stop
4)服务端
[[email protected] 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)[[email protected] 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