首页 > 代码库 > linux运维常用知识(6)

linux运维常用知识(6)

Linux系统相关几个命令使用

last查看用户成功登录信息

/var/log/wtmp 文件记录了用户成功登录的信息。使用last可以查看

lastb 查看用户不成功登录的信息

who 查看已登录的用户

w查看登录用户的活动


e2label 查看或更改分区卷标

e2label 命令可以用来查看或修改 ext2/ext3 分区的卷标。语法为:

e2label 设备 [新卷标]

下面的命令可以查看/dev/sda1 分区的卷标

[root@xingzheson /]# e2label /dev/sda1

sda1

如果需要将/dev/sda1 的卷标改为newlabel,那么可以使用如下命令:

[root@xingzheson /]# e2label /dev/sda1 newlabel

注意:执行e2label 命令需要root权限

 

dumpe2fs 显示文件系统信息

dumpe2fs 命令可以用来显示ext2/ext3 文件系统的信息


locate定位文件位置

#locate mkfs


做lnmp时安装PHP扩展memcache-2.2.5报以下错 

Cannot find config.m4. 

Make sure that you run ‘/usr/local/php/bin/phpize‘ in the top level source directory of the module

解决方法:

进入memcache-2.2.5的解压后的源码包,进入其中的ext目录(cd ext),执行 ./ext_skel --extname=sdomain,显示如下:

Creating directory sdomain

Creating basic files: config.m4 config.w32 .cvsignore sdomain.c php_sdomain.h CREDITS EXPERIMENTAL tests/001.phpt sdomain.php [done].

To use your new extension, you will have to execute the following steps:

1.  $ cd ..

2.  $ vi ext/sdomain/config.m4

3.  $ ./buildconf

4.  $ ./configure --[with|enable]-sdomain

5.  $ make

6.  $ ./php -f ext/sdomain/sdomain.php

7.  $ vi ext/sdomain/sdomain.c

8.  $ make

进入 cd sddomain。文件如下:

config.m4   CREDITS       php_sdomain.h  sdomain.php

config.w32  EXPERIMENTAL  sdomain.c      tests

修改config.m4文件

    dnl PHP_ARG_WITH(my_module, for my_module support,

  dnl Make sure that the comment is aligned:

  dnl [ --with-my_module       Include my_module support])

  修改成

  PHP_ARG_WITH(my_module, for my_module support,

  dnl Make sure that the comment is aligned:

    [ --with-my_module       Include my_module support])

  或者将

  dnl PHP_ARG_ENABLE(my_module, whether to enable my_module support,

  dnl Make sure that the comment is aligned:

  dnl [ --enable-my_module      Enable my_module support])

    修改成

  PHP_ARG_ENABLE(my_module, whether to enable my_module support,

  dnl Make sure that the comment is aligned:

    [ --enable-my_module      Enable my_module support])  ---其实就是将这部分的dnl去掉,在这个文件里dnl就是注释的意思,相当于我们PHP里面的#或// 另外把他中间的一句描术也去掉

修改sdomain.c文件

    修改其中的代码如下:

        function_entry my_module_functions[] = {

    PHP_FE(say_hello,    NULL) /* 添加这一行代码 */

    PHP_FE(confirm_my_module_compiled,   NULL) /* For testing, remove later. */

    {NULL, NULL, NULL}   /* Must be the last line in my_module_functions[] */

};

    在文件最后在添加以下代码:

       PHP_FUNCTION(say_hello)

{

    zend_printf("hello sdomain!");

}

修改php_sdomain.h文件

在PHP_FUNCTION(confirm_my_module_compiled ); /* For testing, remove later. */ 这行的下面添加一行:

PHP_FUNCTION(say_hello); /* For testing, remove later. */

在次进入memcache-2.2.5的源码包执行

[root@test memcache-2.2.5]# /usr/local/php/bin/phpize

Configuring for:

PHP Api Version:         20041225

Zend Module Api No:      20060613

Zend Extension Api No:   220060519

进行安装:

[root@test memcache-2.2.5]# ./configure --with-php-config=/usr/local/php/bin/php-config 

[root@test memcache-2.2.5]# make

[root@test memcache-2.2.5]# make install


Linux下多网卡时,辨别网卡ID与物理网卡的对应关系


ethtool 是用于查询及设置网卡参数的命令。

ethX是以太网卡的名称,Linux系统将检测到的第一块以太网卡命名为eth0, 第二块为eth1,…….。

使用概要:

ethtool ethx       //查询ethx网口基本设置,其中 x 是对应网卡的编号,如eth0、eth1等等

ethtool –h        //显示ethtool的命令帮助(help)

ethtool –i ethX    //查询ethX网口的相关信息 

ethtool –d ethX    //查询ethX网口注册性信息

ethtool –r ethX    //重置ethX网口到自适应模式

ethtool –S ethX    //查询ethX网口收发包统计

ethtool –s ethX [speed 10|100|1000] [duplex half|full]  [autoneg on|off]        //设置网口速率10/100/1000M、设置网口半/全双工、设置网口是否自协商

[root@DBSERVER51 ~]# ethtool -p eth0

