基于LNMP网站平台,测试增加memcached缓存系统后网站访问效果

LNMP安装教程链接:22-love cat 17周博客作业第2部分-构建一个LVS-DR模型的高性能集群

memcached 安装及测试效果

一、概念

    memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

    memcached是一套分布式的快取系统,当初是Danga Interactive为了LiveJournal所发展的,但被许多软件(如MediaWiki)所使用。这是一套开放源代码软件,以BSD license授权协议发布。(以上概念介绍引用百度百科)

适用memcached的场景:

    分布式应用。由于memcached本身基于分布式的系统,所以尤其适合大型的分布式系统。

    数据库前段缓存。数据库常常是网站系统的瓶颈。数据库的大并发量访问,常常造成网站内存溢出。当然我们也可以使用Hibernate的缓存机制。但memcached是基于分布式的,并可独立于网站应用本身,所以更适合大型网站进行应用的拆分。

    服务器间数据共享。举例来讲,我们将网站的登录系统、查询系统拆分为两个应用,放在不同的服务器上,并进行集群,那这个时候用户登录后,登录信息如何从登录系统服务器同步到查询系统服务器呢?这时候,我们便可以使用memcached,登录系统将登录信息缓存起来,查询系统便可以获得登录信息,就像获取本地信息一样。

不适用memcached的场景:

    那些不需要“分布”的,不需要共享的,或者干脆规模小到只有一台服务器的应用,memcached不会带来任何好处,相反还会拖慢系统效率,因为网络连接同样需要资源。

二、安装memcached

[root@php-server ~]# yum install -y memcached.x86_64     #yum安装memcached
[root@php-server ~]# yum info memcached                  #列出memcached的rpm包信息 
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * atomic: mirrors.neusoft.edu.cn
 * base: centos.ustc.edu.cn
 * epel: mirror01.idc.hinet.net
 * extras: centos.ustc.edu.cn
 * updates: mirrors.sina.cn
 * webtatic: us-east.repo.webtatic.com
Installed Packages
Name        : memcached
Arch        : x86_64
Version     : 1.4.24
Release     : 5.el6.art
Size        : 200 k
Repo        : installed
From repo   : atomic
Summary     : High Performance, Distributed Memory Object Cache
URL         : http://www.memcached.org/
License     : BSD
Description : memcached is a high-performance, distributed memory object caching
            : system, generic in nature, but intended for use in speeding up dynamic
            : web applications by alleviating database load.  #这就是为什么memcached可以减轻databases的原因  [root@php-server ~]# rpm -ql memcached                   #安装完memcached后,我们看下文件
/etc/rc.d/init.d/memcached                               #启动脚步
/etc/sysconfig/memcached                                 #配置文件
/usr/bin/memcached                                       #主程序文件目录位置
/usr/bin/memcached-tool                                  #工具程序文件目录位置
/usr/share/doc/memcached-1.4.24                          #后面的就不介绍了
/usr/share/doc/memcached-1.4.24/AUTHORS
/usr/share/doc/memcached-1.4.24/CONTRIBUTORS
/usr/share/doc/memcached-1.4.24/COPYING
/usr/share/doc/memcached-1.4.24/ChangeLog
/usr/share/doc/memcached-1.4.24/NEWS
/usr/share/doc/memcached-1.4.24/new_lru.txt
/usr/share/doc/memcached-1.4.24/protocol.txt
/usr/share/doc/memcached-1.4.24/readme.txt
/usr/share/doc/memcached-1.4.24/threads.txt
/usr/share/man/man1/memcached.1.gz
/var/run/memcached
[root@php-server ~]# cat /etc/sysconfig/memcached 
PORT="11211"                                            #memcached监听在哪个端口上
USER="memcached"                                        #运行memcached进程的用户
MAXCONN="1024"                                          #最大连接数
CACHESIZE="64"                                          #缓存大小(实际生产不会只有64M)
OPTIONS=""                                              #其他选项
[root@php-server ~]# service memcached start            #启动memcached服务
Starting memcached:                                        [  OK  ]
[root@php-server ~]# netstat -tunlp |grep memcached     
tcp        0      0 0.0.0.0:11211               0.0.0.0:*                   LISTEN      1672/memcached      
tcp        0      0 :::11211                    :::*                        LISTEN      1672/memcached      
udp        0      0 0.0.0.0:11211               0.0.0.0:*                               1672/memcached      
udp        0      0 :::11211                    :::*                                    1672/memcache

