运维相关
示云_好好生活
组长
2013-12-17 15:43:46
yum makecache就是把服务器的包信息下载到本地电脑缓存起来 配合yum -C search xxx使用 不用上网检索就能查找软件信息 执行完 yum makecache之后,你可以用 yum search subversion 和 yum -C search subversion 二者差别挺明显的,前者明显比后者慢。
-
示云_好好生活 组长 楼主 2013-12-17 22:09:49
PHP机理
PHP是一种纯解释型在服务端执行的可以内嵌HTML的脚本语言,尤其适合开发Web应用程序。 请求一个 PHP 脚本时,PHP 会读取该脚本,并将其编译为 Zend 操作码,这是要执行的代码的一种二进制表示形式。随后,此操作码由 PHP 执行并丢弃。 PHP脚本在每次被解释时进行初始化,在解释完毕后终止运行。这种运行是互相独立的,每一次请求都会创建一个单独的进程或线程,来解释相应的页面文件。页面创建的变量和其他对象,都只在当前的页面内部可见,无法跨越页面访问。在终止运行后,页面中申请的、没有被代码显式释放的外部资源,包括内存、数据库连接、文件句柄、Socket连接等,都会被强行释放。也就是说,PHP无法在语言级别上实现直接访问跨越页面的变量,也无法创建驻留内存的对象。 PHP这种独特的工作模型的优势在于,基本上解决了令人头疼的资源泄漏问题。Web应用的特点是大量的、短时间的并发处理,对各种资源的申请和释放工作非常频繁,很容易导致泄漏甚至崩溃。PHP的运行机制决定它不存在常规的崩溃问题(顶多连接超时脚本停止执行),可以说PHP是较稳定的Web应用。但是,这种机制的缺点也非常明显。最直接的后果是,PHP在语言级别无法实现跨页面的缓冲机制。这种缓冲机制缺失造成的影响,可以分成两个方面: 一是对象的缓冲。众所周知,很多设计模式都依赖于对象的缓冲机制,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源,对于需要频繁应付大量并发的服务端软件更是如此。因此,对象缓冲的缺失,理论上会极大地降低速度。应尽可能减少创建和销毁对象的次数来提高服务程序的效率,由于 PHP目前还不支持多线程,也就无法像Java一样通过线程池调度来弥补这一缺陷;但可以使用第三方软件如Memcachd来实现PHP的对象缓冲机制,达到减少对象创建和销毁的时间来提高服务程序的效率。Memcachd将PHP编译后的 操作码缓存并在内存中保存这个操作码,并在下一次调用该页面时重用它,这会节省很多时间。比较常用的缓存还有有 eAccelerator,另一种流行的 eAccelerator 替代工具是 Alternative PHP Cache(APC)。 二是数据库连接的缓冲。对于MySQL,PHP提供了一种内置的数据库缓冲机制,即用mysql_pconnect()代替mysql_connect() 来打开数据库而已。PHP会自动回收被废弃的数据库连接,以供重复使用。在实际应用中,这种持久性数据库连接往往会导致数据库连接的伪泄漏现象:在某个时间,并发的数据库连接过多,超过了MySQL的最大连接数,从而导致新的进程无法连接数据库。但是过一段时间,当并发数减少时,PHP会释放掉一些连接,网站又会恢复正常。出现这种现象的原因是,当使用pconnect时,Apache 的httpd进程会不释放connect,而当Apache的httpd进程数超过了mysql的最大连接数时,就会出现无法连接的情况。因此,需要小心地调整Apache和Mysql的配置,以使Apache的httpd进程数不会超出MySQL的最大连接数。笔者经过实践,在PHP5和 Oracle10g的连接中,由于频于数据库连接,有时候还会出现数据库丢失连接的情况(Oracle官方有针对PHP的增强包,不知是否可以解决此问题,笔者未试)。 PHP的工作模型即是缺点也是优势,从本质上说,这就是PHP 的独特之处。 若以FastCGI模式运行php,解析php.ini、载入全部扩展并重初始化全部数据结构这些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接可以工作。Nginx+PHP(FastCGI)是个不错的选择。
-
示云_好好生活 组长 楼主 2013-12-18 00:14:36
介绍,scons用的是python语法。需要安装python和scons后才能运行,能够跨平台。比较automake自动生成makefile文件,scons可以认为直接是make的功能,因为只需要执行scons命令就等于执行了make的功能。
现在现在有一个hello.c的文件。
新建一个SConstruct文件,是一个python脚本文件。
Program('hello.c') 编译hello.c并生成.o文件和可执行文件
Object('hello.c') 编译hello.c但只生成生成.o文件
这两个方法都是python的method。
如果想执行clean操作,我们不需要再象makefile那样指名make clean语句,而是直接执行scons -c 或者scons -clean就可以。程序会根据SConstruct文件内容自动清除。
SConstruct的读取和执行顺序是彼此独立的,直接看以下例子。
SConstruct文件内容:
print "Calling Program('hello.c')"
Program('hello.c')
print "Calling Program('goodbye.c')"
Program('goodbye.c')
print "Finished calling Program()"
执行结果:
% scons
scons: Reading SConscript files ...
Calling Program('hello.c') (1)
Calling Program('goodbye.c') (2)
Finished calling Program()
scons: done reading SConscript files.
scons: Building targets ...
cc -o goodbye.o -c goodbye.c (2)
cc -o goodbye goodbye.o (1)
cc -o hello.o -c hello.c
cc -o hello hello.o
scons: done building targets.
由于在执行scons时一些输出信息反而会混淆我们,所以可以加参数 -Q来关闭一些输出提示。
Program('new_hello', 'hello.c') #第一个参数可以指定目标文件名字,默认为hello,第二个参数就是source files。
多源文件编译指定:
Program('program', ['prog.c', 'file1.c', 'file2.c']) #如果没有第一个参数,则以第二个参数(这是一个python list,用【】表示)的第一个元素为program的名字。
如果你觉得列表里面每个文件都需要带一个引号太麻烦,可以利用
Program('program', Split('main.c file1.c file2.c')) #这里的split函数是返回一个列表
也可以这么用来提高可读性
src_files = Split('main.c file1.c file2.c') #中间多少个空格无所谓
Program('program', src_files)
也可利用Glob函数获得名字列表,Golb('*.c')返回规则匹配的string列表,就是类似上面的'prog.c', 'file1.c', 'file2.c'。
Program('program', Glob('*.c'))
两个关键字可以直接指明target和source,所以在Program
src_files = Split('main.c file1.c file2.c')
Program(target = 'program', source = src_files)
src_files = Split('main.c file1.c file2.c')
Program(source = src_files, target = 'program') #可以调换参数顺序
多工程共享source files的话:
common = ['common1.c', 'common2.c'] #把共同的文件列表单独提取出来,以便维护
foo_files = ['foo.c'] + common
bar_files = ['bar1.c', 'bar2.c'] + common
Program('foo', foo_files)
Program('bar', bar_files)
building library:
Library('foo', ['f1.c', 'f2.c', 'f3.c']) #文件列表#静态库
Library('foo', ['f1.c', 'f2.o', 'f3.c', 'f4.o']) #文件列表喝object文件
StaticLibrary('foo', ['f1.c', 'f2.c', 'f3.c']) #静态library,其实跟Library调用没区别,只是显示强调是静态库
SharedLibrary('foo', ['f1.c', 'f2.c', 'f3.c']) #共享库,类似dll
The output on POSIX:
% scons -Q
cc -o f1.os -c f1.c
cc -o f2.os -c f2.c
cc -o f3.os -c f3.c
cc -o libfoo.so -shared f1.os f2.os f3.os
link library:
Library('foo', ['f1.c', 'f2.c', 'f3.c'])
Program('prog.c', LIBS=['foo', 'bar'], LIBPATH='.') #指定库,指定库的路径。
注意-l,-L,-i,-I的用法。
LIBPATH变量:
LIBPATH = '/usr/lib:/usr/local/lib' #unix用:分开
LIBPATH = 'C:\\lib;D:\\lib' #windows用;分开
CPPPATH变量:类似 -I指定,指定编译目录 #声明了这个选项是用于隐式依赖,比如某些cpp文件包含了h文件,当这些h文件更改时,就会重编这些cpp对应的对象。每次编译的时候,会去搜索这些隐式依赖,所以会消耗一些时间
Program('hello.c', CPPPATH = '.') #这里会让编译器同时关注hello.c里面include的h文件
Program('hello.c', CPPPATH = ['include', '/home/project/inc'])
编译结果:
% scons -Q hello
cc -o hello.o -c -Iinclude -I/home/project/inc hello.c
cc -o hello hello.o
--implicit-cache参数可让scons高速缓存哪些隐式依赖关系,这样能减少搜索隐私依赖的时间。如:
% scons -Q --implicit-cache hello
cc -o hello.o -c hello.c
cc -o hello hello.o
% scons -Q hello
scons: `hello' is up to date.
当你不想每次都输入这个参数时,可以在SConstruct文件中加入这个语句:SetOption('implicit_cache', 1)
有时scons扫描器检查不出一些文件的依赖性,可以利用Depends函数显示地的指明依赖性:
hello = Program('hello.c')
Depends(hello, 'other_file')
如果想让某个依赖文件改变时不重编,可以用Ignore函数设置忽略这些依赖性:
hello_obj=Object('hello.c')
hello = Program(hello_obj)
Ignore(hello_obj, 'hello.h')
每次都想重编一个目标,可用AlwaysBuild函数设置:
hello = Program('hello.c')
AlwaysBuild(hello)
环境变量:有三种,外部环境变量(外部环境信息),scons环境变量(控制scons行为的变量),执行环境变量。变量是很多变量的集合,包括变量名和变量值。
env = Environment() #创建默认的环境变量,默认scons会按编译器的默认选项来进行编译
import os
env = Environment(CC = 'gcc',CCFLAGS = '-O2') #创建并设置环境 变量
env.Program('foo.c')
% scons -Q
gcc -o foo.o -c -O2 foo.c
gcc -o foo foo.o
环境变量访问:env = Environment()
print "CC is:", env['CC']
另一种访问环境变量的方法,试用环境变量的subst方法,而且它还对下面的变量不断展开直到无法继续展开,例如下面两个例子:
env = Environment(CCFLAGS = '-DFOO')
print "CCCOM is:", env['CCCOM'] #输出 CCCOM is: $CC $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINC FLAGS -c -o $TARGET $SOURCES
print "CCCOM is:", env.subst('$CCCOM') #输出 CCCOM is: gcc -DFOO -c -o #这里将上面的变量值展开了
默认环境DefaultEnvironment(); 试用方法跟上面的环境变量一样,不过控制范围是默认的所有配置。在默认环境中设置好一些变量,可以提高编译速度,比如在默认环境变量中制定了编译器的位置,这样的话可以省去搜索 默认编译器位置的 消耗。如:
env = DefaultEnvironment(tools = ['gcc', 'gnulink'], CC = '/usr/local/bin/gcc') #显式指定编译器位置
多环境变量: opt = Environment(CCFLAGS = '-O2')
dbg = Environment(CCFLAGS = '-g')
opt.Program('foo', 'foo.c')
dbg.Program('bar', 'bar.c')
复制环境变量:env = Environment(CC = 'gcc')
opt = env.Clone(CCFLAGS = '-O2')
dbg = env.Clone(CCFLAGS = '-g')
env.Program('foo', 'foo.c')
o = opt.Object('foo-opt', 'foo.c')
opt.Program(o)
d = dbg.Object('foo-dbg', 'foo.c')
dbg.Program(d)
替换环境变量值:env = Environment(CCFLAGS = '-DDEFINE1')
env.Replace(CCFLAGS = '-DDEFINE2')
env.Program('foo.c')
替换注意事项: env = Environment(CCFLAGS = '-DDEFINE1') #-DDEFINE1
print "CCFLAGS =", env['CCFLAGS']
env.Program('foo.c')
env.Replace(CCFLAGS = '-DDEFINE2') #-DDEFINE2
print "CCFLAGS =", env['CCFLAGS']
env.Program('bar.c')
#上面设置了两次,但当程序开始编译的时候,只会以最后一次配置的值为准,所以请看下面的结果:
% scons
scons: Reading SConscript files ...
CCFLAGS = -DDEFINE1
CCFLAGS = -DDEFINE2
scons: done reading SConscript files.
scons: Building targets ...
cc -o bar.o -c -DDEFINE2 bar.c
cc -o bar bar.o
cc -o foo.o -c -DDEFINE2 foo.c
cc -o foo foo.o
scons: done building targets.
env.SetDefault(SPECIAL_FLAG = '-extra-option') #默认变量不存在时设置
添加新的变量: env = Environment()
env.Append(NEW_VARIABLE = 'added') #不存在时自动创建并赋值;存在时变量的值是append上去而不是assign的
env.AppendUnique(CCFLAGS=['-g']) #该变量不存在时才添加
env.Prepend(CCFLAGS = ['-DFIRST']) #在变量值前面插入,不存在则自动创建并赋值,跟append相似
env.PrependUnique(CCFLAGS=['-g']) #该变量不存在才前插 -
示云_好好生活 组长 楼主 2013-12-18 15:57:12
1、删除 mysql
1 sudo apt-get autoremove --purge mysql-server-5.0 2 sudo apt-get remove mysql-server 3 sudo apt-get autoremove mysql-server 4 sudo apt-get remove mysql-common (非常重要) 上面的其实有一些是多余的,建议还是按照顺序执行一遍
清理残留数据
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
-
示云_好好生活 组长 楼主 2013-12-18 19:25:54
源码编译安装 MySQL 5.5.x 实践
1.安装cmake
MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具。
因此,我们首先要在系统中源码编译安装cmake工具。
# wget http://www.cmake.org/files/v2.8/cmake-2.8.4.tar.gz
# tar zxvf cmake-2.8.4.tar.gz
# cd cmake-2.8.4
# ./configure
# make
# make install
2.确保以下所需系统软件包已经被安装
通过 rpm -qa | grep name 的方式验证以下软件包是否已全部安装。
gcc* gcc-c++* autoconf* automake* zlib* libxml* ncurses-devel* libgcrypt* libtool*
如果缺少相关的软件包,可通过yum -y install 的方式在线安装,或直接从系统安装光盘中找到并通过rpm -ivh 的方式安装。
3. 安装前的系统设置
建立mysql安装目录及数据存放目录
# mkdir /opt/mysql
# mkdir /opt/mysql/data
创建用户和用户组
# groupadd mysql
# useradd -g mysql mysql
赋予数据存放目录权限
# chown mysql:mysql -R /opt/mysql/data
4.从configure更换为cmake
我相信大多数人都已经习惯了之前的configure方式,并且所使用的参数也是比较个性化的,换成cmake之后,这一方面会带来不少的麻烦。
还好,MySQL的官方网站提供了二者的参数对照表,我们可以尽可能的保留之前的参数,来编译配置新的MySQL版本。
configure 与 cmake 参数对照指南:
http://forge.mysql.com/wiki/Autotools_to_CMake_Transition_Guide
以我自己为例,之前我一直使用的参数为:
./configure --prefix=/opt/mysql/ \
--sysconfdir=/opt/mysql/etc \
--localstatedir=/opt/mysql/data \
--with-tcp-port=3306 \
--with-unix-socket-path=/tmp/mysqld.sock \
--with-mysqld-user=mysql \
--enable-assembler \
--with-extra-charsets=all \
--enable-thread-safe-client \
--with-big-tables \
--with-readline \
--with-ssl \
--with-embedded-server \
--enable-local-infile \
--with-plugins=partition,innobase,myisammrg
经过与cmake的参数对照之后,去除掉已经被取消的参数(大多数是因为新版本已经默认启用),cmake的参数配置如下:
cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql \
-DSYSCONFDIR=/opt/mysql/etc \
-DMYSQL_DATADIR=/opt/mysql/data \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
-DMYSQL_USER=mysql \
-DEXTRA_CHARSETS=all \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1
5.编译安装 MySQL 5.5.x
通过http://www.mysql.com/downloads/mysql官方网址或国内的sohu镜像下载软件包,如目前最新的MySQL 5.5.13。
# wget http://mirrors.sohu.com/mysql/MySQL-5.5/mysql-5.5.13.tar.gz
# tar zxvf mysql-5.5.13.tar.gz
# cd mysql-5.5.13
# cmake -DCMAKE_INSTALL_PREFIX=/opt/mysql \
-DSYSCONFDIR=/opt/mysql/etc \
-DMYSQL_DATADIR=/opt/mysql/data \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \
-DMYSQL_USER=mysql \
-DEXTRA_CHARSETS=all \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1
# make
# make install
在make与make install的时候可以看到进度百分比,感觉这一点要比configure方式要好。
6.配置并初始化数据库
创建my.cnf配置文件
# mkdir /opt/mysql/log
# mkdir /opt/mysql/etc
# cp support-files/my-medium.cnf /opt/mysql/etc/my.cnf
初始化数据库
执行前需赋给scripts/mysql_install_db文件执行权限
# chmod 755 scripts/mysql_install_db
# scripts/mysql_install_db --user=mysql --basedir=/opt/mysql/ --datadir=/opt/mysql/data/
创建管理MySQL数据库的shell脚本
# mkdir /opt/mysql/init.d
# cp support-files/mysql.server /opt/mysql/init.d/mysql
赋予shell脚本可执行权限:
# chmod +x /opt/mysql/init.d/mysql
启动MySQL:
# /opt/mysql/init.d/mysql start
通过命令行登录管理MySQL服务器(提示输入密码时直接回车):
# /opt/mysql/bin/mysql -u root -p -S /tmp/mysql.sock
输入以下SQL语句,创建一个具有root权限的用户(admin)和密码(12345678):
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY '12345678';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'127.0.0.1' IDENTIFIED BY '12345678';
为root帐户设置初始密码
# /opt/mysql/bin/mysqladmin -u root password 'new-password'
删除本机匿名连接的空密码帐号
/opt/mysql/bin/mysql -uroot -p'new-password'
mysql>use mysql; //选择系统数据库mysql
mysql>select Host,User,Password from user; //查看所有用户
mysql>delete from user where password="";
mysql>flush privileges;
mysql>select Host,User,Password from user; //确认密码为空的用户是否已全部删除
mysql>exit; -
示云_好好生活 组长 楼主 2013-12-18 21:42:50
决克隆虚拟机后网卡设备无法识别启动问题的方法 一、故障问题 从vmware workstation中克隆(clone)了一个CentOS 6的虚拟机,启动之后发现网卡没有启动。于是重启一下network服务,发现提示错误信息“Device eth0 does not seem to be present, delaying initialization.” 二、解决方法 1)、删除 /etc/udev/rules.d/70-persistent-net.rules 后重启机器。70-persistent-net.rules这个文件确定了网卡与MAC地址的绑定,clone之后网卡的MAC地址发生了变化,所以导致系统认为网络设备不存在。 2)、经过这样的处理后eth0还不能正常启动,需要将 /etc/udev/rules.d/70-persistent-net.rules 文件最后的修改"eth1"为"eth0",然后将/etc/sysconfig/network-scripts/ifcfg-eth0中的MAC地址修改为 /etc/udev/rules.d/70-persistent-net.rules文件中所记录的地址,再重启机器,eth0可以正常启动了。
-
示云_好好生活 组长 楼主 2013-12-19 08:35:05
Renewed Red Hat and updated the system with yum update, the following error:
Not using downloaded repomd.xml because it is older than what we have:
The solution is effective:
“yum clean all && yum check-update”
Very good , Then continue running "yum update". That's ok!!!
-
示云_好好生活 组长 楼主 2013-12-19 11:02:05
-
示云_好好生活 组长 楼主 2013-12-20 11:08:57
什么是cdn
不是用来提高网站速度,CDN又叫边缘节点,通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。简单说一台服务器的数据,复制到上万个CDN服务器中,需要访问数据的用户点击访问数据时,智能虚拟系统会将用户连接到离用户最近的CDN节点,缩短网络传输时间,这样用户就能快速访问,感觉好像网站访问速度变快了。你在同一机房的两台服务器,一台搭建CDN是没有任何意义的,一般CDN在全国部署上万台CDN节点,用户在任何一个地方访问会连接到离他最近的CDN服务器上,你一台CDN,还跟服务器在同一个机房,用户访问你的CDN跟直接访问服务器没有任何区别,都需要跨过N个路由
-
示云_好好生活 组长 楼主 2013-12-20 20:44:09
那就是/etc/resolv.conf。很多网友对此文件的用处不太了解。其实并不复杂,它是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序。该文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件。它的格式很简单,每行以一个关键字开头,后接一个或多个由空格隔开的参数。
resolv.conf的关键字主要有四个,分别是:
nameserver //定义DNS服务器的IP地址
domain //定义本地域名
search //定义域名的搜索列表
sortlist //对返回的域名进行排序
下面我们给出一个/etc/resolv.conf的示例:
domain 51osos.com
search www.51osos.com 51osos.com
nameserver 202.102.192.68
nameserver 202.102.192.69
最主要是nameserver关键字,如果没指定nameserver就找不到DNS服务器,其它关键字是可选的。
nameserver表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的,且只有当第一个nameserver没有反应时才查询下面的nameserver。
domain 声明主机的域名。很多程序用到它,如邮件系统;当为没有域名的主机进行DNS查询时,也要用到。如果没有域名,主机名将被使用,删除所有在第一个点( .)前面的内容。
search 它的多个参数指明域名查询顺序。当要查询没有域名的主机,主机将在由search声明的域中分别查找。
domain和search不能共存;如果同时存在,后面出现的将会被使用。
sortlist 允许将得到域名结果进行特定的排序。它的参数为网络/掩码对,允许任意的排列顺序。
-
示云_好好生活 组长 楼主 2013-12-20 20:45:59
今天51开源给大家详细介绍一下yum命令的用法。如果你是一个Linux的初学者,一定会被软件的安装所困扰过,尽管RPM包解决了一定层度的问题,但有些RPM的包的依赖关系让人很是头疼。而YUM、APT等一些RPM包的管理方式的出现,使Linux平台上软件的安装变得更加简便。 那么什么是YUM呢?它是Yellow dog Updater Modified的缩写。它的出现目的是为了解决RPM包的依赖关系,方便用户进行软件的安装、删除、升级等工作。本文将详细介绍yum命令的使用方法,关于YUM仓库的配置将在51开源站点其他技术文档详细讲述。 下面将详述yum命令的用法: 主要参数: -y 不需要用户确认要发生的操作 -->用YUM安装删除软件 yum会查询数据库,有无这一软件包,如果有,则检查其依赖冲突关系,如果没有依赖冲突,下载安装;如果有,则会给出提示,询问是否要同时安装依赖,或删除冲突的包,你可以自己作出判断。 #yum install 软件名 //用YUM安装指定软件包 #yum remove 软件名 //用YUM删除指定软件包 #yum localinstall RPM包文件 //使用YUM方式安装本地RPM包 #yum groupinstall <分组名称> //安装指定分组内所有软件 #yum groupremove packagegroup <分组名称> //删除指定分组内所有软件 注意:install、localinstall的区别:使用install时,指定的软件包将从YUM服务器下载并安装,而localinstall指定的软件使用RPM包安装,而依赖关系所需的包在YUM服务器下载安装。 à用YUM查询软件信息 #yum check-update //列出所有可更新的软件清单 #yum -y update //升级所有已安装软件 #yum -y update <软件名> //升级指定的软件包 #yum upgrade //大规模的版本升级,与yum update不同的是,连旧的淘汰的包也升级 #yum groupupdate <分组名称> //更新指定软件组中的软件包 #yum info <软件名> //显示指定软件包相关信息 #yum info updates //显示所有可以更新的软件包的信息 #yum info installed //显示所有已经安装的软件包的信息 #yum info extras //显示所有已经安装但不在YUM 仓库内的软件包信息 #yum groupinfo <分组名称> //显示指定分组的信息 #yum list //列出所有已经安装和可以安装的软件 #yum list <regex> //列出资源库中与正则表达式匹配的可以安装或更新以及已经安装的rpm包 #yum list <软件名> //列出指定的软件包的安装情况 #yum list available //列出资源库中所有可以安装的rpm包 #yum list available <regex> //列出资源库中与正则表达式匹配的所有可以安装的rpm包 #yum list installed //列出所有已经安装的软件包 #yum list installed <regex> //列出资源库中与正则表达式匹配的所有已经安装的rpm包 #yum list extras //列出所有已经安装但不在YUM 仓库内的软件包 #yum list extras <regex> //列出与正则表达式匹配的已经安装的但是不包含在资源库中的rpm包 #yum grouplist //列出所有YUM服务器定义的分组 #yum search <关键字> //在YUM源中查找指定关键字 #yum search <regex> //检测所有可用的软件的名称、描述、概述和已列出的维护者,查找与正则表达式匹配的值 #yum list recent //列出最近被添加到资源库中的软件包 #yum provides <regex> //检测软件包中包含的文件以及软件提供的功能,查找与正则表达式匹配的值 #yum deplist <软件包> //显示软件包的依赖信息 -->清除YUM缓存 yum会把下载的软件包和header存储在cache中,而不会自动删除。 #yum clean packages //清除缓存目录(/var/cache/yum)下的软件包 #yum clean headers //清除缓存目录(/var/cache/yum)下的 headers #yum clean oldheaders //清除缓存目录(/var/cache/yum)下旧的 headers #yum clean all //清除缓存目录(/var/cache/yum)下的软件包及旧的headers #yum clean //同上,清除缓存目录(/var/cache/yum)下的软件包及旧的headers àyum命令使用实例 1、升级系统 #yum update 2、安装指定的软件包
yum -y install vsftpd
3、升级指定的软件包
yum -y update mysql
4、卸载指定的软件包
yum -y remore vsftpd mysql
5、查看系统中已经安装的和可用的软件组,对于可用的软件组,你可以选择安装
yum grouplist
6、安装上一个命令中显示的可用的软件组中的一个软件组,神之编辑器-Emacs,大约安装了12个软件包
yum -y groupinstall Emacs
7、更新指定软件组中的软件包
yum -y groupupdate Emacs
8、卸载指定软件组中的软件包,对于Emacs,安装的时候安装了12个软件包,但是卸载的时候只卸载了4个软件包!
yum -y groupremove Emacs
9、清除缓存中的rpm 头文件和包文件
yum clean all
10、搜索相关的软件包
yum -y search Emacs
11、显示指定软件包的信息
yum info Emacs
和rpm -qi emacs显示的信息差不多,但不完全相同 12、查询指定软件包的依赖信息,emacs依赖的模块不少啊
yum deplist emacs
13、列出所有以 yum 开头的软件包
yum list yum*
14、列出已经安装的但是不包含在资源库中的rpm 包
yum list extras
-
示云_好好生活 组长 楼主 2013-12-20 21:05:42
在linux系统中进行网络管理,我们常常使用强大的ifconfig命令。
但ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。配置文件中有一个非常重要的成员:/etc/sysconfig/network-scripts/ifcfg-ethx (注:echx是指设备名,例如eth0等)。
在ifcfg-ethx文件配置中的网络信息在重启后仍然生效,在网络管理中相当有用,现在我就ifcfg-ethx文件进行IPV4网络配置方法进行简单的说明。
根据文件ifcfg-eth0打开命令及各项信息如下:
[root@无此人 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0#网卡设备名称
ONBOOT=yes#启动时是否激活 yes | no
BOOTPROTO=static#协议类型 dhcp bootp none
IPADDR=192.168.1.90#网络IP地址
NETMASK=255.255.255.0#网络子网地址
GATEWAY=192.168.1.1#网关地址
BROADCAST=192.168.1.255#广播地址
HWADDR=00:0C:29:FE:1A:09#网卡MAC地址
TYPE=Ethernet#网卡类型为以太网
注:在修改文件ifcfg-ethx后还需要重新导入文件才能生效,具体命令如下:
[root@无此人
~]# /etc/init.d/network reload #命令有start | restart | stop | reload -
示云_好好生活 组长 楼主 2013-12-26 14:13:59
-
示云_好好生活 组长 楼主 2013-12-28 22:39:20
-
示云_好好生活 组长 楼主 2013-12-29 10:28:15
-
示云_好好生活 组长 楼主 2013-12-29 10:29:20
-
示云_好好生活 组长 楼主 2013-12-31 15:03:44
-
示云_好好生活 组长 楼主 2013-12-31 15:04:07
-
示云_好好生活 组长 楼主 2013-12-31 15:29:39
-
示云_好好生活 组长 楼主 2014-01-01 21:27:08
apache的配置
<IfModule> 指令说明封装指令并根据指定的模块是否启用为条件而决定是否进行处理语法<IfModule [!]module-file|module-identifier> ... </IfModule>作用域server config, virtual host, directory, .htaccess覆盖项All状态核心(C)模块core兼容性module-identifier仅在 Apache 2.1 及以后的版本中可用
<IfModule test>...</IfModule>配置段用于封装根据指定的模块是否启用而决定是否生效的指令。在<IfModule>配置段中的指令仅当test为真的时候才进行处理。如果test为假,所有其间的指令都将被忽略。
<IfModule>段中的test可以为以下两种方式之一:
module !module
在第一种情况下,起始和结束标记之间的指令仅当module被载入后才被执行。此模块可以为编译时静态链接进核心的模块或是使用LoadModule指令动态载入的模块。第二种情况则相反,仅当module没有载入时才进行指令的处理。
module可以是模块的标识符或者是编译模块时的文件名。比如,rewrite_module就是一个模块标识符,而mod_rewrite.c则是编译模块时的文件名。如果模块包含多个源代码文件,您应当使用包含STANDARD20_MODULE_STUFF字符串的那个。
<IfModule>配置段是可以嵌套的,从而可以实现简单的多模块测试。 此配置段主要用于需要根据某个特定的模块是否存在来决定是否使用某些配置的时候。指令一般都放在<IfModule>配置段中。
-
示云_好好生活 组长 楼主 2014-01-01 21:45:19
-
示云_好好生活 组长 楼主 2014-02-20 15:37:37
1. /proc目录
Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。
用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。下面列出的这些文件或子文件夹,并不是都是在你的系统中存在,这取决于你的内核配置和装载的模块。另外,在/proc下还有三个很重要的目录:net,scsi和sys。 Sys目录是可写的,可以通过它来访问或修改内核的参数,而net和scsi则依赖于内核配置。例如,如果系统不支持scsi,则scsi 目录不存在。
除了以上介绍的这些,还有的是一些以数字命名的目录,它们是进程目录。系统中当前运行的每一个进程都有对应的一个目录在/proc下,以进程的 PID号为目录名,它们是读取进程信息的接口。而self目录则是读取进程本身的信息接口,是一个link。
2. 子文件或子文件夹
/proc/buddyinfo 每个内存区中的每个order有多少块可用,和内存碎片问题有关
/proc/cmdline 启动时传递给kernel的参数信息
/proc/cpuinfo cpu的信息
/proc/crypto 内核使用的所有已安装的加密密码及细节
/proc/devices 已经加载的设备并分类
/proc/dma 已注册使用的ISA DMA频道列表
/proc/execdomains Linux内核当前支持的execution domains
/proc/fb 帧缓冲设备列表,包括数量和控制它的驱动
/proc/filesystems 内核当前支持的文件系统类型
/proc/interrupts x86架构中的每个IRQ中断数
/proc/iomem 每个物理设备当前在系统内存中的映射
/proc/ioports 一个设备的输入输出所使用的注册端口范围
/proc/kcore 代表系统的物理内存,存储为核心文件格式,里边显示的是字节数,等于RAM大小加上4kb
/proc/kmsg 记录内核生成的信息,可以通过/sbin/klogd或/bin/dmesg来处理
/proc/loadavg 根据过去一段时间内CPU和IO的状态得出的负载状态,与uptime命令有关
/proc/locks 内核锁住的文件列表
/proc/mdstat 多硬盘,RAID配置信息(md=multiple disks)
/proc/meminfo RAM使用的相关信息
/proc/misc 其他的主要设备(设备号为10)上注册的驱动
/proc/modules 所有加载到内核的模块列表
/proc/mounts 系统中使用的所有挂载
/proc/mtrr 系统使用的Memory Type Range Registers (MTRRs)
/proc/partitions 分区中的块分配信息
/proc/pci 系统中的PCI设备列表
/proc/slabinfo 系统中所有活动的 slab 缓存信息
/proc/stat 所有的CPU活动信息
/proc/sysrq-trigger 使用echo命令来写这个文件的时候,远程root用户可以执行大多数的系统请求关键命令,就好像在本地终端执行一样。要写入这个文件,需要把/proc/sys/kernel/sysrq不能设置为0。这个文件对root也是不可读的
/proc/uptime 系统已经运行了多久
/proc/swaps 交换空间的使用情况
/proc/version Linux内核版本和gcc版本
/proc/bus 系统总线(Bus)信息,例如pci/usb等
/proc/driver 驱动信息
/proc/fs 文件系统信息
/proc/ide ide设备信息
/proc/irq 中断请求设备信息
/proc/net 网卡设备信息
/proc/scsi scsi设备信息
/proc/tty tty设备信息
/proc/net/dev 显示网络适配器及统计信息
/proc/vmstat 虚拟内存统计信息
/proc/vmcore 内核panic时的内存映像
/proc/diskstats 取得磁盘信息
/proc/schedstat kernel调度器的统计信息
/proc/zoneinfo 显示内存空间的统计信息,对分析虚拟内存行为很有用
以下是/proc目录中进程N的信息
/proc/N pid为N的进程信息
/proc/N/cmdline 进程启动命令
/proc/N/cwd 链接到进程当前工作目录
/proc/N/environ 进程环境变量列表
/proc/N/exe 链接到进程的执行命令文件
/proc/N/fd 包含进程相关的所有的文件描述符
/proc/N/maps 与进程相关的内存映射信息
/proc/N/mem 指代进程持有的内存,不可读
/proc/N/root 链接到进程的根目录
/proc/N/stat 进程的状态
/proc/N/statm 进程使用的内存的状态
/proc/N/status 进程状态信息,比stat/statm更具可读性
/proc/self 链接到当前正在运行的进程
3. 例子
3.1 /proc/
yafang@ゐ失聲。:~$ ls /proc/
1 16819 21242 2180 2494 8768 interrupts partitions
116 16820 21244 2181 2524 885 iomem sched_debug
11740 17901 21245 21810 2525 acpi ioports scsi
11742 17903 21247 21812 3 asound irq self
11743 17904 2131 21813 39 buddyinfo kallsyms slabinfo
13452 18362 21319 21923 4 bus kcore stat
13454 18364 2132 2193 41 cgroups key-users swaps
13455 18365 2139 21933 42 cmdline kmsg sys
149 19451 2142 2209 5 cpuinfo kpagecount sysrq-trigger
150 19453 21572 2212 5330 crypto kpageflags sysvipc
151 19454 21574 2219 596 devices loadavg timer_list
152 2 21575 2243 597 diskstats locks timer_stats
15771 2083 2158 2260 6 dma meminfo tty
15773 2092 21625 2261 617 driver misc uptime
15774 2101 21627 2262 619 execdomains modules version
16232 21112 21628 2263 7 fb mounts vmallocinfo
16234 21115 2165 2264 804 filesystems mtrr vmstat
16235 21116 2167 2265 8765 fs net zoneinfo
16811 2112 2177 2338 8767 ide pagetypeinfo
3.2 /proc/sys
系统信息和内核参数
yafang@ゐ失聲。:~$ ls /proc/sys
debug dev fs kernel net vm
3.3 /proc/net
网卡设备信息
yafang@ゐ失聲。:~$ ls /proc/net
anycast6 ip6_flowlabel netfilter raw6 sockstat6 udplite
arp ip6_mr_cache netlink route softnet_stat udplite6
dev ip6_mr_vif netstat rt6_stats stat unix
dev_mcast ip_mr_cache packet rt_acct tcp vlan
dev_snmp6 ip_mr_vif protocols rt_cache tcp6 wireless
if_inet6 ipv6_route psched snmp tr_rif
igmp mcfilter ptype snmp6 udp
igmp6 mcfilter6 raw sockstat udp6
3.4 /proc/scsi
SCSI设备信息
yafang@ゐ失聲。:~$ ls /proc/scsi
device_info scsi
3.5 /proc/modules
所有加载到内核的模块列表
root@BDSP-A-2-1-2:~# cat /proc/modules
bdspboard 8486 2 dspcontrol, Live 0xe134c000
dspcontrol 9575 1 clkmon, Live 0xe135b000
clkmon 6765 1 - Live 0xe136c000
diagint 6635 1 - Live 0xe1379000
bdsprio 10775 2 srioif,tsi577, Live 0xe9389000
tsi577 17998 1 srioif, Live 0xe939e000
srioif 7329 0 - Live 0xe93b2000
linux_kernel_bde 54666 1 linux_user_bde, Live 0xf1417000 (P)
linux_user_bde 17849 0 - Live 0xf1427000 (P)
root@BDSP-A-2-1-2:~#
3.6 /proc/devices
已经加载的设备并分类
root@BCNMB-A:~# cat /proc/devices
Character devices:
1 mem
2 pty
3 ttyp
4 /dev/vc/0
4 tty
4 ttyS
5 /dev/tty
5 /dev/console
5 /dev/ptmx
7 vcs
10 misc
13 input
89 i2c
90 mtd
116 linux-user-bde2
117 linux-kernel-bde2
126 linux-user-bde
127 linux-kernel-bde
128 ptm
136 pts
180 usb
189 usb_device
245 ext_alarm
251 ipmidev
252 usb_endpoint
253 usbmon
254 rtc
Block devices:
1 ramdisk
8 sd
31 mtdblock
65 sd
66 sd
67 sd
68 sd
69 sd
70 sd
71 sd
128 sd
129 sd
130 sd
131 sd
132 sd
133 sd
134 sd
135 sd
root@BCNMB-A:~#
3.7 /proc/partitions
分区中的块分配信息
root@BDSP-A-2-1-2:~# cat /proc/partitions
major minor #blocks name
31 0 512 mtdblock0
31 1 512 mtdblock1
31 2 123904 mtdblock2
31 3 4096 mtdblock3
31 4 1024 mtdblock4
31 5 1024 mtdblock5
31 6 512 mtdblock6
31 7 512 mtdblock7
31 8 123904 mtdblock8
31 9 4096 mtdblock9
31 10 1024 mtdblock10
31 11 1024 mtdblock11
31 12 1048576 mtdblock12
root@BDSP-A-2-1-2:~#
3.8 /proc/version
Linux内核版本和gcc版本
root@BDSP-A-2-1-2:~# cat /proc/version
Linux version 2.6.34.6-WR4.0.0.0_standard (satomi@麦子) (gcc version 4.4.1 (Wind River Linux Sourcery G++ 4.4-291) ) #1 SMP PREEMPT Fri Nov 26 16:07:47 CST 2010
root@BDSP-A-2-1-2:~#
3.9 /proc/sys/fs/file-max
该文件指定了可以分配的文件句柄的最大数目。如果用户得到的错误消息声明由于打开文件数已经达到了最大值,从而他们不能打开更多文件,则可能需要增加该值。可将这个值设置成有任意多个文件,并且能通过将一个新数字值写入该文件来更改该值。默认设置时4096。
改变内核的参数,用vi编辑或echo参数重定向到文件中。
# cat /proc/sys/fs/file-max
4096
# echo 8192 > /proc/sys/fs/file-max
# cat /proc/sys/fs/file-max
8192
如果优化了参数,则可以把它们写成添加到文件rc.local中,使它在系统启动时自动完成修改。
-
示云_好好生活 组长 楼主 2014-02-20 15:40:56
-
示云_好好生活 组长 楼主 2014-02-20 16:39:55
-
示云_好好生活 组长 楼主 2014-02-20 16:42:15
-
示云_好好生活 组长 楼主 2014-02-20 16:47:22
-
示云_好好生活 组长 楼主 2014-02-21 16:23:49
-
示云_好好生活 组长 楼主 2014-02-22 14:10:43
