2013年3月28日星期四

YUM常用命令介绍


1.列出所有可更新的软件清单
命令:yum check-update
2.安装所有更新软件
命令:yum update
3.仅安装指定的软件
命令:yum install <package_name>
4.仅更新指定的软件
命令:yum update <package_name>
5.列出所有可安裝的软件清单
命令:yum list
用YUM安装删除软件
装了系统添加删除软件是常事,yum同样可以胜任这一任务,只要软件是rpm安装的。
安装的命令是,yum install xxx,yum会查询数据库,有无这一软件包,如果有,则检查其依赖冲突关系,如果没有依赖冲突,那么最好,下载安装;如果有,则会给出提示,询问是否要同时安装依赖,或删除冲突的包,你可以自己作出判断。
删除的命令是,yum remove xxx,同安装一样,yum也会查询数据库,给出解决依赖关系的提示。 

1.用YUM安装软件包
命令:yum install <package_name>
2.用YUM删除软件包
命令:yum remove <package_name>
用YUM查询软件信息
我 们常会碰到这样的情况,想要安装一个软件,只知道它和某方面有关,但又不能确切知道它的名字。这时yum的查询功能就起作用了。你可以用 yum search keyword这样的命令来进行搜索,比如我们要则安装一个Instant Messenger,但又不知到底有哪些,这时不妨用 yum search messenger这样的指令进行搜索,yum会搜索所有可用rpm的描述,列出所有描述中和messeger有关的rpm包,于 是我们可能得到gaim,kopete等等,并从中选择。
有时我们还会碰到安装了一个包,但又不知道其用途,我们可以用yum info packagename这个指令来获取信息。 

1.使用YUM查找软件包
命令:yum search <keyword>
2.列出所有可安装的软件包
命令:yum list
3.列出所有可更新的软件包
命令:yum list updates
4.列出所有已安装的软件包
命令:yum list installed
5.列出所有已安装但不在 Yum Repository 內的软件包
命令:yum list extras
6.列出所指定的软件包
命令:yum list <package_name>
7.使用YUM获取软件包信息
命令:yum info <package_name>
8.列出所有软件包的信息
命令:yum info
9.列出所有可更新的软件包信息
命令:yum info updates
10.列出所有已安裝的软件包信息
命令:yum info installed
11.列出所有已安裝但不在 Yum Repository 內的软件包信息
命令:yum info extras
12.列出软件包提供哪些文件
命令:yum provides <package_name>
清除YUM缓存
yum 会把下载的软件包和header存储在cache中,而不会自动删除。如果我们觉得它们占用了磁盘空间,可以使用yum clean指令进行清除,更精确 的用法是yum clean headers清除header,yum clean packages清除下载的rpm包,yum clean all一 股脑儿端 

1.清除缓存目录(/var/cache/yum)下的软件包
命令:yum clean packages
2.清除缓存目录(/var/cache/yum)下的 headers
命令:yum clean headers
3.清除缓存目录(/var/cache/yum)下旧的 headers
命令:yum clean oldheaders
4.清除缓存目录(/var/cache/yum)下的软件包及旧的headers
命令:yum clean, yum clean all (= yum clean packages; yum clean oldheaders)

shell找出网卡名称

/sbin/ifconfig|grep -v "^[ |\t]"|grep -v '^$'|awk '{print $1;}'|grep -v 'lo'|grep -v ":"

总结了几种删除空行的技巧

sed  /^$/d  file

grep -v ^$ file

awk NF file

awk '!/^$/' file

grep . file

sed '/^\s*$/d'


 
 
 
 
 

实时查看Linux网卡流量Shell脚本

用法为watch -n 1 ./linuxidc.sh即可开始监看流量,按ctrl+c退出。

#!/bin/bash
eth=eth0
RXpre=$(ifconfig ${eth} | grep bytes | awk  '{print $2}'| awk -F":" '{print $2}')
TXpre=$(ifconfig ${eth} | grep bytes | awk '{print $6}' | awk -F":" '{print $2}')
sleep 1
RXnext=$(ifconfig ${eth} | grep bytes | awk  '{print $2}'| awk -F":" '{print $2}')
TXnext=$(ifconfig ${eth} | grep bytes | awk '{print $6}' | awk -F":" '{print $2}')
echo RX ----- TX
echo "$(((${RXnext}-${RXpre})/1024))KB/s   $(((${TXnext}-${TXpre})/1024))KB/s"

