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 ××× Client的Reason 442: Failed to Enable Virtual Adapter错误
Windows8下使用Cisco Systems ××× Client创建的Cisco IPSec ×××无法连接,提示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 ××× Adapter的值修改为Cisco Systems ××× Adapter
5.如果是x64(即64位)版本则将类似@oem8.inf,%CVirtA_Desc%;Cisco Systems ××× Adapter for 64-bit Windows的值修改为Cisco Systems ××× Adapter for 64-bit Windows
6.在Cisco Systems ××× Client中点击Connect按钮,成功连接.
Cisco ××× Client for linux 安装与使用
官网:软件下载地址:patch下载地址:
安装方法:
没有装过kernel的开发包的话,那么是时候需要升级一下你的kernel了(安装了kernel-devel的不需要做下面的操作)
yum -y install kernel kernel-devel
下载*** client
wget http://projects.tuxx-home.at/cisco***/clients/linux/4.8.02/***client-linux-x86_64-4.8.02.0030-k9.tar.gz
tar zxvf ***client-linux-x86_64-4.8.02.0030-k9.tar.gz
cd ***cliet
此时,根据你内核的版本,来决定是否需要打补丁~毕竟这个软件是非官方的,对于2.6.24以上的内核不是很支持~(打补丁的方法见最后)
如果你和我一样内核版本较低,不需要打补丁,则可以直接运行安装
安装开始会让你设置各项参数,之后安装结束,这里需要注意的是它将会读取你内核开发组件的路径,你要确保路径正确。
Directory where binaries will be installed [/usr/local/bin]#Automatically start the ××× service at boot time [yes]#In order to build the ××× kernel module, you must have thekernel headers for the version of the kernel you are running.#For RedHat 6.x users these files are installed in /usr/src/linux by defaultFor RedHat 7.x users these files are installed in /usr/src/linux-2.4 by defaultFor Suse 7.3 users these files are installed in /usr/src/linux-2.4.10.SuSE by default#Directory containing linux kernel source code []/usr/src/kernels/2.6.18-194.11.3.el5-i686#* Binaries will be installed in “/usr/local/bin”.* Modules will be installed in “/lib/modules/2.6.18-194.11.3.el5/Cisco×××”.* The ××× service will be started AUTOMATICALLY at boot time.* Kernel source from “/usr/src/kernels/2.6.18-348.4.1.el5-i686″ will be used to build the module.#Is the above correct [y]当一切安装结束之后:
连接×××的配置都在/etc/opt/cisco-***client/Profiles中,里面默认已经有一个叫做simple.pcf的模板文件,不过我们基本用不上。在其中加入一个新的配置 XXX.pcf (名字随意,主要是为了好识别这个***配置文件是连接哪的)。配置文件的内容参考使用win版××× client连接之后,安装目录中Profiles内的pcf文件,直接复制即可启动***client服务
/etc/init.d/***client_init start拨通*** (XXX为Profile目录下的自己定义的名字)
nohup ***client connect XXX > /dev/null &后续,打补丁的方法:
下载你需要的patch,然后进入解压后的目录,打补丁,安装。wget -q http://projects.tuxx-home.at/cisco***/patches/***client-linux-2.6.24-final.diffcd ***clientpatch <../***client-linux-2.6.24-final.diffpatching file GenDefs.hpatching file interceptor.c./***_install
监控利器:CactiEZ及无数据,无图像解决
CactiEZ中文版是最简单有效的Cacti中文解决方案,整合Spine,RRDTool和美化字体。
集成Thold,Monitor,Syslog,Weathermap,Realtime,Errorp_w_picpath,Mobile,Aggregate以及Apache,Squid,F5,Nginx,MySQL等模板。支持多种硬盘控制器和阵列卡,基于CentOS6,启动速度更快,支持EXT4文件系统,原生rsyslog更稳定。全中文页面,中文图形,支持邮件报警,支持声音报警,安装方便使用简单。
CactiEZ中文版10.1:
下载地址:32位:
64位:
CactiEZ还是有英文版的 http://cactiusers.org/ 这个网站去下载英文版。
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是专门的中文项目,更适合国人使用。
中文版地址:
几个常用的Linux主机性能监控脚本
1、查看主机网卡流量
#!/bin/bash#network#Mike.Xuwhile : ; dotime=‘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 2rx_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 2done
2、系统状况监控
#!/bin/sh#systemstat.sh#Mike.XuIP=192.168.1.227top -n 2| grep “Cpu” 》》。/temp/cpu.txtfree -m | grep “Mem” 》》 。/temp/mem.txtdf -k | grep “sda1” 》》 。/temp/drive_sda1.txt#df -k | grep sda2 》》 。/temp/drive_sda2.txtdf -k | grep “/mnt/storage_0” 》》 。/temp/mnt_storage_0.txtdf -k | grep “/mnt/storage_pic” 》》 。/temp/mnt_storage_pic.txttime=date +%m“。”%d“ ”%k“:”%Mconnect=netstat -na | grep “219.238.148.30:80” | wc -lecho “$time $connect” 》》 。/temp/connect_count.txt
3、监控主机的磁盘空间,当使用空间超过90%就通过发mail来发警告
#!/bin/bash#monitor available disk spaceSPACE=‘df | sed -n ’/ \ / $ / p‘ | gawk ’{print $5}‘ | sed ’s/%//‘if [ $SPACE -ge 90 ]then123456789@qq.comfi
4、 监控CPU和内存的使用情况
#!/bin/bash#script to capture system statisticsOUTFILE=/home/xu/capstats.csvDATE=’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.shDAT=”date +%Y%m%d“HOUR=”date +%H“DIR=”/home/oslog/host_${DAT}/${HOUR}“DELAY=60COUNT=60# whether the responsible directory existif ! test -d ${DIR}then/bin/mkdir -p ${DIR}fi# general checkexport 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来。覆盖,重启。故障依旧
删除 C:\WINDOWS\system32\spool\PRINTERS 目录下的所有文件;重启print spooler服务
开始->运行,输入regedit打开注册表编辑器
找到以下键值:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Spooler
选定Spooler这个文件夹,在右边窗口里找DependOnService这个键值
双击打开把数据改为RPCSS,确定后退出注册表编辑器,重启计算机。
删除注册表 \HKEY_LOCAL_MACHINE\SYSTEM\ControlSetoo1\Control\Print\Printers
目录下的所有打印机(注意不是目录一起删除)。
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
htpasswd用法
#使用-c选项会重新生成选项指定的文件[root@localhost conf]# htpasswd -c htpasswd.user aaaNew password:Re-type new password:Adding password for user aaa[root@localhost conf]# cat htpasswd.useraaa:Bb5sDJ18YXP..[root@localhost conf]# htpasswd -cb htpasswd.user bbb bbb 用户名和密码都是bbbAdding password for user bbb[root@localhost conf]# cat htpasswd.userbbb:jOmE6lLI7g45M
#添加用户推荐使用以下两种方式
[root@localhost conf]# htpasswd -n ccc >> htpasswd.userNew password:Re-type new password:[root@localhost conf]# cat htpasswd.userbbb:jOmE6lLI7g45Mccc:mAqD.htApgYNM
[root@localhost conf]# htpasswd -nb ddd ddd >> htpasswd.user[root@localhost conf]# cat htpasswd.userbbb:jOmE6lLI7g45Mccc:mAqD.htApgYNM空行ddd:uAb7o0aUwD5pg空行
linux防护ARP***
关键命令:
arping -U -I 发送包的网卡接口 -s 源ip 目的ip
实例:
假设你的eth0接口对应的ip为192.168.100.11,网关为192.168.100.2你就可以使用
arping -U -I eth0 -s 192.168.100.11 192.168.100.2
Linux系统用户root登录报错
输入root敲回车的时候出现如下提示:
Your account is locked.Maximum amount of failed attempts was reached.
在单用户模式下
pam_tally2 -u root (faillog -u root<查看/var/log/faillog内记录的登陆失败信息>)显示root用户登录失败记录的次数
pam_tally2 -u root -r (faillog -u root -r<重置/var/log/faillog内记录的登陆失败信息>)将登录错误数重置为0
然后重启(5级别模式下)输入用户名密码,提示Authontication failed.
继续单用户模式
authconfig --disableldap --update
顺便 vim /etc/pam.d/system-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth requeired pam_tally2.so deny=5 lock_time=30 even_deny_root root_unlock_time=30
auth required pam_env.so
将红色字体前面加个#所有问题都解决,系统用户可以正常登陆。
Mysql数据库出现many connection errors错误的解决
MySQL连接不上去,查看错误日志时报下列错误
ERROR:db_mysql:db_mysql_connect: driver error(1129): Host 'bj-opensips-x86v-app01.clvn.com.cn' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
登录数据库
[root@web ~]# mysql -u root -p
查看max_connect_errors参数的值
mysql> show variables like '%max_connect_errors%';
+--------------------+-------+| Variable_name | Value |+--------------------+-------+| max_connect_errors | 10 |+--------------------+-------+修改该参数的值
mysql> set global max_connect_errors=1000;
Query OK, 0 rows affected (0.00 sec)查看是否修改成功
mysql> show variables like '%max_connect_errors%';
+--------------------+-------+| Variable_name | Value |+--------------------+-------+| max_connect_errors | 1000 |+--------------------+-------+重新连接MySQL数据库成功。
限定其中一台主机上网
Ping这台主机的ip地址192.168.1.1
再在windows下运行命令nbtstst –a 192.168.1.1 (需要限制上网的客户端地址)
找到这人的mac地址,网关机执行命令
iptables –I INPUT –p tcp –mac –mac-source <该鸟人的mac地址> -j DROP
iptables –I FORWORD –p tcp –mac –mac-source <该鸟人的mac地址> -j DROP
重启防火墙服务。
解决dns***
登录思科5520防火墙
看看连接数
ASA5520#sh conn count
10782 in use,280001 most used
再看看什么连接最多
ASA5520#sh conn
UDP outside 192.41.162.30:53 inside 172.x.x.x:62234, idle 0:01:07, bytes 45, flags -
UDP outside 192.41.162.30:53 inside 172.x.x.x:59965, idle 0:01:07, bytes 44, flags -UDP outside 192.41.162.30:53 inside 172.x.x.x:52096, idle 0:01:07, bytes 42, flags -UDP outside 192.55.83.30:53 inside 172.x.x.x:64169, idle 0:00:14, bytes 95, flags -UDP outside 192.55.83.30:53 inside 172.x.x.x:57522, idle 0:01:08, bytes 42, flags -UDP outside 192.55.83.30:53 inside 172.x.x.x:53128, idle 0:01:11, bytes 41, flags -UDP outside 192.42.93.30:53 inside 172.x.x.x:51221, idle 0:01:12, bytes 46, flags -DNS服务器的连接数最多.说明有人在***我公司的DNS服务器。
先把DNS服务器对外的53端口屏蔽掉。
ASA5520#conf terminal
ASA5520(config)#no access-list pass-policy extended permit upd any host 211.151.x.x eq domain
打完这条命令,连接数立马降下来,然后趋于平常。
可在防火墙上定义可信IP列表,然后只让这些IP访问我公司的DNS。到网上去找全球的13台根域地址。
官网地址链接(
ASA5520(config)#object-group network dnsgroup
ASA5520(config)#network-object host 198.41.0.4
ASA5520(config)#network-object host 202.12.27.33(以上13台根域)
ASA5520(config)#network-object host 210.x.x.x(公司出口IP,作测试用)
ASA5520(config)#network-object host 202.96.209.5(上海dns)
ASA5520(config)#network-object host 202.106.0.20(北京dns)
ASA5520(config)#network-object host 202.96.128.86(广州dns)
ASA5520(config)#access-list pass-policy extended permit upd object-group dnsgroup host 211.151.x.x eq domain
放开全球根域及中国国内主要DNS访问我公司的DNS服务器。
Cisco 2960交换机排错
运维部一卡座网络端口,接了一台TP-LINK 16×××换机,突然有天,发现接在这个交换机上所有PC都不通了,简单检查了一下,发现此交换机进线口不亮灯(卡座口与TP-LINK交换机连接线),用测线仪测了下,发现8个灯亮,初步判断是弱电井的2960相应的端口被shutdown了,于是登录交换机查看端口,发现并没有administrator down,百思不得其解。
测线仪测出,8根线都是亮的,说明网线是没有问题的,端口又没被shutdown,说明没有被管理员关闭。
再登录交换机,show一下该端口情况,仔细一看,发现第一行后面的括号里有err-disabled信息,百度一下关键字“err-disabled”,得出解决办法。线路不通,物理指示灯灭,而测试仪显示8根线通,可show int status查下,通过该命令发现46口有err-disabled,理由是loopback。
在缺省配置下,思科交换机端口被置为err-disabled,IOS将不会试图万利接口,必须手工将它恢复,于是再输入命令errdisable recovery cause lookup,配置完这个命令后,查看端口情况,还是err-disabled,这是因为恢复时间需要300秒,输入sh errdisable recovery查看下,还需要多少时间才能恢复,从图上看,需要257秒。耐心等257秒后,该端口正常,TP-LINK交换机上的PC也正常。
问题反思。
这肯定是监控干的,在TP-LINK交换机上乱拉线,最后拉成环路了,思科交换机监控到环路,就把该端口置为错误端口,从而避免整个网络出现异常。当然思科交换机并不会自动去把有问题的端口置为环路,需要在每个端口下输入命令,控制广播风暴。