三、memcached命令介绍

常用命令含义说明,如下表所示:

选项

含义说

-d 指定memcached进程作为一个守护进程启动
-m <num> 指定分配给memcached使用的内存,单位是MB,默认为64;
-u <username> 运行memcached的用户
-l <ip_addr> 监听的服务器IP地址,如果有多个地址的话,使用逗号分隔,格式可以为“IP地址:端口号”,例如:-l 指定192.168.0.184:19830,192.168.0.195:13542;端口号也可以通过-p选项指定
-p <num> Listen on TCP port <num>, the default is port 11211.
-c <num> 设置最大运行的并发连接数,默认是1024
-R <num> 为避免客户端饿死(starvation),对连续达到的客户端请求数设置一个限额,如果超过该设置,会选择另一个连接来处理请求,默认为20
-k 设置锁定所有分页的内存,对于大缓存应用场景,谨慎使用该选项
-P 保存memcached进程的pid文件
-s <file> 指定Memcached用于监听的UNIX socket文件
-a <perms> 设置-s选项指定的UNIX socket文件的权限
-U <num> Listen on UDP port <num>, the default is port 11211, 0 is off.
-M 当内存使用超出配置值时,禁止自动清除缓存中的数据项,此时Memcached不可以,直到内存被释放
-r 设置产生core文件大小
-f <factor> 用于计算缓存数据项的内存块大小的乘数因子,The default is 1.25.
-n 为缓存数据项的key、value、flag设置最小分配字节数,默认是48
-C Disable the use of CAS (and reduce the per-item size by 8 bytes).
-h 显示Memcached版本和摘要信息
-v 输出警告和错误信息
-vv 打印信息比-v更详细:不仅输出警告和错误信息,也输出客户端请求和响应信息
-i 打印libevent和Memcached的licenses信息
-t <threads> 处理用于请求的线程数,The default is 4.
-D <char> 用于统计报告中Key前缀和ID之间的分隔符,默认是冒号“:”
-L 尝试使用大内存分页(pages)
-B <proto> 指定使用的协议,默认行为是自动协商(autonegotiate),可能使用的选项有auto、ascii、binary。
-I <size> 覆盖默认的STAB页大小,默认是1M
-F 禁用flush_all命令
-o <options> 指定逗号分隔的选项,一般用于用于扩展或实验性质的选项

stats命令

STAT pid 22362    //memcache服务器的进程ID  
STAT uptime 1469315    //服务器已经运行的秒数
STAT time 1339671194    //服务器当前的unix时间戳
STAT version 1.4.9    //memcache版本
STAT libevent 1.4.9-stable    //libevent版本
STAT pointer_size 64    //当前操作系统的指针大小(32位系统一般是32bit,64就是64位操作系统)
STAT rusage_user 3695.485200    //进程的累计用户时间
STAT rusage_system 14751.273465    //进程的累计系统时间
STAT curr_connections 69    //服务器当前存储的items数量
STAT total_connections 855430    //从服务器启动以后存储的items总数量
STAT connection_structures 74    //服务器分配的连接构造数
STAT reserved_fds 20    //
STAT cmd_get 328806688    //get命令(获取)总请求次数
STAT cmd_set 75441133    //set命令(保存)总请求次数  
STAT cmd_flush 34    //flush命令请求次数
STAT cmd_touch 0    //touch命令请求次数
STAT get_hits 253547177    //总命中次数
STAT get_misses 75259511    //总未命中次数
STAT delete_misses 4    //delete命令未命中次数
STAT delete_hits 565730    //delete命令命中次数
STAT incr_misses 0    //incr命令未命中次数
STAT incr_hits 0    //incr命令命中次数
STAT decr_misses 0    //decr命令未命中次数
STAT decr_hits 0    //decr命令命中次数
STAT cas_misses 0    //cas命令未命中次数
STAT cas_hits 0        //cas命令命中次数
STAT cas_badval 0    //使用擦拭次数
STAT touch_hits 0    //touch命令未命中次数
STAT touch_misses 0    //touch命令命中次数
STAT auth_cmds 0    //认证命令处理的次数
STAT auth_errors 0    //认证失败数目
STAT bytes_read 545701515844        //总读取字节数(请求字节数)
STAT bytes_written 1649639749866    //总发送字节数(结果字节数)
STAT limit_maxbytes 2147483648        //分配给memcache的内存大小(字节)
STAT accepting_conns 1            //服务器是否达到过最大连接(0/1)
STAT listen_disabled_num 0    //失效的监听数
STAT threads 4        //当前线程数
STAT conn_yields 14    //连接操作主动放弃数目
STAT hash_power_level 16    //
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT expired_unfetched 30705763
STAT evicted_unfetched 0
STAT bytes 61380700    //当前存储占用的字节数
STAT curr_items 28786    //当前存储的数据总数
STAT total_items 75441133    //启动以来存储的数据总数
STAT evictions 0    //为获取空闲内存而删除的items数(分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items)
STAT reclaimed 39957976    //已过期的数据条目来存储新数据的数目
END