2013年3月24日星期日

如何快速创建 Xen 虚拟机镜像


两个步骤:1、创建一个空白文件镜像;2、然后把一个打包好的 Linux 系统模版拷贝过去。通常一个打包好的最小 Linux 系统只要200MB 左右,在高配置的服务器上拷贝基本能瞬间完成,比起拷贝整个虚拟机镜像文件(比如 10GB)要快得多。具体步骤:
1、创建一个磁盘镜像文件:

# dd if=/dev/zero of=test.img bs=1 count=1 seek=10G
2、格式化磁盘:

# mkfs.ext3 test.img
3、挂载刚刚创建的磁盘镜像文件:

# mount -o loop test.img /mnt
4、找个现有 Linux 的文件系统拷贝过去:

# tar -zxSf centos.tar.gz -C /mnt/
需要说明的是,这里的 centos.tar.gz 是提前制作好的,可以在一个干净的虚拟机上手动安装好一个最小的 CentOS 系统,然后配置和优化好,这样就是一个模板,以后如果创建新的 CentOS 虚拟机就可以从这个模板直接拷贝。
5、卸载 /mnt:

# umount mnt
6、创建一个交换分区:

# dd if=/dev/zero of=test-swap.img bs=1M count=256
7、创建和编辑一个 Xen 虚拟机的启动文件:

# vi /etc/xen/test.conf
name            = 'test'
vcpus           = 1
memory          = '256'
disk            = [ 'tap:aio:/home/vpsee/test.img,sda1,w',
'tap:aio:/home/vpsee/test-swap.img,sda2,w',
]
vif             = [ 'bridge=eth0' ]
root            = '/dev/sda1 ro'
on_reboot       = 'restart'
on_crash        = 'restart'
kernel          = "/boot/vmlinuz-2.6.18-194.32.1.el5xen"
ramdisk         = "/boot/initrd-2.6.18-194.32.1.el5xen.img"
8、启动 Xen 虚拟机:

# xm create test
如果把上面的步骤综合起来写在一个脚本里并配上 Xen Shell 控制面板就可以完成 VPS 客户自己快速重装系统的功能。如果把这个脚本加到客户的账单管理系统里(比如 WHMCS)就可以完成客户付款自动开通 VPS 的功能。不过我们的 VPS 不提供客户自助重装功能和自动开通功能,损失了一点方便性,但是换来了稳定和性能还是值得的。如果用 LVM, iSCSI 之类的存储方式的话原理也是一样的。

创建openvz镜像

tar cvpzfv centos.tar.gz --exclude=./centos.tar.gz --exclude=./lost+found --exclude=./var/spool/authdaemon/socket ./

apache2 模块优化


#LoadModule auth_basic_module modules/mod_auth_basic.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
#LoadModule authn_file_module modules/mod_authn_file.so
#LoadModule authn_alias_module modules/mod_authn_alias.so
#LoadModule authn_anon_module modules/mod_authn_anon.so
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
#LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
#LoadModule authz_user_module modules/mod_authz_user.so
#LoadModule authz_owner_module modules/mod_authz_owner.so
#LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
#LoadModule authz_default_module modules/mod_authz_default.so
#LoadModule ldap_module modules/mod_ldap.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
#LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule ext_filter_module modules/mod_ext_filter.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
#LoadModule usertrack_module modules/mod_usertrack.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
#LoadModule dav_module modules/mod_dav.so
#LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
#LoadModule info_module modules/mod_info.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
#LoadModule actions_module modules/mod_actions.so
LoadModule speling_module modules/mod_speling.so
#LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule cache_module modules/mod_cache.so
#LoadModule suexec_module modules/mod_suexec.so
#LoadModule disk_cache_module modules/mod_disk_cache.so
#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule mem_cache_module modules/mod_mem_cache.so
#LoadModule cgi_module modules/mod_cgi.so
#LoadModule version_module modules/mod_version.so

