首页 > 代码库 > Linux运维常用知识(4)

Linux运维常用知识(4)

linux命令无效-bash: ls: command not found

一次重启后开机,基本所有的命令都不可用,只有少数的命令可用

[root@centos-1 ~]# ll

-bash: ls: command not found

[root@centos-1 ~]# pwd

/root

[root@centos-1 ~]# shutdown -r now

-bash: shutdown: command not found

[root@centos-1 ~]# export $PATH

-bash: export: `/usr/java/jdk1.7.0_55/bin::/root/bin‘: not a valid identifier

[root@centos-1 ~]#

export $PATH,可能是PATH路径设置问题

1.先临时设置PATH

export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

修改配置文件,发现有代码错误,原来是配置JAVA路径的时候,PATH拼写出错

#vi /etc/profile

export JAVA_HOME=/usr/java/jdk1.7.0_55

export JAVA_BIN=/usr/java/jdk1.7.0_55/bin

export PATH=$JAVA_HOME/bin:$PAH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar

重启解决.


centos下mysql修改datadir和socket相关路径

有时候我们希望使用别的目录来代替mysql默认使用的/var/lib/mysql目录存储数据。

为了完成这个需求,我们需要几步来实现:

1,修改selinux为permissive或disable

2,将目录的权限修改为mysql用户所有和属组

3,修改/etc/my.cnf

将datadir和socket修改为你需要的路径

这步做完后,mysql-server就可以正常启动了,并且可以看到data文件和socket文件已经存入你指定的目录中。但是当你使


用本地mysql客户端连接服务端的时候,会发现系统依然提示你找不到“/var/lib/mysql/mysql.sock”这个sock文件,这时候


继续下一步

4,在/etc/my.cnf中添加一段

[client]

socket=[你指定的文件]

ok,这样重启mysql-server后就可以正常连接了。


使用mysql_secure_installation仍然会提示无法找到“/var/lib/mysql/mysql.sock”文件,打开

mysql_secure_installation命令脚本,它在/usr/bin目录下。

在make_config这个函数中添加一段

echo "socket=[你指定的文件,同上设置]" >>$config

保存文件后就可以正常使用了。



解决Windows8下Cisco Systems VPN Client的Reason 442: Failed to Enable Virtual Adapter错误

Windows8下使用Cisco Systems VPN Client创建的Cisco IPSec VPN无法连接,提示Reason 442: Failed to Enable Virtual Adapter,这个问题是Windows8特有的,不能用其他系统的解决方案解决此问题.下面给出解决方案.

1.打开注册表编辑器(需使用管理员权限)

2.找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CVirtA

选择名称为DisplayName的项,修改数值.

4.如果是x86(即32位)版本则将类似@oem8.inf,%CVirtA_Desc%;Cisco Systems VPN Adapter的值修改为Cisco Systems VPN Adapter

5.如果是x64(即64位)版本则将类似@oem8.inf,%CVirtA_Desc%;Cisco Systems VPN Adapter for 64-bit Windows的值修改为Cisco Systems VPN Adapter for 64-bit Windows

6.在Cisco Systems VPN Client中点击Connect按钮,成功连接.


监控利器:CactiEZ及无数据,无图像解决

    CactiEZ中文版是最简单有效的Cacti中文解决方案,整合Spine,RRDTool和美化字体。

集成Thold,Monitor,Syslog,Weathermap,Realtime,Errorimage,Mobile,Aggregate以及Apache,Squid,F5,Nginx,MySQL等模板。支持多种硬盘控制器和阵列卡,基于CentOS6,启动速度更快,支持EXT4文件系统,原生rsyslog更稳定。全中文页面,中文图形,支持邮件报警,支持声音报警,安装方便使用简单。

CactiEZ中文版10.1:

下载地址:32位: http://www.zhengfeng.net/CactiEZ-10.1-i386.torrent

         64位: http://www.zhengfeng.net/CactiEZ-10.1-x86_64.torrent

CactiEZ还是有英文版的  http://cactiusers.org/ 这个网站去下载英文版。

http://www.crazycen.com/linux/1164.html

cacti无图像或者无数据解决方法:

1.system utilities –>Rebuild poller cache 
2.系统时间不准确,重新设置时间 
3.图像没有生成,运行#/usr/bin/php /srv/www/htdocs/cacti/poller.php –force 
4.权限问题,修改权限#chmod 777 -R /srv/www/htdocs/cacti/rra 
5.数据库表有损坏,修复#mysqlcheck -ao cacti –auto-repair -uroot -p 
6.重启snmpd服务#service snmpd restart


Icinga 中文版

Icinga其实就是nagios的二次开发,他包括了nagios的所有功能,甚至可以直接把nagios的配置文件拿来用。icinga-cn是专门的中文项目,更适合国人使用。

中文版地址:http://icinga-cn.sourceforge.net/



几个常用的Linux主机性能监控脚本

1、查看主机网卡流量

#!/bin/bash
#network
#Mike.Xu
while : ; do
time=‘date +%m“-”%d“ ”%k“:”%M’
day=‘date +%m“-”%d’
rx_before=‘ifconfig eth0|sed -n “8”p|awk ’{print $2}‘|cut -c7-’
tx_before=‘ifconfig eth0|sed -n “8”p|awk ’{print $6}‘|cut -c7-’
sleep 2
rx_after=‘ifconfig eth0|sed -n “8”p|awk ’{print $2}‘|cut -c7-’
tx_after=‘ifconfig eth0|sed -n “8”p|awk ’{print $6}‘|cut -c7-’
rx_result=$[(rx_after-rx_before)/256]
tx_result=$[(tx_after-tx_before)/256]
echo “$time Now_In_Speed: ”$rx_result“kbps Now_OUt_Speed: ”$tx_result“kbps”
sleep 2
done

2、系统状况监控

#!/bin/sh
#systemstat.sh
#Mike.Xu
IP=192.168.1.227
top -n 2| grep “Cpu” 》》。/temp/cpu.txt
free -m | grep “Mem” 》》 。/temp/mem.txt
df -k | grep “sda1” 》》 。/temp/drive_sda1.txt
#df -k | grep sda2 》》 。/temp/drive_sda2.txt
df -k | grep “/mnt/storage_0” 》》 。/temp/mnt_storage_0.txt
df -k | grep “/mnt/storage_pic” 》》 。/temp/mnt_storage_pic.txt

time=
date +%m“。”%d“ ”%k“:”%M
connect=
netstat -na | grep “219.238.148.30:80” | wc -l
echo “$time $connect” 》》 。/temp/connect_count.txt

3、监控主机的磁盘空间,当使用空间超过90%就通过发mail来发警告

#!/bin/bash
#monitor available disk space
SPACE=‘df | sed -n ’/ \ / $ / p‘ | gawk ’{print $5}‘ | sed ’s/%//‘
if [ $SPACE -ge 90 ]
then
123456789@qq.com
fi

4、 监控CPU和内存的使用情况

#!/bin/bash
#script to capture system statistics
OUTFILE=/home/xu/capstats.csv
DATE=’date +%m/%d/%Y‘
TIME=’date +%k:%m:%s‘
TIMEOUT=’uptime‘
VMOUT=’vmstat 1 2‘
USERS=’echo $TIMEOUT | gawk ‘{print $4}’ ‘
LOAD=’echo $TIMEOUT | gawk ‘{print $9}’ | sed “s/,//‘ ’
FREE=‘echo $VMOUT | sed -n ’/[0-9]/p‘ | sed -n ’2p‘ | gawk ’{print $4} ‘ ’
IDLE=‘echo $VMOUT | sed -n ’/[0-9]/p‘ | sed -n ’2p‘ |gawk ’{print $15}‘ ’
echo ”$DATE,$TIME,$USERS,$LOAD,$FREE,$IDLE“ 》》 $OUTFILE

5、全方位监控主机

#!/bin/bash

# check_xu.sh

# 0 * * * * /home/check_xu.sh

DAT=”
date +%Y%m%d
“

HOUR=”
date +%H
“

DIR=”/home/oslog/host_${DAT}/${HOUR}“

DELAY=60

COUNT=60

# whether the responsible directory exist

if ! test -d ${DIR}

then

/bin/mkdir -p ${DIR}

fi

# general check

export TERM=linux

/usr/bin/top -b -d ${DELAY} -n ${COUNT} 》 ${DIR}/top_${DAT}.log 2》&1 &

# cpu check
/usr/bin/sar -u ${DELAY} ${COUNT} 》 ${DIR}/cpu_${DAT}.log 2》&1 &

#/usr/bin/mpstat -P 0 ${DELAY} ${COUNT} 》 ${DIR}/cpu_0_${DAT}.log 2》&1 &

#/usr/bin/mpstat -P 1 ${DELAY} ${COUNT} 》 ${DIR}/cpu_1_${DAT}.log 2》&1 &

# memory check
/usr/bin/vmstat ${DELAY} ${COUNT} 》 ${DIR}/vmstat_${DAT}.log 2》&1 &

# I/O check
/usr/bin/iostat ${DELAY} ${COUNT} 》 ${DIR}/iostat_${DAT}.log 2》&1 &

# network check
/usr/bin/sar -n DEV ${DELAY} ${COUNT} 》 ${DIR}/net_${DAT}.log 2》&1 &

#/usr/bin/sar -n EDEV ${DELAY} ${COUNT} 》 ${DIR}/net_edev_${DAT}.log 2》&1 &

放在crontab里每小时自动执行:

0 * * * * /home/check_xu.sh


这样会在/home/oslog/host_yyyymmdd/hh目录下生成各小时cpu、内存、网络,IO的统计数据。

如果某个时间段产生问题了,就可以去看对应的日志信息,看看当时的主机性能如何。


print spooler服务启动后,自动停止,服务死锁

怀疑非正常关机,造成“Print Spooler服务”启动文件“spoolsv.exe”损坏。从其他机子上拷了一个spoolsv.exe来。覆盖,重启。故障依旧

开始->运行,输入regedit打开注册表编辑器
找到以下键值:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Spooler
选定Spooler这个文件夹,在右边窗口里找DependOnService这个键值
双击打开把数据改为RPCSS,确定后退出注册表编辑器,重启计算机。


linux系统下的远程开机

1.服务器没有部署在本地,通常托管到IDC机房,而且服务器在机房中不止一台,其中一台被关闭时,则我们可以远程连接一台没有关机的服务器上,然后进行远程开机.


2.远程开机需要的软件:wakeonlan

yum install wol -y


3.如何进行远程开机?

先不要急着去关闭你的linux服务器,你首先要确定它是否支持远程开机?

1)登录到目标服务器,用ethtool这个命令打印出网卡的信息

[root@localhost lhd]# ethtool eth0

可以看到,ethtool 把网卡的信息全部列出,我们只关心其中的这两项:

  Supports Wake-on: pumbg

  Wake-on: d

如果 wake-on 一项值为 d,表示禁用wake on lan

值为 g,表示启用 wake on lan

因为此机器禁用了 wake on lan,所以用下面的命令来启用它:

[root@localhost lhd]# ethtool -s eth0 wol g

现在目标机器的网卡已经支持了远程开机,


下面我们得到它的本地MAC地址:

[root@localhost lhd]# ifconfig

eth0 Link encap:Ethernet HWaddr 00:03:0D:1D:1F:97

把HWaddr 00:03:0D:1D:1F:97这一项记录下来即可

现在你可以试着把目标机器关闭


2)开机

现在我们需要登录到已安装了wake on lan软件的机器上,在上面执行开机命令:

wol 00:03:0D:1D:1F:97

稍后就会发现,目标机器已开机可以登录了


wol的取值默认是d,含义是disable

修改后的值为g,含义是Wake on MagicPacket(tm)

当机器重启后,eth0的设置又会回复到Wake-on: d 状态,

3)这个问题怎么解决?

两个办法:第一个,也是我们的惯性思维;

把/sbin/ethtool -s eth0 wol g 这条命令附加到/etc/rc.local这个文件中,

则下次开机后会自动执行


第二个: 编辑/etc/sysconfig/network-scripts/ifcfg-eth0

(eth0网卡的配置文件),添加上一行:

ETHTOOL_OPTS=”wol g”


4,网络唤醒的局限性:

它只能在局域网中应用,而不能通过互联网运行,为什么?

因为机器关闭后,完全是靠网卡唤醒机器,此时的机器是关闭的,没有操作系统运行,

也就谈不上支持tcp/ip协议,当然也就不能通过互联网运行了.

也就是说:如果我们在某个局域网中只有一台机器,就不能使用此功能了.

我们必须能登录到局域网中的一台机器上,在此机器上运行 wake on lan 去唤醒目标机器

前提条件就是:目标机器和我们登录的机器在同一局域网中


5,还有一点:被远程开机的目标机器必须是插电的

下面简单介绍一下linux下的wakeonlan 的用法:

假设远程要唤醒的计算机IP:12.34.56.78,Mac地址:01:02:03:04:05:06

$ wakeonlan -i 12.34.56.78 01:02:03:04:05:06

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