linux命令dmesg参数以及用法详解

dmesg作用: dmesg用来显示开机信息,kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看 dmesg语法: dmesg [ -c ] [ -n level] [ -s buffer ] dmesg参数: -c 当完成打印显示后清除环缓冲内的内容。 -s buffer 大小 定义一个大小为 缓冲区大小 的缓冲区用于查询内核 环缓冲区。默认大小为 8196(此大小与 2.0.33 和 2.1.103 内核的默认syslog 缓冲区大小一致),如果你设置了一个大于默认值的环缓冲区,那你就可以用这个选项定义一个相当的缓冲区来查看完整的环缓冲区内容。 -n级别 设置级别为记录控制台启动信息的级别。比如,-n 1指的就是将此级别设为最低级,除了内核恐慌信息之外不会向控制台显示信息。所有级别的启动信息还将记录到/proc/kmsg,文件中,因此,syslogd(8)同样可以用来对信息的输出进行控制。当使用-n选项时,dmesg将不会 清除内核环缓冲区中的内容。当同时使用以上两个选项时,只有最后一个选项才会产生效果。 dmesg举例: $ sudo dmesg | tail -f ...

阅读全文 »

linux命令lsusb参数以及用法详解

lsusb作用:

列出所有usb设备

lsusb语法:

lsusb [参数]

lsusb参数:

-D 设备路径 不扫描/proc/bus/usb,而以指定的设备路径取代

-p 内核路径 使用其他USB设备在内核的路径,默认为/proc/bus/usb

-t 将USB设备以树状架构输出

-v 列出较详细的运行过程

-vv 列出完整的运行过程

-V 显示版本信息

lsusb举例:

#lsusb

阅读全文 »

linux命令blockdev参数以及用法详解

blockdev作用:查询区块设备
blockdev语法:block [参数] [命令] 设备
blockdev参数:
-q 安静模式
-v完整模式
-V 列出版本后退出
--flushbufs 更新缓存区
--getra 列出读写头大小
--getro 判断是否只读:1为只读,0为非只读
--getsize 列出设备的容量
--getss 列出区块大小
--rereadpt 重读分割表
--setra 设置读写头为N倍的512kb区块
--setro 设置为只读
--setrw 设置为可擦写
使用举例:
blockdev -v --getss /dev/sda1

阅读全文 »

linux badblocks命令参数及用法详解

badblocks 作用: 检查硬盘中损坏的区块 badblocks [ -svwnf ] [ -b block-size ] [ -c blocks_at_o nc e ] [ -i input_ file ] [ -o output_file ] [ -p num_passes ] [ -t test_pattern ] device [ last-block ] [ start-block ] 参数含义: -b blocksize 指定磁盘的区块大小,单位为字节,默认值为 block 4K (4K/block) -c blocksize 每个区块检查的次数,默认是16次 -f 强制在一个已经挂载的设备上执行读写或非破坏性的写测试操作 (我们建议先 umount 设备,然后再进行坏道检测。仅当/etc/mtab出现误报设备挂载错误的时候可以使用该选项) -i file 跳过已经显示在file文件中的坏道,而不进行检测(可以避免重复检测) -o file 把检测结果输出到file文件 -p number 重复搜寻设备,直到在指定通过次数内都没有找到新的坏块位置,默认次数为0 -s 在检查时显示进度 -t pattern 通过按指定的模式读写来检测区块。你可以指定一个0到ULONG_MAX-1的十进制正值,或使用random(随机)。 如果你指定多个模式,badblocks将使用第一个模式检测所有的区块,然后再使用下一个模式检测所有的区块。 Read-only方式仅接受一个模式,它不能接受random模式的。 -v 执行时显示详细的信息 -w 对每个区块都先写入,然后再从它读取信息 [device] 指定要检查的磁盘装置。 [last-block] 指定磁盘装置的区块总数。 [start-block] 指定要从哪个区块开始检查 示例: badblocks -v /dev/sdal ...

阅读全文 »

用 Unix 的设计思想来应对多变的需求

现实当中的例子

