linux运维常用知识(6)

Linux系统相关几个命令使用

last查看用户成功登录信息

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

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

who 查看已登录的用户

w查看登录用户的活动

e2label 查看或更改分区卷标

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

e2label 设备 [新卷标]

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

[[email protected] /]# e2label /dev/sda1

sda1

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

[[email protected] /]# 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的源码包执行

[[email protected] 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

进行安装:

[[email protected] memcache-2.2.5]# ./configure --with-php-config=/usr/local/php/bin/php-config

[[email protected] memcache-2.2.5]# make

[[email protected] 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、设置网口半/全双工、设置网口是否自协商

[[email protected] ~]# 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

[[email protected] ~]# 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{}段中添加如下内容

屏蔽掉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: 重建         ##直接重建,覆盖原有的数据库。
时间: 2024-08-09 14:44:30

linux运维常用知识(6)的相关文章

Linux运维常用知识(4)

linux命令无效-bash: ls: command not found 一次重启后开机,基本所有的命令都不可用,只有少数的命令可用 [[email protected] ~]# ll -bash: ls: command not found [[email protected] ~]# pwd /root [[email protected] ~]# shutdown -r now -bash: shutdown: command not found [[email protected] ~

Linux 运维常用知识命令(干货)

------------ #### @ vim 编辑快捷键 `ctrl + n` 是自动补齐 `ctrl + p` 是往上选择 `ctrl + f` 是下一屏幕 `ctrl + b ` 是上一屏幕 `w`:是移动一个单词 `b`:是向前一个单词 `d^`:当前行中,删至行首 `d$`:当前行中,删至行尾 `y^ `:当前到行头的内容 `y$` :复制当前到行尾的内容 `d1G`:删除光标所在行,到第一行的所有数据 `dG`::删除光标所在行下一行,到最后一行的所有数据 ------------#

Linux运维常用命令

Linux运维常用的150个命令 命令 功能说明 线上查询及帮助命令(2个) man 查看命令帮助,命令的词典,更复杂的还有info,但不常用. help 查看Linux内置命令的帮助,比如cd命令. 文件和目录操作命令(18个) ls 全拼list,功能是列出目录的内容及其内容属性信息. cd 全拼change directory,功能是从当前工作目录切换到指定的工作目录. cp 全拼copy,其功能为复制文件或目录. find 查找的意思,用于查找目录及目录下的文件. mkdir 全拼mak

[Linux运维]常用场景模拟 -- cpu使用率模拟

[Linux运维]常用场景模拟 -- cpu使用率模拟 from http://www.cnblogs.com/zk47/p/4771105.html 1 单个核 100%: 代码 kill_cpu.c #include <stdlib.h> int main() { while(1); return 0; } 运行 $ gcc -o out kill_cpu.c $ ./out 看top的结果: $ top top - 15:44:08 up 207 days, 21:29, 2 users

Linux运维常用技术论坛博客网站

Linux运维常用技术论坛博客网站Linux中国开源社区: https://linux.cn/Infoq: https://www.infoq.cn/51CTO: http://www.51cto.com/掘金: https://juejin.im/CSDN: https://www.csdn.net/运维派: http://www.yunweipai.com/开源中国: https://www.oschina.net/ 原文地址:https://blog.51cto.com/13293070/

linux运维基础知识-CentOS7系统安装配置及健康检查

linux运维基础知识 1.完成一台CentOS7.X操作系统安装,分区并配置逻辑卷:2.完成LVM分区扩容20GB存储:3.检查系统CPU/内存/网络/存储性能检查:4.检查操作系统版本:5.检查系统是否有非法账号:6.检查系统日志是否有相关报错:7.检查系统后台是否有非法应用运行: 一:系统安装及配置LVM逻辑卷 1:系统安装(略) 2:分区及配置逻辑卷 LVM简介:逻辑卷管理器(LogicalVolumeManager)本质上是一个虚拟设备驱动,是在内核中块设备和物理设备之间添加的一个新的

[转帖] Linux运维基础知识学习内容

原作者地址:https://www.cnblogs.com/chenshoubiao/p/4793487.html 最近在学习 linux  对简单的命令有所掌握 但是 复杂的脚本 shell python 还是没有掌握 这一点需要继续学习... 很多东西仅仅是学会了搭建  非常不够 运维监控的内容会的非常少. Linux系统如果是学习可以选用Redhat或CentOS,特别是CentOS在企业中用得最多,当然还会有其它版本的,但学习者还是以这2个版本学习就行,因为这两个版本都是兄弟,没区别的,

linux运维常用命令汇总

一.线上查询及帮助命令 1.man:查看命令帮助 2.help:查看linux内置命令的帮助 二.文件和目录操作命令: 1.pwd:查看当前目录 2.cd:切换目录 3.tree:以树形结构显示目录下内容 4.mkdir:创建目录 5.touch:创建空文件或改变文件的时间戳属性 6.ls:显示目录下的内容及相关属性信息 7.cp:复制文件或目录 8.mv:移动或重命名文件 9.rm:删除文件或目录 10.rmdir:删除空目录 11.ln:硬链接或软链接 12.readlink:查看符号链接文

Linux运维常用的 MySQL基础命令

MySQL基础命令 ------------- 创建MySQL库,授权. >create database mysqldb character set utf8; >grant all privileges on mysqldb.* to 'mysqluser'@'localhost' identified by 'mysqlpasswd'; >flush privileges; 创建了mysqldb数据库,创建mysqluser用户,并授权mysqldb的所有权限.__________