上面给出了各个统计项的含义说明,不再累述,stats命令有几个二级子项,说明如下表所示:

命令 含义说明
stats slabs 显示各个slab的信息,包括chunk的大小、数目、使用情况等
stats items 显示各个slab中item的数目和最老item的年龄(最后一次访问距离现在的秒数)
stats detail [on|off|dump] 设置或者显示详细操作记录;
参数为on,打开详细操作记录;
参数为off,关闭详细操作记录;
参数为dump,显示详细操作记录(每一个键值get、set、hit、del的次数)
stats malloc 打印内存分配信息
stats sizes 打印缓存使用信息
stats reset 重置统计信息

下面的命令,我们通过表格的形式说明,如下表所示:

命令 用法格式 含义说明 示例
get get <key>*\r\n 用于获取缓存的数据,键为key。 get name
VALUE name 0 7
shirdrn
END
gets gets <key>*\r\n 用于获取缓存的数据,键为一组key。 gets name hobby
VALUE name 1 7
1234567
VALUE hobby 0 25
tenis basketball football
END
set set <key> <flags> <exptime> <bytes> [noreply]\r\n<value>\r\n 向缓存中存储数据,不管key对应的值存在与否,都设置key对应的值。 set name 0 1800 7
shirdrn
STORED
get name
VALUE name 0 7
shirdrn
END
touch touch <key> <exptime> [noreply]\r\n 更新缓存中key对应的值的过期时间。 touch name 1800
delete delete <key> [<time>] [noreply]\r\n 给定键key,删除缓存中key对应的数据。 delete name 60
add add <key> <flags> <exptime> <bytes> [noreply]\r\n<value>\r\n 向缓存中存储数据,只有key对应的值不存在时,才会设置key对应的值。 add hobby 0 1800 10
basketball
STORED
get hobby

VALUE hobby 0 10
basketball
END

replace replace <key> <flags> <exptime> <bytes> [noreply]\r\n<value>\r\n 覆盖一个已经存在Key及其对应的Value,替换一定要保证替换后的值的长度原始长度相同,否则replace失败。 get name
VALUE name 0 7
shirdrn
END
replace name 0 1800 7
youak47
STORED
get name
VALUE name 0 7
youak47
END
append append <key> <flags> <exptime> <bytes> [noreply]\r\n<value>\r\n 在一个已经存在的数据值(value)上追加,是在数据值的后面追加。 get hobby
VALUE hobby 0 10
basketball
END
append hobby 0 1800 9
football
STORED
get hobby
VALUE hobby 0 19
basketball football
END
prepend prepend <key> <flags> <exptime> <bytes> [noreply]\r\n<value>\r\n 在一个已经存在的数据值(value)上追加,是在数据值的前面追加。 get hobby
VALUE hobby 0 19
basketball football
END
prepend hobby 0 1800 6
tenis
STORED
get hobby
VALUE hobby 0 25
tenis basketball football
END
incr incr <key> <value> [noreply]\r\n 计数命令,可以在原来已经存在的数字上进行累加求和,计算并存储新的数值。 set active_users 0 1000000 7
1000000
STORED
get active_users
VALUE active_users 0 7
1000000
END
incr active_users 99
1000099
decr decr <key> <value> [noreply]\r\n 计数命令,可以在原来已经存在的数字上进行减法计算,计算并存储新的数值。 get active_users
VALUE active_users 0 7
1000099
END
decr active_users 3456
996643
flush_all flush_all [<time>] [noreply]\r\n 使缓存中的数据项失效,可选参数是在多少秒后失效。 flush_all 1800
version version\r\n 返回Memcached服务器的版本信息。 version
quit quit\r\n 退出telnet终端。 quit

