工作中碰到的问题

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

参考:通过调整Linux TCP参数提示服务器性能

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

时间: 2024-11-12 11:39:02

工作中碰到的问题的相关文章

工作中碰到uploadify插件两个版本:HTML5和Flash

最近工作中碰到上传文件插件使用问题:在工作中碰到app嵌套html5页面中使用上传文件问题,因为之前使用的是stream上传插件(http://www.twinkling.cn/),但是该插件跨域传输出现问题,无法传输成功,经过几次调试都无法解决跨域,然后我就换了个插件uploadify,一开始用的flash版本,但是此版本不支持在app中使用,于是就想到了用html5版本的,感觉笨死了,这个问题整了时间有点长了,下面开始说html版本的使用 首先,页面代码: 后台代码: @SuppressWa

工作中碰到的一些问题以及解决方法

一.左中右布局,左边定宽,中.右百分比的布局: (1)HTML代码: <div class="three-left"> </div> <div class="three-right-container"> <div class="three-mid"> </div> <div class="three-right"> </div> </d

工作中碰到的一个问题(cookie相关)

今天上线了一个API,6台机器做的集群.API的第一步是读取cookie,判断用户是否登录. 例如,线上服务器分别是 10.255.242.1 10.255.242.2 10.255.242.3 10.255.242.4 10.255.242.5 10.255.242.6, API地址是  mlservice.taobao.com(随便举得一个例子),api的第一步是取COOKIE,判断用户是否登录,调用方式为mlservice.taobao.com?test_id=12 完成上线之后,我总是要

工程师如何在工作中提升自己?(公众号)

工程师如何在工作中提升自己? 2018-04-21 刘丁 程序人生 点击上方“程序人生”,选择“置顶公众号” 第一时间关注程序猿(媛)身边的故事 引言 古人云:“活到老,学到老.”互联网算是最辛苦的行业之一,“加班”对工程师来说已是“家常便饭”,同时互联网技术又日新月异,很多工程师都疲于应付,叫苦不堪.以至于长期以来流传一个很广的误解:35岁是程序员工作的终点. 如何在繁忙的工作中做好技术积累,构建个人核心竞争力,相信是很多工程师同行都在思考的问题.本文是我自己的一些总结,试图从三个方面来解答:

记录一些工作学习中碰到的API,小技巧

平时学习中碰到过一些很有意思的代码写法.记录下来,提升下Level.当然由于我是个新手,可能有少见多怪之嫌. 使用Pattern类  匹配正则表达式规则 int num = 1; String REG = "[0-9]+";//填入需要的正则表达式规则Pattern pattern = Pattern.compile(REG); boolean YN=pattern.matcher(String.valueOf(num)).matches(); System.out.println(Y

工作中请注意的十点

第一:不要认为停留在心灵的舒适区域内是可以原谅的. 每 个人都有一个舒适区域,在这个区域内是很自我的,不愿意被打扰,不愿意被push,不愿意和陌生的面孔交谈,不愿意被人指责,不愿意按照规定的时限做事, 不愿意主动的去关心别人,不愿意去思考别人还有什么没有想到.这在学生时代是很容易被理解的,有时候这样的同学还跟“冷酷”“个性”这些字眼沾边,算作是褒义.然而相反,在工作之后,你要极力改变这一现状.否则,你会很快变成鸡尾酒会上唯一没有人理睬的对象,或是很快因为压力而内分泌失调.但是,如果你能 很快打破

关于这周工作中遇到的关于缓存问题的记录

序:本周在工作中遇到了一些麻烦,解决过程比较曲折和辛苦,特此记录,留作经验供以后参考 发现问题:周一上班的时候,运营打电话来说,我们上个月做的一个活动感觉数据不对,商家过来投诉了.结果我数据库一查,数据还真有问题!这次的活动采用的是页面上使用缓存系统显示活动数值(总金额),同时在后台记录详细的每条活动数据的办法.每次用户发生业务行为的时候都会在后台的缓存的总金额上增加,同时记录这次行为发生的金额数.结果我周一把数据库的记录加一起来一算,发现和页面上缓存的总金额竟然差了将近一半! 解决的过程: 1

工作中的知与行

工作的第七年了.纪念. 最近一个入职没多久的小朋友(A)很郁闷,说是领导(L1吧)要做一个东西,L1自己没有什么好的想法,但是又极力反对A的想法,还说A不好好干,但A又要完成L1领导L2的需求,L1又觉得L2的需求其实不重要,至少L1不认同.....所以A跟我吐槽.我想起以前一个师兄给我讲过上善若水的理解,就煞有介事的跟A童鞋讲,这其实只是工作,没有必要那么愤怒,善变,学到东西即可.开导别人其实很容易,开导自己就难多了. 其实,我也碰到类似的事情:在某次会议上说兄弟组的产品做的不够好得罪了兄弟组

工作中关于rpm的一个简单但头疼的问题

工作中关于rpm的一个简单但头疼的问题: 公司有个需要自动化更新rpm包的需求,rpm包名是:tingyun-agent-php-1.0.5-1.x86_64,本来是一个很简单的东西,一行代码就可以实现: for a in `rpm-aq|grep tingyun`;do rpm -e $a;done 但是结果是: [[email protected] scripts]# for a in`rpm -aq|grep tingyun`;do rpm -e $a;done error: packag