此时会看到对应物理口一个灯在不停的闪烁,这就是我们在系统看到的那个叫eth0的网卡了,就是这么简单。


CentOS基本服务的解释如下

服务名称   功能    默认    建议    备注 

NetworkManager 用于自动连接网络 关闭 关闭 对服务器没用 

acpid 电源的开关等检测管理 开启 关闭 对服务器没用 

anacron 一种计划任务管理 开启 开启   

apmd 高级电源管理 开启 开启   

atd 在指定时间执行命令 开启 关闭 如果用crond,则可关闭它 

auditd   开启 自定 如果用selinux,需要开启它 

autofs 文件系统自动加载、卸载 开启 自定 只在需要时开启它,可以停止 

avahi-daemon 本地网络服务查找 开启 关闭 对服务器没用 

avahi-dnsconfd avahi DNS 关闭 关闭 对服务器没用 

bluetooth 蓝牙无线通信 开启 关闭 对服务器没用 

conman 控制台管理 关闭 关闭 没用 

spuspeed 调节cpu速度 开启 自定   

crond 计划任务管理 开启 开启 很有用,开启 

cups 通用unix打印服务 开启 关闭 对服务器没用 

dnsmasq dns cache 关闭 关闭 没用 

dund 蓝牙相关 关闭 关闭   

firstboot 系统安装后初始设定 开启 关闭   

gpm 控制台下的鼠标支持 开启 开启   

haldaemon 硬件信息收集服务 开启 开启   

hidd 蓝牙相关 开启 关闭   

ibmasm ibm硬件管理 关闭 关闭   

ip6tables ipv6防火墙 开启 关闭   

iptables ipv4防火墙 开启 关闭   

irda 红外线通信 关闭 关闭   

irqbalance cpu负载均衡 开启 自定 多核cup需要 

kudzu 硬件变动检测 开启 关闭 服务器无用 

lvm2-monitor lvm监视 开启 关闭 非集群无用 

mcstrans 在开启selinux时用于检查context 开启 关闭   

mdmonitor 软raid监视 开启 关闭   

mdmpd 软raid管理 关闭 关闭   

messagebus 负责在各个系统进程之间传递消息 开启 开启 如停用,haldaemon启动会失败 

microcode_ctl  cpu微码管理升级 开启 关闭   

multipathd   关闭 关闭   

netconsole   关闭 关闭   

netfs nfs相关 开启 关闭   

netplugd 网线热插拔监视 关闭 关闭   

network   开启 开启   

nfs 网络文件系统 关闭 关闭   

nfslock nfs相关 开启 关闭   

nscd name cache,应该与DNS相关 关闭 关闭   

oddjobd 与D-BUS相关 关闭 关闭   

pand 蓝牙相关 关闭 关闭   

pcscd pc/sc smart card daemon 开启 关闭   

portmap 使用NFS、NIS时的port map 开启 关闭   

psacct 负荷检测 关闭 关闭   

rawdevices raw 设备支持 开启 开启   

rdisc 自动检测路由器 关闭 关闭   

readahead_early   开启 开启   

readahead_later   关闭 关闭   

restorecond selinux相关 关闭 关闭   

rpcgssd NFS相关 开启 关闭   

rpcidmapd RPC name to UID/GID mapper 开启 关闭 NFS相关 

rpcsvcgssd NFS相关 关闭 关闭   

saslauthd sasl认证服务相关 关闭 关闭   

sendmail   开启 关闭   

smartd 硬盘自动检测守护进程 开启 开启   

sshd   开启 开启   

syslog 系统日志进程 开启 开启   

tcsd   关闭 关闭   

wpa_supplicant 无线认证相关 关闭 关闭   

xfs x windows相关 开启 关闭   

ypbind network information service客户端 关闭 关闭   

yum-updatesd yum自动升级 开启 关闭 对服务器开启比较危险


屏蔽nginx以及php,apache,tengine版本信息方法

使用curl看到我们的nginx服务器版本号。

yum -y install curl

[xxx@xxx ~]# curl -I www.addam.com
HTTP/1.1 200 OK
Server: nginx/1.1.5
Date: Fri, 18 Jul 2014 13:25:26 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/5.3.3
X-Pingback: http://www.addam.com/xmlrpc.php
Link: <http://www.addam.com/>; rel=shortlin

很直观的看到ningx的版本信息,从安全角度来说我们还是需要屏蔽掉nginx的版本信息。方法如下:
打开nginx.conf配置文件,在http{}段中添加如下内容

wKioL1PI13eQcZ7OAABOrCeOKvw929.jpg

屏蔽掉php的版本信息,直接编辑php.ini文件

expose_php = Off      #将这里的On改成Off即可

重启一下php-fpm,然后我们可以看一下还有没有php版本的信息。

apache版本信息隐藏

在Apache配置文件中添加ServerTokens ProductOnly

  1. #ServerTokens OS             # 注释掉改行

  2. Servertokens off             # 添加这行屏蔽apache版本信息    

  3. ServerSignature Off          # 添加这行屏蔽系统信息

tengine版本信息隐藏