memcached默认没有认证机制,但可借助于SASL进行认证;

PHP有两种Memcached扩展,老一点的叫memcache,新一点的叫memcached:

1、php-pecl-memcache.x86_64                   3.0.8-3.el6.art              atomic  

[root@php-server ~]# yum info php-pecl-memcache.x86_64
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * atomic: mirrors.neusoft.edu.cn
 * base: centos.ustc.edu.cn
 * epel: mirror01.idc.hinet.net
 * extras: centos.ustc.edu.cn
 * updates: mirrors.sina.cn
 * webtatic: us-east.repo.webtatic.com
Available Packages
Name        : php-pecl-memcache
Arch        : x86_64
Version     : 3.0.8
Release     : 3.el6.art
Size        : 83 k
Repo        : atomic
Summary     : Extension to work with the Memcached caching daemon
URL         : http://pecl.php.net/package/memcache
License     : PHP
Description : Memcached is a caching daemon designed especially for
            : dynamic web applications to decrease database load by
            : storing objects in memory.
            : 
            : This extension allows you to work with memcached through
            : handy OO and procedural interfaces.
            : 
            : Memcache can be used as a PHP session handler.

2、php-pecl-memcached.x86_64                  2.1.0-9.el6.art              atomic

[root@php-server ~]# yum info php-pecl-memcached.x86_64
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * atomic: mirrors.neusoft.edu.cn
 * base: centos.ustc.edu.cn
 * epel: mirror01.idc.hinet.net
 * extras: centos.ustc.edu.cn
 * updates: mirrors.yun-idc.com
 * webtatic: us-east.repo.webtatic.com
Available Packages
Name        : php-pecl-memcached
Arch        : x86_64
Version     : 2.1.0
Release     : 9.el6.art
Size        : 55 k
Repo        : atomic
Summary     : Extension to work with the Memcached caching daemon
URL         : http://pecl.php.net/package/memcached
License     : PHP and MIT
Description : This extension uses libmemcached library to provide API for communicating
            : with memcached servers.
            : 
            : memcached is a high-performance, distributed memory object caching system,
            : generic in nature, but intended for use in speeding up dynamic web
            : applications by alleviating database load.
            : 
            : It also provides a session handler (memcached).

    libmemcached 是一个 memcached 的库,客户端库,C 和 C++ 语言实现的客户端库,具有低内存占用率、线程安全、并提供对memcached功能的全面支持,下面我们安装libmemcached.x86_64:

[root@php-server ~]# yum install -y libmemcached.x86_64 
[root@php-server ~]# rpm -ql libmemcached     #不一一举例,只举例memstat
/usr/bin/memaslap
/usr/bin/memcapable
/usr/bin/memcat
/usr/bin/memcp
/usr/bin/memdump
/usr/bin/memerror
/usr/bin/memexist
/usr/bin/memflush                   
/usr/bin/memparse
/usr/bin/memping
/usr/bin/memrm
/usr/bin/memslap
/usr/bin/memstat                   
/usr/bin/memtouch
/usr/lib64/libhashkit.so.2
/usr/lib64/libhashkit.so.2.0.0
/usr/lib64/libmemcached.so.11
/usr/lib64/libmemcached.so.11.0.0
/usr/lib64/libmemcachedprotocol.so.0
/usr/lib64/libmemcachedprotocol.so.0.0.0
/usr/lib64/libmemcachedutil.so.2
/usr/lib64/libmemcachedutil.so.2.0.0
/usr/share/doc/libmemcached-1.0.18
/usr/share/doc/libmemcached-1.0.18/AUTHORS
/usr/share/doc/libmemcached-1.0.18/COPYING
/usr/share/doc/libmemcached-1.0.18/ChangeLog
/usr/share/doc/libmemcached-1.0.18/README
/usr/share/doc/libmemcached-1.0.18/THANKS
/usr/share/doc/libmemcached-1.0.18/TODO
/usr/share/man/man1/memaslap.1.gz
/usr/share/man/man1/memcapable.1.gz
/usr/share/man/man1/memcat.1.gz
/usr/share/man/man1/memcp.1.gz
/usr/share/man/man1/memdump.1.gz
/usr/share/man/man1/memerror.1.gz
/usr/share/man/man1/memexist.1.gz
/usr/share/man/man1/memflush.1.gz
/usr/share/man/man1/memparse.1.gz
/usr/share/man/man1/memping.1.gz
/usr/share/man/man1/memrm.1.gz
/usr/share/man/man1/memslap.1.gz
/usr/share/man/man1/memstat.1.gz
/usr/share/man/man1/memtouch.1.gz
[root@php-server ~]# memstat --help
memstat v1.0

	Output the state of a memcached cluster.