SetOutputFilter DEFLATE
    # Insert filter on selected content types only
    #AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript

    # Netscape 4.x has some problems...
    BrowserMatch ^Mozilla/4 gzip-only-text/html

    # Netscape 4.06-4.08 have some more problems
    BrowserMatch ^Mozilla/4\.0[678] no-gzip

    # MSIE masquerades as Netscape, but it is fine
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

    # Don't compress images
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary

    # Make sure proxies don't deliver the wrong content
    Header append Vary User-Agent env=!dont-vary

EnableMMAP On
EnableSendfile On

2013年3月23日星期六

查看linux版本方法

 lsb_release -a
cat /etc/issue 


以下方法适用于RedHat,CentOS


rpm -q centos-release



2013年3月17日星期日

[emerg] (28)No space left on device: Couldn't create accept lock

[emerg] (28)No space left on device: Couldn't create accept lock




原因:

(1) 确认是否是硬盘空间不足;结果发现不是空间的问题;
(2) 网上查看了下,发现是ipc不足。可以使用ipcs -s(|grep apache的group)



处理:

(1) 可以使用$ ipcrm -s <semid>清理指定 semaphore 

(2) 也可以使用下面命令,清理所有的semaphore, 注:替换nobody为apache对应的用户名

for semid in `ipcs -s | grep nobody | cut -f2 -d" "`;
do ipcrm -s $semid; done


IPC介绍:
IPC进程间通信(Inter-Process Communication)就是指多个进程之间相互通信,交换信息的方法。Linux IPC基本上都是从Unix平台上继承而来的。主要包括最初的Unix IPC,System V IPC以及基于Socket的IPC。另外,Linux也支持POSIX IPC。
IPC具体包含:(1)信号量,用来管理对共享资源的访问 (2)共享内存,用来高效地实现进程间的数据共享 (3)消息队列,用来实现进程间数据的传递。我们把这三种工具统称为System V IPC的对象,每个对象都具有一个唯一的IPC标识符(identifier)。要保证不同的进程能够获取同一个IPC对象,必须提供一个IPC关键字(IPC key),内核负责把IPC关键字转换成IPC标识符。   使用ipcs命令可以查看当前使用情况,使用ipcs -l查看系统配置参数。

删除windows 7 垃圾文件


@echo off

del /f /s /q %systemdrive%\*.tmp
del /f /s /q %systemdrive%\*._mp
del /f /s /q %systemdrive%\*.log
del /f /s /q %systemdrive%\*.gid
del /f /s /q %systemdrive%\*.chk
del /f /s /q %systemdrive%\*.old
del /f /s /q %systemdrive%\recycled\*.*
del /f /s /q %windir%\*.bak
del /f /s /q %windir%\prefetch\*.*
rd /s /q %windir%\temp & md %windir%\temp
#del /f /q %userprofile%\cookies\*.*
del /f /q %userprofile%\recent\*.*
del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*"
del /f /s /q "%userprofile%\Local Settings\Temp\*.*"
del /f /s /q "%userprofile%\recent\*.*"
dism /online /cleanup-image /spsuperseded
echo. & pause

修复indodb数据


1、恢复原数据库的配置文件:包括日志大小 文件路径等
2、在[mysqld]段中增加:innodb_force_recovery = 4
3、可以在另外地方建立新的数据库并用原表的结构创建表
4、将上一步中建立的.frm表文件拷贝到准备恢复的数据库中
5、启动数据库
6、停止数据库 注释掉innodb_force_recovery = 4项
7、重新启动数据库,应该可以用mysqldump导出数据了

2013年3月5日星期二

shell中的大于,小于,等于


对应的操作
整数操作
字符串操作
相同
-eq
=
不同
-ne
!=
大于
-gt
>
小于
-lt
<
大于或等于
-ge
小于或等于
-le
为空
-z
不为空
-n

2013年3月3日星期日

shell中获取本机ip地址


方法一:
/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"
or
/sbin/ifconfig|sed -n '/inet addr/s/^[^:]*:\([0-9.]\{7,15\}\) .*/\1/p'||grep -v 127.0.0.1

方法二: 
local_host="`hostname --fqdn`"
local_ip=`host $local_host 2>/dev/null | awk '{print $NF}'`

方法三:
local_host="`hostname --fqdn`"
nslookup -sil $local_host 2>/dev/null | grep Address: | sed '1d' | sed 's/Address://g'