在tengine配置文件中添加下面三项即可

  1. server_tag off;

  2. server_info off;

  3. server_tokens off;



使用iptables映射ftp端口方法

通过一台前端堡垒机使用iptables穿透端口的方法连接这台ftp,

前端堡垒机                     eth0:119.244.125.15         eth1:192.168.2.1 

内网服务器                     eth0:  192.168.2.16    ftp:21

要通过119.244.125.15访问到内网服务器的ftp服务

在堡垒服务器执行如下防操作

iptables -t nat -A PREROUTING -d 119.244.125.15 -p tcp -m tcp --dport 2260 -j DNAT --to-destination 192.168.2.16:21
iptables -t nat -A POSTROUTING -p tcp -s 192.168.2.16 --sport 20:21 -j SNAT --to 119.244.125.15
iptables -t nat -A POSTROUTING -p tcp -s 192.168.2.16 --sport 10021:10121 -j SNAT --to 119.244.125.15

vsftpd的配置主要是开启被动模式,添加如下几行内容

vi /etc/vsftpd.conf
pasv_enable=yes
pasv_min_port=10021
pasv_max_port=10121
max_per_ip=20

重启vsftpd服务,但是客户端还是无法访问ftp,报错信息如下:

  500 Illegal PORT command

经过翻阅资料,发现ftp跟一般的网络服务不一样,ftp分控制连接和数据连接,其用的端口不一致。需要加载两个模块

  ip_nat_ftp
   ip_conntrack_ftp

  使用如下命令,加载这两个模块:

/sbin/modprobe ip_conntrack_ftp ports=2121
/sbin/modprobe ip_nat_ftp ports=2121


web访问慢故障

1、查看系统基本性能:内存、cpu、磁盘

        free -m 查看内存 (内存没有问题)

        top 查看cpu负载情况(负载很低)

        df -h 查看磁盘   (磁盘只用了20%)

        因此可以判断,与系统基本性能无关   

2、查看tcp的状态

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

  TIME_WAIT 2671
        CLOSE_WAIT 10
        FIN_WAIT1 41
        FIN_WAIT2 2
        ESTABLISHED 25
        SYN_RECV 28
        CLOSING 53
        LAST_ACK 15

 综合起来看,虽然TIME_WAIT的值比较高,但是不至于导致网站访问非常慢,可以排除是这里除了问题

3、通过iftop查看网站所使用的带宽情况

    发现机器现在所使用的带宽远高于我们购买的带宽,因此判断问题出在这里,于是升级带宽,问题解决

4、这次故障主要用到的工具是iftop,iftop是linux下查看机器实时带宽流量的工具,怎么用就不说了,这里介绍一下界面说明,想具体了解可以去man iftop!

iftop界面相关说明

界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。

中间的<= =>这两个左右箭头,表示的是流量的方向。

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


CentOS5.5高负载下,网卡自动断开更新网卡驱动

在负载较高后网卡自动down掉。所以需要更新网卡驱动。
1、先确认当前驱动版本:
 modinfo bnx2  #或直接ethtool -i eth0 可以查看到固件版本
2、驱动下载
 http://zh-cn.broadcom.com/support/ethernet_nic/netxtremeii.php
 当前版本为:linux-7.2.20.zip
3、安装包选择
 unzip linux-7.2.20.zip #解压驱动程序其中已包括源代码及rpm包
 cd Server/Linux/Driver
 rpm -ivh netxtreme2-7.2.20-1.src.rpm #解压出包源码
    1:netxtreme2             ########################################### [100%]
 cd /usr/src/redhat/SPECS/
 rpmbuild -bb netxtreme2.spec #重建生产对应系统的rpm包
 cd /usr/src/redhat/RPMS/x86_64
 rpm -ivh netxtreme2-7.2.20-1.x86_64.rpm #安装网卡驱动

4、网卡驱动切换:
 modprobe bnx2
服务器使系统完成重新加载新网卡驱动
5、核实更新后当前驱动版本:
 modinfo bnx2 #或直接ethtool -i eth0 可以查看到固件版本
可能遇到的问题:环境需求:
yum -y install gcc mack kernel-headers kernel-devel


RPM包管理工具使用

mount /dev/cdrom /mnt
rpm --import /mnt/RPM-GPG-KEY-CentOS-6      ###在当前系统上导入包制作者的公钥;
rpm -qa gpg-pubkey*                         ###在当前系统上显示所有已导入GPG格式的公钥;
gpg-pubkey-c105b9de-4e0fd3a3
rpm -K /mnt/Packages/httpd-2.2.15-26.el6.centos.x86_64.rpm  #检验httpd-2.2.15-29.el6.centos.x86_64.rpm包的合法性和完整性;
httpd-2.2.15-26.el6.centos.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
重建rpm数据库
数据库目录:/var/lib/rpm
重建:
rpm --initdb:初始化          ##如果事先没有库,会新建一个;如果有,则不新建;
rpm --rebuilddb: 重建         ##直接重建,覆盖原有的数据库。


本文出自 “从心开始” 博客,请务必保留此出处http://hao360.blog.51cto.com/5820068/1499996

linux运维常用知识(6)