Current options. A '=' means the option takes a value.

	 --args=
		Argument for statistics
	 --version 
		Display the version of the application and then exit.
	 --help 
		Display this message and then exit.
	 --quiet 
		stderr and stdin will be closed at application startup.
	 --verbose 
		Give more details on the progression of the application.
	 --binary 
		Switch to binary protocol.
	 --debug 
		Provide output only useful for debugging.
	 --server-version 
		Memcached daemon software version
	 --servers=
		List which servers you wish to connect to.
	 --analyze=
		Analyze the provided servers.
	 --username=
		Username to use for SASL authentication
	 --password=
		Password to use for SASL authentication

[root@php-server ~]# memstat --servers=127.0.0.1
Server: 127.0.0.1 (11211)
	 pid: 1672
	 uptime: 3347
	 time: 1471763883
	 version: 1.4.24
	 libevent: 1.4.13-stable
	 pointer_size: 64
	 rusage_user: 0.042993
	 rusage_system: 0.055991
	 curr_connections: 10
	 total_connections: 14
	 connection_structures: 11
	 reserved_fds: 20
	 cmd_get: 0
	 cmd_set: 0
	 cmd_flush: 0
	 cmd_touch: 0
	 get_hits: 0
	 get_misses: 0
	 delete_misses: 0
	 delete_hits: 0
	 incr_misses: 0
	 incr_hits: 0
	 decr_misses: 0
	 decr_hits: 0
	 cas_misses: 0
	 cas_hits: 0
	 cas_badval: 0
	 touch_hits: 0
	 touch_misses: 0
	 auth_cmds: 0
	 auth_errors: 0
	 bytes_read: 9754
	 bytes_written: 1435
	 limit_maxbytes: 67108864
	 accepting_conns: 1
	 listen_disabled_num: 0
	 threads: 4
	 conn_yields: 0
	 hash_power_level: 16
	 hash_bytes: 524288
	 hash_is_expanding: 0
	 malloc_fails: 0
	 bytes: 0
	 curr_items: 0
	 total_items: 0
	 expired_unfetched: 0
	 evicted_unfetched: 0
	 evictions: 0
	 reclaimed: 0
	 crawler_reclaimed: 0
	 crawler_items_checked: 0
	 lrutail_reflocked: 0

LB Cluster保持会话的方法:

    session sticky
    session cluster
    session server

四、为php安装memcached扩展

    php有两个版本的memcached客户端,这里介绍memcached这个是新版的客户端是基于libmemcached,所以必须要安装libmemcached,命令为:

[root@php-server ~]# yum install -y php-pecl-memcached.x86_64
[root@php-server ~]# ll /usr/lib64/php/modules/               #将memcached.so信息添加到php.ini
total 5980
-rwxr-xr-x 1 root root  241589 Jun 10 00:34 curl.so
-rwxr-xr-x 1 root root 3153493 Jun 10 00:34 fileinfo.so
-rwxr-xr-x 1 root root   42480 Feb 11  2016 igbinary.so
-rwxr-xr-x 1 root root  150412 Jun 10 00:34 json.so
-rwxr-xr-x 1 root root  147183 Jun 10 00:34 mcrypt.so
-rwxr-xr-x 1 root root   86984 Aug  2  2013 memcached.so
-rwxr-xr-x 1 root root  861233 Jun 10 00:34 phar.so
-rwxr-xr-x 1 root root 1428036 Jun 10 00:34 zip.so
[root@php-server ~]# wget  
[root@php-server ~]# tar -xvf memcache-2.2.7.tgz
[root@php-server ~]# cd memcache-2.2.7
[root@php-server memcache-2.2.7]# ./configure --enable-memcache --with-php-config=/opt/application/php/bin/php-config
[root@php-server memcache-2.2.7]# make;make install
[root@php-server memcache-2.2.7]# vim /etc/php.ini    #修改php.ini配置文件
extension_dir = "/opt/application/php/lib/php/extensions/no-debug-non-zts-20131226/"
extension = "memcache.so"
[root@php-server memcache-2.2.7]# service php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm  done
或者:
[root@php-server memcache-2.2.7]# cp /opt/application/php/lib/php/extensions/no-debug-non-zts-20131226/* /opt/application/php/lib/php/extensions/
[root@php-server memcache-2.2.7]# vim /etc/php.ini
extension = "memcache.so"