让我先举几个现实生活中的例子: 1、现实社会中,制造灯具的工厂完全不关心制造灯泡的工厂,制造灯泡的工厂完全不关心制造灯具的工厂,但是,灯泡和灯饰可以很完美地组合成用户所喜欢的样子(这和@weidagang 在“需求变更和IoC”说到的那个PC的例子相仿)。他们是怎么做到的? 2、互联网上,做网站的人完全不用关心用户在用什么样的操作系统,什么样的客户端浏览器(当然事实上,浏览器的不标准让网站那边很头痛,这里只是举个例),反过来,上网的人也不关心做网站的人在用什么的技术开发网站。但是大家在完全不关心对方的情况下,可以很正常地协同工作在一起。为什么? 这样的例子太多了。为什么可以做成这样呢?因为大家依赖的是一个接口,灯具和灯泡并不互相依赖,他们依赖的是一个接口,做网站的人和浏览网站的人依赖的还是接口——HTTP协议。这就是面向对象的核心思想——依赖于接口而不是实现,这就是解耦。当你看过这两个例子以后,我希望你以后设计的软件至少不能比我们现实社会中的这些方法要差。不然,你就是在让社会倒退了,呵呵。 你会说,这和Unix,和应对需求变化有什么关系?好让我们再来看一下Unix的设计。

Unix设计的例子

下面是几个Unix下的例子: 1、Unix下,所有的硬件都可以通过文件的方式存取。其统统在/dev下。于是,软件和硬件的耦合被解开了,操作系统只需要把硬件统统变成文件,而程序只需要使用三个东西,一个是fd,一个是read(),一个是write(),就可以来操作任意的硬件了,这就是抽象,简单到不行。 2、Unix下,所有的命令都可以用管道串起来(管道绝对是个伟大的发明),这样,所有的命令间的交互全部解耦到只依赖于STD_IN, STD_OUT设备上。最酷的是,用户可以使用管道任意地拼装那些命令,以完成各式各样的功能。管道这个设计思想可以映射为今天的Web Service,你可以任意地拼装各种Web Service。 看到这里,你会发现,这还是解耦,本质上来说,也是一种依赖倒置——OOD的精髓。但是,Unix还不仅仅是这些。我们再来看几个例子: 1、Unix下,软件都是绿色地安装。在iOS上更明显——各个程序间基本上互不干扰,这个程序产生的垃圾文件不会影响到另一个程序。你删掉一个程序不会让另一个程序不举,各是各的空间。你可以删除这些程序,只要把内核心留着,系统照样可以启动。 2、Unix下,你可以通过设置一些环境变量,让多种环境同时存在,比如:某个LAMP用的是Apache 2.0, Mysql 4.0, PHP 4.0,某个LAMP用的是Apache 2.2, Mysql 5.0,PHP5.3,你不但可以方便地在系统中切换这两个环境,你甚至还可以同时启动他们。 3、Unix下,你可以随意地替换你想要的程序。比如,你不喜欢bash,你可以替换成ksh/csh等,你不喜欢awk ,你可以替换成 gawk ,所有的东西都像零件一样,你不喜欢什么,你就可以替换什么。 这三个例子告诉了我们——当你把你的软件设计地耦合度非常地低时,你可以随意地组合,随意地安排你的系统。相当的灵活,灵活到Windows到今天都学不会。

应对需求变化

看到这里,你可能明白我想说的是什么了,你可能开始觉得怎么样的系统设计会更有效了。如果你还记得《Steve Y 对平台的长篇大论》,你就会知道我想说什么了。是的,我想说的就是,当你真正了解了Unix的设计思想后,你会觉得今天的很多东西都是对Unix设计思想的一种传承或是变种。这种东西就是: 1)解耦,解耦,解耦。尽量地让你的模块不要在实现上耦合,而是耦合某个规范,某个标准。 2)KISS,KISS,KISS。要做到高度解耦,你的模块就一定要很简单,当然不是说简单到只有几行代码,而是简单到只干一件事,并把这件事干到极致。然后通过某个标准拼装起来。 3)拼装,拼装,拼装。我想不起来是谁说的了,这句话是这样的,当我想用一个模块的时候,我直接调用就好了,没有必要像C或Java一样,还要编译。是的,拼装需要一个框架,需要一种标准协议,然后让所有的系统都耦合在这种规范上,各自独立运行,就像一个机器上的各个部件一样,当我觉得这个部件不爽,换了就是了。(例如,当我们在尝试不同的算法的时候) 想想建材和家俱市场,无论用户过来想装修什么,我都可以满足用户的不同需求,只要你是和家装相关,我基本上都能满足你,不是吗?无论你怎么变,只要不变态,我基本上都可以满足你。这就是解耦,拼装带来的好处。 你可能会说我说得太简单了,另一方面,你可能觉得有一些系统这样做没必要,我承认,不过,你可以有选择的或多或少地试试。(其实,我相信你已经在不自觉得或多或少地使用这种方式开发软件了)

