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 �Ch //显示ethtool的命令帮助(help)
ethtool �Ci ethX //查询ethX网口的相关信息
ethtool �Cd ethX //查询ethX网口注册性信息
ethtool �Cr ethX //重置ethX网口到自适应模式
ethtool �CS ethX //查询ethX网口收发包统计
ethtool �Cs 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{}段中添加如下内容
屏蔽掉php的版本信息,直接编辑php.ini文件
expose_php = Off
#将这里的On改成Off即可
重启一下php-fpm,然后我们可以看一下还有没有php版本的信息。
在Apache配置文件中添加ServerTokens ProductOnly
#ServerTokens OS # 注释掉改行
Servertokens off # 添加这行屏蔽apache版本信息
ServerSignature Off # 添加这行屏蔽系统信息
在tengine配置文件中添加下面三项即可
server_tag off;
server_info off;
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: 重建 ##直接重建,覆盖原有的数据库。
修改Linux终端命令行颜色
要修改linux终端命令行颜色,我们需要用到PS1,PS1是Linux终端用户的一个环境变量,用来说明命令行提示符的设置。在终端输入命令:#set,即可在输出中找到关于PS1的定义如下:
PS1='[\u@\h \W]\$ '
PS1的定义中个常用的参数的含义如下:
\d :#代表日期,格式为weekday month date,例如:"Mon Aug 1"
\H :#完整的主机名称
\h :#仅取主机的第一个名字
\t :#显示时间为24小时格式,如:HH:MM:SS
\T :#显示时间为12小时格式
\A :#显示时间为24小时格式:HH:MM
\u :#当前用户的账号名称
\v :#BASH的版本信息
\w :#完整的工作目录名称
\W :#利用basename取得工作目录名称,所以只会列出最后一个目录
\# :#下达的第几个命令
\$ :#提示字符,如果是root时,提示符为:# ,普通用户则为:$
由此,我们可知linux默认的命令行提示信息为:[当前用户的账号名称@主机的第一个名字 工作目录的最后一项]#
2.颜色的设置
在PS1中设置字符颜色的格式为:\[\e[F;Bm\],其中“F“为字体颜色,编号为30-37,“B”为背景颜色,编号为40-47。颜色表如下:
F B
30 40 黑色
31 41 红色
32 42 绿色
33 43 黄色
34 44 蓝色
35 45 紫红色
36 46 青蓝色
37 47 白色
根据颜色表,套用入字符颜色设置格式中,就可以对linux终端命令行颜色进行个性化设置了。比如要设置命令行的格式为绿字黑底,显示当前用户的账号名称、主机的第一个名字、完整的当前工作目录名称、24小时格式时间,就可以使用如下的命令:
#PS1='[\[\e[32;40m\]\u@\h \w \t]$ '
3.修改.bashrc文件
通过上面的设置只能改变当前终端的命令行格式,关闭这个终端,在重新打开的一个终端中命令行格式又会恢复到默认的形式。想要永久性的改变终端命令行格式,需要修改.bashrc文件。
使用命令:#cd /
#ls -l -a
就能看到.bashrc这个文件。使用命令
#gedit .bashrc
在.bashrc文件中加入
PS1='[\[\e[32;40m\]\u@\h \w \t]$ '
这条语句,然后保存,就可以永久性的改变终端命令行格式了。