打开php探针网页:

blob.png

测试memcached

[root@php-server ~]# telnet 192.168.2.214 11211
STAT pid 20439  —— Memcached 进程的ID
STAT uptime 179982 —— 进程运行时间
STAT time 1471773767 ——当前时间
STAT version 1.4.24
STAT libevent 1.4.13-stable
STAT pointer_size 32
STAT rusage_user 21.916668
STAT rusage_system 40.576831
STAT curr_connections 11
STAT total_connections 329
STAT connection_structures 23
STAT reserved_fds 20
STAT cmd_get 2363348 —— 总共获取数据的次数(等于 get_hits + get_misses )
STAT cmd_set 279971 —— 总共设置数据的次数
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 2286284 —— 命中了多少次数据,也就是从 Memcached 缓存中成功获取数据的次数
STAT get_misses 77064 —— 没有命中的次数
STAT delete_misses 30803
STAT delete_hits 48876
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 574591015
STAT bytes_written 4353057466
STAT limit_maxbytes 67108864 —— 总的存储大小,默认为 64M
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 262144
STAT hash_is_expanding 0
STAT bytes 4717345 —— 当前所用存储大小
STAT curr_items 5654
STAT total_items 58461
STAT expired_unfetched 17
STAT evicted_unfetched 0
STAT evictions 0
STAT reclaimed 49
END

用python测试memcached

[root@php-server ~]# more python-memcached.py 
#!/usr/bin/env python
import memcache
mc = memcache.Client(['127.0.0.1:11211'], debug=1)

mc.set("some_key", "Some value")
value = mc.get("some_key")
print value

mc.set("another_key", 3)
mc.delete("another_key")

mc.set("key", "1")   # note that the key used for incr/decr must be a string.
mc.incr("key")
mc.decr("key")
[root@php-server ~]# python python-memcached.py 
Some value

还可以用memadmin工具

blob.png

原创文章,作者:zuoyang1990,如若转载,请注明出处:http://www.178linux.com/38301

(0)
zuoyang1990zuoyang1990
上一篇 2016-08-22
下一篇 2016-08-22

相关推荐

  • awk入门应用

    awk概述使用语法常用命令选项相关输出命令print item1,item2,…printf FORMAT,item1,item2,….相关格式符相关修饰符相关内建变量相关内置函数相关操作符相关模式相关控制语句及示例if(condition) statementsif(condition){statements} else {statements}while…

    Linux干货 2016-12-04
  • 马哥教育网络19期+第十四周课程练习

    系统的INPUT和OUTPUT默认策略为DROP; 先把策略设置为DROP # iptables -t filter -P OUTPUT DROP # iptables -t filter -P INPUT DROP 1、限制本地主机的we…

    Linux干货 2016-08-22
  • 20160808课堂练习(sed工具)

    练习: 1、  删除/etc/grub2.conf文件中所有以空白开头的行行首的空白字符 # sed 's@^[[:space:]]\+@@' /etc/grub2.cfg                    2、删除/etc/…

    Linux干货 2016-08-10
  • MySQL高可用架构之MHA

    MySQL高可用架构之MHA 1、关于MHA MHA(Master HA)是一款开源的MySQL的高可用程序,它为MySQL主从复制架构提供了automating master failover功能。MHA在监控到master节点故障时,会提升其中拥有的最新数据的slave节点成为新的master节点,在此期间,MHA会通过其它从节点获取额外信息来避免一致性…

    Linux干货 2017-03-30
  • mkdir练习

    课外资料 mkdir命令用来创建目录。该命令创建由dirname命名的目录。如果在目录名的前面没有加任何路径名,则在当前目录下创建由dirname指定的目录;如果给出了一个已经存在的路径,将会在该目录下创建一个指定的目录。在创建目录时,应保证新建的目录与它所在目录下的文件没有重名。 注意:在创建文件时,不要把所有的文件都存放在主目录中,可以创建子目录,通过它…

    Linux干货 2016-08-08
  • 马哥教育网络班22期+第9周课程练习

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现;            [root@test ~]# vim&nbsp…

    Linux干货 2016-10-24