阅读全文 »

Mac Os X Lion快捷键

1 Cmd-C Copy files 2 Cmd-V Paste files 3 Option-Drag Copy files to new location 4 Cmd-Drag Move and auto-align icons 5 Cmd-Delete Delete 6 Cmd-Option-Drag Make alias 7 Cmd-Shift-Delete Empty trash 8 Cmd-Shift-Option-Delete Empty trash without warning 9 Tab Select next field 10 Shift-Tab Select previous field 11 Return Perform default action 12 Escape Close dialog box 13 Page Up Scroll up list 14 Up Arrow Select item above 15 Page Down Scroll down list 16 Down Arrow Select item below 17 Cmd-Shift-G Open 'Go to Folder' dialog 18 Cmd-Period[.] Close dialog box Exposé, Space, Dashboard and the System 19 F8 Toggle Space 20 Shift-F8 Toggle Space in slow motion 21 F9 Show all open windows 22 Shift-F9 Show all open windows in slow motion 23 F10 Show all open windows for an application 24 Shift-F10 Show all open windows for an application in slow motion 25 F11 Hide all windows 26 Shift-F11 Hide all windows in slow motion 27 F12 Open/close Dashboard 28 Shift-F12 Slowly open/close Dashboard 29 Option-Mouse Hover Reveal the close button of widget 30 Shift-Click Close Button Animate closing widget in slow motion 31 Cmd-H Hide application 32 Cmd-Option-H Hide other applications 33 Cmd-Q Quit application 34 Cmd-Shift-Q Quit all applications and log out 35 Cmd-Option-Shift-Q Log out without warning 36 Cmd-Tab Switch to next application 37 Cmd-Shift-Tab Switch to previous application 38 Option-Drag Adjust volume (on sound volume slider) 39 Cmd-Drag Arrange menu bar items 40 Option-Click Switch window and hide current window 41 Control-Click Open contextual menu 42 Cmd-Control-D See word definition (with mouse hover) Issue: Freeze 43 Cmd-Period[.] Stop process 44 Cmd-Option-Escape Open Force Quit 45 Power Key Turn off 46 Cmd-Option-Shift-Power Key Force shut down 47 Cmd-Control-Power Key Force restart Full Keyboard Access 48 Control-F1 Turn on/off full keyboard access 49 Control-F2 Focusing menu bar 50 Control-F3 Focusing Dock 51 Control-F4 Move to next window 52 Control-F5 Move to toolbar 53 Control-F6 Move to a floating window 54 Control-F7 Toggle keyboard access mode 55 Control-F8 Focusing status menu in menu bar 56 Cmd-Accent[`] Switch to next window within application 57 Cmd-Shift-Accent[`] Switch to previous window within application 58 Cmd-Option-Accent[`] Move to sidebar 59 Cmd-Option-T Toggle on/off character palette Finder 60 Cmd-Click on Title See the path enclosing folders 61 Cmd-Double-Click (on folder) Open folder in new window 62 Option-Double-Click (on folder) Open folder in new window and close current window 63 Cmd-1 Switch to icon view 64 Cmd-2 Switch to list view 65 Cmd-Option-Right Arrow Expand folder 66 Left Arrow Close folder 67 Cmd-Down Arrow Open selected folder 68 Cmd-Option-Down Arrow Open selected folder in new window and close current folder 69 Cmd-Shift-Option-Down Arrow Open selected folder in new window and close current folder in slow motion 70 Cmd-Up Arrow Show enclosing folder 71 Cmd-Option-Up Arrow Show enclosing folder and clos ...

阅读全文 »

Mac Port简介和基本使用方法

熟悉开源系统的人可能就知道port(包管理的一种方式)是BSD世界里的东西,而Mac Port即是为开源项目而诞生的.你可以利用命令行安装很多开源库的软件.Mac Port其实类似debian的apt, redhat里的yum. 1.Mac Port的简介: Mac Port 官方网站: http://www.macports.org/ Mac Port的下载地址 http://www.macports.org/install.php Mac Port的说明文档 http://guide.macports.org/ Mac Port安装方式:DMG安装方式不需要介绍,唯一需要主要的是在最后的过程中会一直出现剩余1分钟,运行脚本,这就是由于网络的原因,可以尝试多试几次,如果还不能成功的话,只能选择从源码,如果不需要更改任何东西的话,直接./configure make sudo make install就行了。 Mac Port中第三方软件下载包存放的默认路径是:/opt/local/var/macports/distfiles/ 。为了提高安装速度,可以在安装新port时直接将此目录下的文件拷贝到新的Mac Port相同的目录中就可以避免Port去网上下载。 2.Mac Port的基本使用方法: 使用Mac Port前应该首先更新Port的index :sudo port selfupdate $ sudo port selfupdate Password: Warning: port definitions are more than two weeks old, consider using selfupdate --- Updating the ports tree --- Updating MacPorts base sources using rsync MacPorts base version 1.9.2 installed, MacPorts base version 1.9.2 downloaded. --- MacPorts base is already the latest version The ports tree has been updated. To upgrade your installed ports, you should run port upgrade outdated 查看Mac Port中当前可用的软件包及其版本 : port list $ port list rabbitmq-server @2.4.0 net/rabbitmq-server AppHack @1.1 aqua/AppHack AppKiDo @0.985 aqua/AppKiDo AquaLess @1.6 aqua/AquaLess ArpSpyX @1.1 aqua/ArpSpyX AssignmentTrackerX @2.0beta3.1 aqua/AssignmentTrackerX BigSQL @1.0 aqua/BigSQL BiggerSQL @1.3.9 aqua/BiggerSQL Books @3.2.5c aqua/Books ...... 搜索需要安装的软件包:port search XXX $ port search maven maven @1.0.2 (java, devel) A java-based build and project management environment. maven-ant-tasks @2.0.10 (devel, java) Use many of Maven's artifact handling features from Ant. maven2 @2.2.1 (java, devel) A java-based build and project management environment. maven3 @3.0.3 (java, devel) A java-based build and project management environment. maven_select @0.3 (sysutils) Switch the default Maven java build tool Found 5 ports. 查看具体的软件包的内容和说明:port info XXX $ port info maven2 maven2 @2.2.1, Revision 3 (java, devel) Description: Maven is a Java project management and project comprehension tool. Maven is based on the concept of a project object model (POM) in that all the artifacts produced by Maven are a result of consulting a well defined model for your project.Builds, documentation, source metrics, and source cross-references are all controlled by your POM. Maven 2.0 is a complete rewrite of Maven 1.0 and as such is better organized, faster and easier to use. Homepage: http://maven.apache.org/ Build Dependencies: kaffe Library Dependencies: maven_select Platforms: darwin License: unknown Maintainers: blair@macports.org, gk5885@kickstyle.net 查看即将安装的或者已经安装的软件包的依赖关系:port deps XXX $ port deps maven2 Full Name: maven2 @2.2.1_3 Build Dependencies: kaffe Library Dependencies: maven_select 查看了软件包的内容和说明,并确认确实要安装:sudo port install XXX 安装完毕之后,清除安装时产生的临时文件 :sudo port clean --all XXX 卸载已经用Mac Port安装的软件 :sudo port uninstall XXX ...

阅读全文 »

memcache与memcached区别和安装

1.首先来看看memcache与memcached的区别: Memcache是一个高性能的分布式的内存对象缓存系统,用于加速动态web应用程序,减轻数据库负载。Memcache官方网站: http://memcached.org/ 。 而Memcached是该系统的主程序文件,以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,使用共享内存存取数据。 PHP中的memcache是用于连接Memecached的客户端组件。 2.memcache与memcached的安装和启动: php的memcache扩展安装:(首先需要下载好 memcache的源码包 ) tar xvf memcache-3.0.3.tgz cd memcache-3.0.3 (/usr/local/php/bin/)phpize ./configure --with-php-config=/usr/local/php5/bin/php-config --enable-memcache make make install (下面是根据各自的环境不同设置不同) 编译出来的memcache.so保存在 /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/ 目录下,如果你的环境不一样,你得根据自己情况修改你的php.ini了。 接着要做的工作就是让php加载这个扩展,编辑你的php.ini,在适当位置(通常是最后,也可以是独立的一个ini文件)加入如下行: extension=memcache.so 接着重启nginx或者apache等服务器,打开phpinfo的网页查看memcache的信息,到这里php的memcache扩展已经安装完成了。 memcached的安装: 由于memcached依赖libevent来处理很多的连接,所以需要先确定libevent是否已经安装,如果libevent没有安装的话,需要先把libevent的包下载下来(需要下载稳定包) cd /tmp tar zxvf libevent-1.4.7-stable.tar.gz cd libevent-1.4.7-stable ./configure --prefix=/usr make make install 安装memcached(先下载memached源码) cd /tmp tar zxvf memcached-1.4.7.tar.gz cd memcached-1.4.7 ./configure --with-libevent=/usr make make install 启动memcached /usr/local/bin/memcached -d -m 2048 -u root -l 192.168.1.20 -p 12111 -c 1024 -P /tmp/memcached.pid 参数说明: -d 启动为守护进程 -m num 分配给Memcached使用的内存数量,单位是MB,默认为64MB -u username 运行Memcached的用户,仅当作为root运行时 -l ip_addr 监听的服务器IP地址,默认为环境变量INDRR_ANY的值 -p num 设置Memcached监听的端口,最好是1024以上的端口 -c num 设置最大并发连接数,默认为1024 -P file 设置保存Memcached的pid文件,与-d选择同时使用 简单的测试用例: ?php $mem = new Memcache; $mem- connect( 127.0.0.1 , 11211); $mem- set( key , This is a test! , 0, 60); $val = $mem- get( key ); echo $val; ? ...

阅读全文 »

FTP的架设(基于linux(centos))

1.下载vsftpd yum install vsftpd 2.启动/重启/关闭vsftpd服务器(/sbin/service vsftpd restart|start|stop) [root@localhost ftp]# /sbin/service vsftpd restart Shutting down vsftpd: [ OK ] Starting vsftpd for vsftpd: [ OK ] OK表示重启成功了. 启动和关闭分别把restart改为start/stop即可. 如果是源码安装的,到安装文件夹下找到start.sh和shutdown.sh文件,执行它们就可以了. 3.与vsftpd服务器有关的文件和文件夹 vsftpd服务器的配置文件的是: /etc/vsftpd/vsftpd.conf vsftpd服务器的根目录,即FTP服务器的主目录: 在/var/ftp处pub处 如果你想修改服务器目录的路径,那么你只要修改/var/ftp到别处就行了 4.添加FTP本地用户 有的FTP服务器需要用户名和密码才能登录,就是因为设置了FTP用户和权限. FTP用户一般是不能登录系统的,只能进入FTP服务器自己的目录中,这是为了安全.这样的用户就叫做虚拟用户了.实际上并不是真正的虚拟用户,只是不能登录SHELL了而已,没能力登录系统. /usr/sbin/adduser -d /opt/test_ftp -g ftp -s /sbin/nologin test 这个命令的意思是: 使用命令(adduser)添加test用户,不能登录系统(-s /sbin/nologin),自己的文件夹在(-d /opt/test_ftp)),属于组ftp(-g ftp) 然后你需要为它设置密码 passwd test 这样就添加了一个FTP用户了.下面的示例可以帮助你进入FTP服务器了. [root@localhost ftp]# ftp ftp open 192.168.0.33 Connected to 192.168.0.33 (192.168.0.33). 220 (vsFTPd 2.0.5) Name (192.168.0.33:gxl): test 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp quit 221 Goodbye. 在windows中,只要在浏览器中输入 ftp://192.168.0.33 进入FTP服务器,然后 右键 登录,输入用户名和密码就可以登录自己的目录了. 当然你要保证自己能读写自己的目录,就要在配置文件vsftpd.conf里设置一下就可以读写了. local_enable=yes write_enable=yes local_umask=022 5.匿名上传下载 修改配置文件即可vsftpd.conf,确定有以下几行,没有自己添加进去就可以了. anonymous_enable=yes anon_upload_enable=yes anon_mkdir_write_enable=yes anon_umask=022 然后你可以新建一个文件夹,修改它的权限为完全开放,任何用户就可以登录这个文件夹,并上传下载文件: mkdir /var/ftp/guest chmod 777 /var/ftp/guest 6.定制进入FTP服务器的欢迎信息 在vsftpd.conf文件中设置: dirmessage_enable=yes 然后进入用户目录建立一个.message文件,输入欢迎信息即可(我这里写入的是Welcome to gxlinux's FTP!): [root@localhost test_ftp]# ftp 192.168.0.33 Connected to 192.168.0.33 (192.168.0.33). 220 (vsFTPd 2.0.5) Name (192.168.0.33:gxl): test 331 Please specify the password. Password: 230-Welcome to gxlinux's FTP! 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. 7.实现虚拟路径 将某个目录挂载到FTP服务器下供用户使用,这就叫做虚拟路径. 比如将gxl用户的目录挂载到FTP服务器中,供FTP服务器的用户使用,使用如下命令即可: [root@localhost opt]# mount --bind /home/gxl /var/ftp/pub #使用挂载命令 [root@localhost opt]# ls /var/ftp/pub 8.打开vsFTPd的日志功能 添加下面一行到vsftpd.conf文件中,一般情况下该文件中有这一行,只要把前面的注释符号#去掉即可,没有的话就添加,或者修改: xferlog_file=/var/log/vsftpd.log 9.限制链接数,以及每个IP最大的链接数 修改配置文件中,例如vsftp最大支持链接数100个,每个IP能支持5个链接: max_client=100 max_per=5 10.限制传输速度 修改配置文件中,例如让匿名用户和vsftd上的用户(即虚拟用户)都以100KB=1024*100=102400的速度下载 anon_max_rate=102400 local_max_rate=102400 11.将用户(一般指虚拟用户)限制在自家目录 修改配置文件中,这样用户就只能访问自己家的目录了: chroot_local_user=yes 如果只想某些用户仅能访问自己的目录,其它用户不做这个限制,那么就需要在chroot_list文件(此文件一般是在/etc/vsftpd/中)中添加此用户. 编辑此文件,比如将test用户添加到此文件中,那么将其写入即可.一般的话,一个用户占一行. [root@localhost vsftpd]# cat chroot_list test 12.绑定某个IP到vsFTPd 有时候要限制某些IP访问服务器,只允许某些IP访问,例如只允许192.168.0.33访问这个FTP,同样修改配置文件: listen_addres ...

阅读全文 »

PHP的SSH2扩展的安装(基于linux(centos))

 首先要确保系统已经安装好了(LNMP或者LAMP,具体的安装方式见地址

1.编译安装libssh2



wget http://www.libssh2.org/download/libssh2-1.2.9.tar.gz
tar zxvf libssh2-1.2.9.tar.gz
cd libssh2-1.2.9
./configure&&make&&make install



2.编译安装ssh2(官网http://www.php.net/ssh2)



wget http://pecl.php.net/get/ssh2-0.11.2.tgz
tar zxvf ssh2-0.11.2.tgz
cd ssh2-0.11.2
phpize(如果没有找到该命令,请确定是否安装的是php-dev)
./configure --with-ssh2 --with-php-config=/usr/local/php/bin/php-config
make
cp modules/ssh2.so /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/
echo "extension=ssh2.so" >> /etc/php.ini

 

 

阅读全文 »