Below you will find pages that utilize the taxonomy term “Linux”
October 31, 2022
在 vmware 里扩容Linux硬盘空间
"\u003cp\u003e在mac上创建了一个ubuntu的虚拟机做为k8s远程开发调试机器,但在编译程序的时候发现磁盘空间不足,于是需要对磁盘进行扩容。\u003c/p\u003e\n\u003cp\u003e下面为整个硬盘扩容过程。\u003c/p\u003e\n\u003ch1 id=\"硬盘扩容\"\u003e硬盘扩容\u003c/h1\u003e\n\u003cp\u003e首先将虚拟机关机,在 Vmware Fusion 软件上面菜单,点击 \u003ccode\u003eVirtual Machine\u003c/code\u003e -\u0026gt; \u003ccode\u003eSetting\u003c/code\u003e 菜单,然后在突出框框里的找到硬盘 \u003ccode\u003eHard Disk\u003c/code\u003e ,点击调整硬盘空间大小,然后点击\u003ccode\u003eApply\u003c/code\u003e 应用按钮。\u003cimg src=\"https://blogstatic.haohtml.com/uploads/2022/10/68da0b3518a7ced98a9fd17cb55b89dd-1.webp\" alt=\"image-20230728130214297\"\u003e\u003c/p\u003e\n\u003ch1 id=\"磁盘格式化\"\u003e磁盘格式化\u003c/h1\u003e\n\u003cp\u003e查看当前磁盘分区信息\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003esxf@vm:~/workspace$ sudo fdisk -l\n[sudo] password for sxf:\nDisk /dev/loop0: 63.29 MiB, 66359296 bytes, 129608 sectors\nUnits: sectors of 1 * 512 = 512 bytes\nSector size (logical/physical): 512 bytes / 512 bytes\nI/O size (minimum/optimal): 512 bytes / 512 bytes\n\nDisk /dev/loop1: …\u003c/code\u003e\u003c/pre\u003e"
May 24, 2022
Linux 中的 Tun/Tap 介绍
"\u003ch1 id=\"tuntap-设备\"\u003eTUN/TAP 设备\u003c/h1\u003e\n\u003cp\u003e在计算机中TUN与TAP是操作系统内核中的虚拟网络设备。不同于硬件设备这些虚拟的网络设备全部用软件实现,但提供了与硬件设备完全相同的功能。\u003c/p\u003e\n\u003cp\u003e我们先了解一下物理设备的工作原理\n\u003cimg src=\"https://blogstatic.haohtml.com/uploads/2022/07/57e54aad529225723698841910e61c46.png\" alt=\"\"\u003e\u003c/p\u003e\n\u003cp\u003e所有主机物理网卡收到的数据包时,会先将其交给内核的 Network Stack 处理,然后通过 Socket API 通知给用户态的用户程序。\u003c/p\u003e\n\u003cp\u003eLinux 中 \u003ccode\u003eTun/Tap\u003c/code\u003e 驱动程序为应用程序提供了两种交互方式:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e虚拟网络接口和字符设备 \u003ccode\u003e/dev/net/tun\u003c/code\u003e。写入字符设备 \u003ccode\u003e/dev/net/tun\u003c/code\u003e 的数据会发送到虚拟网络接口中;\u003c/li\u003e\n\u003cli\u003e发送到虚拟网络接口中的数据也会出现在该字符设备上;\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e我们再看下 tun 设备的工作原理\n\u003cimg src=\"https://blogstatic.haohtml.com/uploads/2022/07/ece6896a211da4167687ea55edc4f2c9.png\" alt=\"\"\u003e\u003c/p\u003e\n\u003cp\u003e用户态应用往字符设备 \u003ccode\u003e/dev/tunX\u003c/code\u003e 写数据时,写入的数据都会出现在TUN虚拟设备上,当内核发送一个包给 TUN 虚拟设备时,通过读这个字符设备 \u003ccode\u003e/dev/tunX\u003c/code\u003e 同样可以拿到包的内容。\u003c/p\u003e\n\u003cp\u003e用户态应用程序写数据到 \u003ccode\u003etun/tap\u003c/code\u003e 设备后进入内核态,内核态通过TCP协议复制到用户态,最后数据再次复制到内核态并通过物理网卡转发出去,期间共经历了三次用户态与内核态的复制 …\u003c/p\u003e"
May 1, 2021
Linux 内核select、poll 和 eventpoll 的实现
"\u003cp\u003eLinux 内核仓库 \u003ca href=\"https://github.com/torvalds/linux\"\u003ehttps://github.com/torvalds/linux\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eLinux 内核文档: \u003ca href=\"https://www.kernel.org/doc/html/latest/index.html\"\u003ehttps://www.kernel.org/doc/html/latest/index.html\u003c/a\u003e( \u003ca href=\"https://www.kernel.org/doc/html/latest/translations/zh_CN/index.html\"\u003e中文\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e开发工具参考: \u003ca href=\"https://www.kernel.org/doc/html/latest/dev-tools/index.html\"\u003ehttps://www.kernel.org/doc/html/latest/dev-tools/index.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e也可以使用 VSCode + 插件C/C++ GNU Global\u003c/p\u003e\n\u003cp\u003e通过前面三个博客可以得知 \u003ca href=\"https://blog.csdn.net/weixin_38537730/article/details/104097648\"\u003e\u003cstrong\u003eselect\u003c/strong\u003e\u003c/a\u003e,** \u003ca href=\"https://blog.csdn.net/weixin_38537730/article/details/104099183\"\u003epoll\u003c/a\u003e\u003cstrong\u003e,\u003c/strong\u003e \u003ca href=\"https://blog.csdn.net/weixin_38537730/article/details/104093556\"\u003eeventpoll\u003c/a\u003e** 的详细实现,现在来总结对比下它们之间的不同:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003cstrong\u003eselect 流程图\u003c/strong\u003e\n\u003cimg src=\"https://blogstatic.haohtml.com/uploads/2021/05/cf1f47a3a2058cac1ffe1376a5825bb8.jpg\" alt=\"93c50bd46eded3432584b819b8c1e7cd\"\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epoll 流程图\u003c/strong\u003e\n\u003cimg src=\"https://blogstatic.haohtml.com/uploads/2021/05/05795514077440f88ef0622e88fc6eb1.jpg\" alt=\"118c7aba5835cf06e006a1834dbe9f40\"\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eeventpoll 流程图\u003c/strong\u003e\n\u003cimg src=\"https://blogstatic.haohtml.com/uploads/2021/05/f859094931597fe7298edb417c48c96b.png\" alt=\"2a937b08de0c8ed6c32b45ae19399a01\"\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e优缺点总结\u003c/strong\u003e\n\u0026lt;1\u0026gt; \u003cstrong\u003e监控文件最大数不同\u003c/strong\u003e:select和poll都是以数组形式传入药监控的文件句柄,而这个数组是有大小限制的1024个左右(不是很清楚).而epoll则是每add一个文件句柄会new一个新epi出来,挂载在ep的红黑树中,监控的文件个数没有明确限制(可能会受限于系统最大打开文件句柄数)从这点上看,epoll是优于select和poll. …\u003c/li\u003e\u003c/ol\u003e"
September 4, 2018
IO多路复用机制详解(转)
"\u003cp\u003e服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:\u003c/p\u003e\n\u003cp\u003e(1)\u003cstrong\u003e同步阻塞IO\u003c/strong\u003e(Blocking IO):即传统的IO模型。\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://blog--static.oss-cn-shanghai.aliyuncs.com//uploads/2023/09/image-20230904182909126.png\" alt=\"image-20230904182909126\"\u003e\u003c/p\u003e\n\u003cp\u003e(2)\u003cstrong\u003e同步非阻塞IO\u003c/strong\u003e(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(New IO)库。\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://blog--static.oss-cn-shanghai.aliyuncs.com//uploads/2023/09/image-20230904182842534.png\" alt=\"image-20230904182842534\"\u003e\u003c/p\u003e\n\u003cp\u003e(3)\u003cstrong\u003eIO多路复用\u003c/strong\u003e(IO Multiplexing):即经典的 \u003ca href=\"https://blog.csdn.net/linxcool/article/details/7771952\"\u003e反应器Reactor设计模式\u003c/a\u003e,有时也称为异步阻塞IO,Java中的Selector和Linux中的epoll都是这种模型。高性能并发服务程序使用IO多路复用模型+多线程任务处理的架构。\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://blog--static.oss-cn-shanghai.aliyuncs.com//uploads/2023/09/image-20230904182800068.png\" alt=\"image-20230904182800068\"\u003e\u003c/p\u003e\n\u003cp\u003e(4)\u003cstrong\u003e异步IO\u003c/strong\u003e(Asynchronous IO):即经典的 \u003ca href=\"https://blog.csdn.net/xiongping_/article/details/45152333\"\u003eProactor设计模式\u003c/a\u003e,也称为异步非阻塞IO。不经常用。\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://blog--static.oss-cn-shanghai.aliyuncs.com//uploads/2023/09/image-20230904182813616.png\" alt=\"image-20230904182813616\"\u003e\u003c/p\u003e\n\u003cp\u003e高性能I/O设计模式Reactor和Proactor: \u003ca href=\"https://blog.csdn.net/xiongping_/article/details/45152333\"\u003ehttps://blog.csdn.net/xiongping_/article/details/45152333\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://www.cnblogs.com/aspirant/p/9166944.html\"\u003eselect、poll、epoll之间的区别(搜狗面试)\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e转自: …\u003c/p\u003e"
June 23, 2017
批量结束linux进程
"\u003cp\u003e这里 `php timer.php`` 进程是使用swoole来搞的一个crond服务,用来定时采集一些数据\u003c/p\u003e\n\u003cp\u003e用ps显示的有以下进程\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eroot 6583 0.0 0.2 219676 4872 ? Ss 10:46 0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)\nwww 7076 2.7 1.0 304928 19920 ? S 11:32 0:05 php-fpm: pool www\nwww 7077 3.0 1.4 312964 26940 ? S 11:32 0:05 php-fpm: pool www\nwww 7117 2.5 1.2 310668 23724 ? S 11:35 0:01 php-fpm: pool www\nroot 7121 0.0 0.2 331188 4500 ? Ssl 11:36 0:00 php timer.php\nroot 7122 0.0 0.2 257012 4168 ? S 11:36 0:00 php timer.php\nroot 7124 0.0 0.2 …\u003c/code\u003e\u003c/pre\u003e"
September 18, 2016
如何用十条命令在一分钟内检查Linux服务器性能
"\u003cp\u003e如果你的Linux服务器突然负载暴增,报警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?来看Netflix性能工程团队的这篇博文,看它们通过十条命令在一分钟内对机器性能问题进行诊断。\u003cstrong\u003e概述\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解。\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003euptime\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edmesg | tail\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003evmstat 1\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003empstat -P ALL 1\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003epidstat 1\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eiostat -xz 1\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003efree -m\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003esar -n DEV 1\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003esar -n TCP,ETCP 1\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etop\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003egtop\u003c/strong\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003epstree 查看进程树之间派生的关系\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etrap 捕捉进行接收到的信号标识,如 SIGKILL/SIGTERM\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/nicolargo/glances\"\u003eGlances\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e其中一些命令需要安装sysstat包,有一些由procps包提供。这些命令的输出,有助于快速定位性能瓶颈,检查出所有资源(CPU、内存、磁盘IO等)的利用率(utilization)、饱和度(saturation)和错误(error)度量,也就是所谓的USE方法。\u003c/p\u003e\n\u003cp\u003e下面我们来逐一介绍下这些命令,有关这些命 …\u003c/p\u003e"
October 11, 2013
Linux 之 /etc/profile、~/.bash_profile 等几个文件的执行过程
"\u003cp\u003e\u003cstrong\u003e在登录Linux时要执行文件的过程如下:\u003c/strong\u003e\n在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个,\u003c/p\u003e\n\u003cp\u003e执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profile。\u003c/p\u003e\n\u003cp\u003e如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc文件。\u003c/p\u003e\n\u003cp\u003e因为在 ~/.bash_profile文件中一般会有下面的代码:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eif [ -f ~/.bashrc ] ; then\n. ./bashrc\nfi\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e~/.bashrc中,一般还会有以下代码:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eif [ -f /etc/bashrc ] ; then\n. /etc/bashrc\nfi\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e所以,~/.bashrc会调用 /etc/bashrc文件。最后,在退出shell时,还会执行 ~/.bash_logout文件。\u003c/p\u003e\n\u003cp\u003e执行顺序为: /etc/profile -\u0026gt; (~/.bash_profile | ~/.bash_login | ~/.profile) -\u0026gt; …\u003c/p\u003e"
May 11, 2012
ps和pstree
"\u003cp\u003eps和pstree是用于系统分析的基本命令。ps有3中不同风格的命令选项,UNIX风格、BSD风格和GNU风格。这里我们只介绍UNIX风格选项。\u003c/p\u003e\n\u003cp\u003eps命令可以显示当前运行的进程列表。top命令也可以显示进程信息,但ps可以提供更加详细的内容。使用相应选项可以影响进程显示的数量。ps -A命令可以列出所有进程及其相应的进程ID(PID),当我们使用如pmap或renice等工具时会用到此PID。\u003c/p\u003e\n\u003cp\u003e当系统运行java应用时,ps -A产生的输出结果很容易填满整个显示区域,这导致很难得到所有运行中进程的完整视图。在这种情况下,pstree命令就派上用场了,它使用树状显示所有运行中的进程并合并所有的子进程(例如java线程),pstree命令有助于确认原始进程。还有另一个ps变种pgrep也非常有用。\u003c/p\u003e\n\u003cp\u003e例子2-4:ps输出示例\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2012/05/ps_-a.jpg\"\u003e\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2012/05/ps_-a.jpg\" alt=\"\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e下面我们来了解一些常用的选项\u003c/p\u003e\n\u003cp\u003e-e :所有进程。等同于-A\u003c/p\u003e\n\u003cp\u003e-l :显示长格式\u003c/p\u003e\n\u003cp\u003e-F :附加全格式\u003c/p\u003e\n\u003cp\u003e-H :显示进程的层次结构\u003c/p\u003e\n\u003cp\u003e-L :显示线程,可能出现LWP和NLWP栏位\u003c/p\u003e\n\u003cp\u003e-m :在进程后显示线程\u003c/p\u003e\n\u003cp\u003e下面的命令演示输出进程的详细信息:\u003c/p\u003e\n\u003cp\u003eps -elFL\u003c/p\u003e\n\u003cp\u003e例子2-5: …\u003c/p\u003e"
November 13, 2011
关于Linux操作系统源代码查看工具的介绍
"\u003cp\u003ea、Windows系统可以用Source Insight,Linux系统可以用Source Navigator。\u003c/p\u003e\n\u003cp\u003eb、vim或emacs编辑器,配合cscope、ctags、etags等交叉索引工具。\u003c/p\u003e\n\u003cp\u003ec、vim或emacs编辑器,配合grep、egrep等文本搜索工具,不过最好要对源代码目录结构有所熟悉\u003c/p\u003e\n\u003cp\u003ed、LXR,以网页的形式通过浏览器浏览,安装复杂(debian下安装容易,请版面搜寻lxr)\u003c/p\u003e\n\u003cp\u003ee、GNU global,可以在命令行用,也可以生成hypertext,类似lxr,但更省事。\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2011/11/source_insight+key.zip\"\u003eSource Insight3.5(含Key)下载\u003c/a\u003e\u003c/p\u003e"
October 20, 2011
FreeBSD/Linux检测硬盘坏道
"\u003cp\u003e\u003cstrong\u003eLinux检测硬盘坏道\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003ebadblocks\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e功能说明:检查磁盘装置中损坏的区块。\u003c/p\u003e\n\u003cp\u003e语法:badblocks [-svw][-b ][-o ][磁盘装置][磁盘区块数][启始区块]\u003c/p\u003e\n\u003cp\u003e补充说明:执行指令时须指定所要检查的磁盘装置,及此装置的磁盘区块数。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e参数:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e-b 指定磁盘的区块大小,单位为字节。\u003c/p\u003e\n\u003cp\u003e-o 将检查的结果写入指定的输出文件。\u003c/p\u003e\n\u003cp\u003e-s 在检查时显示进度。\u003c/p\u003e\n\u003cp\u003e-v 执行时显示详细的信息。\u003c/p\u003e\n\u003cp\u003e-w 在检查时,执行写入测试。\u003c/p\u003e\n\u003cp\u003e[磁盘装置] 指定要检查的磁盘装置。\u003c/p\u003e\n\u003cp\u003e[磁盘区块数] 指定磁盘装置的区块总数。\u003c/p\u003e\n\u003cp\u003e[启始区块] 指定要从哪个区块开始检查。\u003c/p\u003e\n\u003cp\u003ebadblocks 检测磁盘坏块\u003c/p\u003e\n\u003cp\u003e1)$badblocks -s //显示进度 -v //显示执行详细情况 /dev/sda1\u003c/p\u003e\n\u003cp\u003e2)读写方式检测 未挂载的磁盘设备或分区\u003c/p\u003e\n\u003cp\u003e$badblocks -s //显示进度 -w //以写去检测 -v //显示执行详细情况 /dev/sda2\u003c/p\u003e\n\u003cp\u003e=========================\u003cstrong\u003eFreeBSD检测硬盘坏道\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e利用硬盘的S.M.A.R.T.功能来做。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ecd …\u003c/p\u003e\u003c/blockquote\u003e"
October 18, 2011
Linux性能测试工具Lmbench介绍和使用说明
"\u003cp\u003eLinux性能测试工具Lmbench是一套简易可移植的,符合ANSI/C标准为UNIX/POSIX而制定的微型测评工具。一般来说,它衡量两个关键特征:反应时间和带宽。Lmbench旨在使系统开发者深入了解关键操作的基础成本。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1、Lmbench的使用与介绍\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eLinux性能测试工具Lmbench是一套简易可移植的,符合ANSI/C标准为UNIX/POSIX而制定的微型测评工具。一般来说,它衡量两个关键特征:反应时间和带宽。Lmbench旨在使系统开发者深入了解关键操作的基础成本。其官方网站是:http://www.bitmover.com/lmbench/。\n\u003cstrong\u003e2、Lmbench主要功能\u003c/strong\u003e\n带宽测评工具反应时间测评工具其他读取缓存文件\n拷贝内存\n读内存\n写内存\n管道\nTCP上下文切换\n网络:连接的建立,管道,TCP,UDP和RPChotpotato\n文件系统的建立和删除\n进程创建\n信号处理\n上层的系统调用\n内存读入反应时间处理器时钟比率计算\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e3、Linux性能测试工具Lmbench主要特性\u003c/strong\u003e\na)对于操作系统的可移植性测试:评测工具是由C语言编写的,具有较好的可移植性(尽管它们更易于被GCC编 …\u003c/p\u003e"
October 9, 2011
device 0 has different MAC address than expected 的解决办法
"\u003cp\u003e今天克隆了一份vm(centos),发现重启网卡的时候提示”device 0 has different MAC address than expected…”之类的错误,手动修改mac地址也不行.后来找到一种解决办法如下:\u003c/p\u003e\n\u003cp\u003e删除 HWADDR 一行,然后执行ifconfig和service network restart命令.然后用ifconfig命令查看就会发现已经可以正常使用了.\u003c/p\u003e\n\u003cp\u003e不过在eth0文件里HWADDR这一行系统并没有自动添加上的.\u003c/p\u003e"
September 29, 2011
如何查看linux版本
"\u003cp\u003e如何得知自己正在使用的linux是什么版本呢,下面的几种方法将给你带来答案!\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e查看内核版本命令:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e** 1) [root@q1test01 ~]# cat /proc/version **\u003c/p\u003e\n\u003cp\u003eLinux version 2.6.9-22.ELsmp (\u003ca href=\"mailto:bhcompile@crowe.devel.redhat.com\"\u003ebhcompile@crowe.devel.redhat.com\u003c/a\u003e) (gcc version 3.4.4 20050721 (Red Hat 3.4.4-2)) #1 SMP Mon Sep 19 18:00:54 EDT 2005\u003c/p\u003e\n\u003cp\u003e** 2) [root@q1test01 ~]# uname -a **\u003c/p\u003e\n\u003cp\u003eLinux q1test01 2.6.9-22.ELsmp #1 SMP Mon Sep 19 18:00:54 EDT 2005 x86_64 x86_64 x86_64 GNU/Linux\u003c/p\u003e\n\u003cp\u003e** 3) [root@q1test01 ~]# uname -r **\u003c/p\u003e\n\u003cp\u003e2.6.9-22.ELsmp\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003e查看linux版本:\u003c/li\u003e\n\u003c/ol\u003e\n\u003col\u003e\n\u003cli\u003e登录到服务器执行 lsb_release -a ,即可列出所有版本信息,例如:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e** …\u003c/p\u003e"
September 1, 2011
Linux系统监控工具之vmstat详解
"\u003cp\u003evmstat是一个十分有用的Linux系统监控工具,使用vmstat命令可以得到关于进程、内存、内存分页、堵塞IO、traps及CPU活动的信息。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e一、前言\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e很显然从名字中我们就可以知道vmstat是一个查看虚拟内存(Virtual Memory)使用状况的工具,但是怎样通过vmstat来发现系统中的瓶颈呢?在回答这个问题前,还是让我们回顾一下Linux中关于虚拟内存相关内容。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e二、虚拟内存运行原理\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e在系统中运行的每个进程都需要使用到内存,但不是每个进程都需要每时每刻使用系统分配的内存空间。当系统运行所需内存超过实际的物理内存,内核会释放某些进程所占用但未使用的部分或所有物理内存,将这部分资料存储在磁盘上直到进程下一次调用,并将释放出的内存提供给有需要的进程使用。\u003c/p\u003e\n\u003cp\u003e在Linux内存管理中,主要是通过“调页Paging”和“交换Swapping”来完成上述的内存调度。调页算法是将内存中最近不常使用的页面换到磁盘上,把活动页面保留在内存中供进程使用。交换技术是将整个进程,而不是部分页面,全部交换到磁盘上。\u003c/p\u003e\n\u003cp\u003e分页(Page)写入磁盘的过程被称作Page-Out,分页(Page)从磁盘重新回到 …\u003c/p\u003e"
September 1, 2011
Linux主分区,扩展分区,逻辑分区的联系和区别
"\u003cp\u003e言归正传,在安装 CentOS5.3 的过程中,会遇到磁盘分区的界面,下拉式菜单中有 4 个选项,这时你不要选择默认,打开下拉式菜单,选择最后一项(翻译成中文意思是:建立自定义的分割模式)。然后选择右下角的确认,在下一个对话界面里依序建立 / 、 /home 及 swap ,完成后如图。确认设置后的分割区。\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2011/09/0512054353-0.jpg\"\u003e\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2011/09/0512054353-0.jpg\" alt=\"\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e为强调重点,把图中重要内容,再写一遍。\u003c/p\u003e\n\u003cp\u003e/ 根目录 ext3 hda1\u003c/p\u003e\n\u003cp\u003e/home 用户目录 ext3 hda2\u003c/p\u003e\n\u003cp\u003eSwap 交换分区 swap hda3\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e对 hda1 的解释:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ehd : IDE 硬盘。如果是 SCSI 硬盘,则为 sd ,这个只能记住,没有更好的办法。\u003c/p\u003e\n\u003cp\u003ea: : 第一块硬盘。如果是第二块硬盘,则为 b ,依此类推 c,d……\u003c/p\u003e\n\u003cp\u003e1 : 主分区。其中 1 , 2 , 3 , 4 都是主分区,从第 5 开始为逻辑分区,最大到 16\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e磁盘容量与主分区、扩展分区、逻辑分区的关系:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e硬盘的容量=主分区的容量+扩展分区的容量扩展分区的容量=各个逻辑分区的 …\u003c/p\u003e"
September 1, 2011
Linux(nginx)下安装awstats日志分析软件
"\u003cp\u003e这里用的是centos的系统,linux上的安装方法基本上都一样的.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e一.下载awstats软件\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e从地址可以下载,这里使用的是最新的7.0的版本\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e#cd /usr/local\n#wget \u003ca href=\"http://cdnetworks-kr-1.dl.sourceforge.net/project/awstats/AWStats/7.0/awstats-7.0.zip\"\u003ehttp://cdnetworks-kr-1.dl.sourceforge.net/project/awstats/AWStats/7.0/awstats-7.0.zip\u003c/a\u003e#unzip awstats-7.0.zip awstats\n#chmod +x /usr/local/awstats/tools/awstats_configure.pl\n#chmod +x /usr/local/awstats/wwwroot/cgi-bin/awstats.pl\n#chmod +x /usr/local/awstats/tools/awstats_buildstaticpages.pl\n#用来存放swstats的数据文件\n#mkdir /var/lib/awstats\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003e二.创建配置文件\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e#cd /usr/local/awstats/tools/\n#perl ./awstats_configure.pl\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e根据提 …\u003c/p\u003e"
September 1, 2011
Linux下如何查看 CPU 信息, 包括位数和多核信息
"\u003cp\u003e\u003cstrong\u003e查看当前操作系统内核信息\u003c/strong\u003e\n# uname -aLinux redcat 2.6.31-20-generic #58-Ubuntu SMP Fri Mar 12 05:23:09 UTC 2010 i686 GNU/Linux\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e查看当前操作系统发行版信息\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e#cat /etc/issue\u003c/p\u003e\n\u003cp\u003eUbuntu 9.10 n l\u003cstrong\u003e查看cpu型号\u003c/strong\u003e# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c\u003c/p\u003e\n\u003cp\u003e2 Intel(R) Core(TM)2 Duo CPU P8600 @ 2.40GHz\u003c/p\u003e\n\u003cp\u003e(看到有2个逻辑CPU, 也知道了CPU型号)\u003cstrong\u003e查看物理cpu颗数\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e# cat /proc/cpuinfo | grep physical | uniq -c2 physical id : 0\u003c/p\u003e\n\u003cp\u003e(说明实际上是1颗2核的CPU)\u003cstrong\u003e查看cpu运行模式\u003c/strong\u003e\u003c/p\u003e\n\u003ch1 id=\"getconf-long_bit32说明当前cpu运行在32bit模式下-但不代表cpu不支持64bit查看cpu是否支持64bitcat-proccpuinfo--grep-flags--grep--lm---wc-l2结果大于0-说明支持64bit计算-lm指long-mode-支持lm则是64bit查看cpu信息概要昨天看aix的时候刚发现的在ubuntu上竟然也有lscpuarchitecture-i686-架构686\"\u003egetconf LONG_BIT32(说明当前CPU运行在32bit模式下, 但不代表CPU不支持64bit)\u003cstrong\u003e查看cpu是否支持64bit\u003c/strong\u003e# cat /proc/cpuinfo | grep flags | …\u003c/h1\u003e"
September 1, 2011
linux 下如何查看和踢除正在登陆的其它用户
"\u003cp\u003e如何在linux下查看当前登录的用户,并且踢掉你认为应该踢掉的用户?\n请使用who这个命令来查看当前正在登录的用户\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[root@localhost http]# who\nroot tty1 Apr 9 13:17\nhttp pts/0 Apr 16 15:13 (192.168.8.235)\nhttp pts/1 Apr 16 15:13 (192.168.8.235)\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e注意:可能有朋友马上要叫出来了:“什么?!有3个用户在登录!我被黑了!”,呵呵,开玩笑了~~上面的消息告诉我们:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003etty\u003c/strong\u003e是指在任何一个虚拟控制台登录则产生一个tty,比如你插上显示器登录主机,就会增加一个tty.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003epts\u003c/strong\u003e是每一个远程连接都会产生的,比如我现在使用ftp客户端连接到主机上,主机就会产生一个pts,事实上上面的192.168.8.235就是我,那两个http就我的连接。\ntty和pts详见:\u003c/p\u003e\n\u003cp\u003e要踢出某个用户以及该用户运行的程序(很野蛮),请采用如下方法:\n比如:想踢除http这个用户和他的所有开启的程序执行下面命令\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003epkill -u http\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e注意:这个命令实际上很危险,要相当小心的执行!!\n说他危险的 …\u003c/p\u003e"
September 1, 2011
LINUX下判断CPU和系统是32位还是64位
"\u003cp\u003e\u003cstrong\u003e判断操作系统是32位还是64位的方法:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e输入如下命令:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e$ uname -a\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e输出:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ex86_64 GNU/Linux 表示64位内核\u003c/p\u003e\n\u003cp\u003ei386/i486/i586/i686 表示32位内核\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e判断Linux kernel是32位还是64位的方法:\u003c/p\u003e\n\u003cp\u003e输入如下命令:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e$ cat /proc/cpuinfo |grep flags\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e输出:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003elm(long mode) 表示64位CPU\u003c/p\u003e\n\u003cp\u003eProtoected 表示32位CPU\u003c/p\u003e\n\u003cp\u003eReal 表示16位CPU\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e==================================================================\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e在LINUX下怎样决断你的CPU是32位还是64位?\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e打入下面的命令\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003egrep flags /proc/cpuinfo\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e输出\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eflags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi …\u003c/p\u003e\u003c/blockquote\u003e"
August 31, 2011
linux 系统tty、pty和pts 的概念及区别
"\u003cp\u003e\u003cstrong\u003e基本概念:\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003etty(终端设备的统称):\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003etty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。\u003c/p\u003e\n\u003cp\u003e终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003epty(虚拟终端):\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e但是如果我们远程telnet到主机或使用xterm时不也需要一个终端交互么?是的,这就是虚拟终端pty(pseudo-tty)\u003c/p\u003e\n\u003col start=\"3\"\u003e\n\u003cli\u003epts/ptmx(pts/ptmx结合使用,进而实现pty):\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003epts(pseudo-terminal slave)是pty的实现方法,与ptmx(pseudo-terminal master)配合使用实现pty。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eLinux终端:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e在Linux系统的设备特殊文件目录/dev/下,终端特殊设备文件一般有以下几种:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1、串行端口终端(/dev/ttySn)\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e串 行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。有段时间这些串行端口设备通常 …\u003c/p\u003e"
August 31, 2011
为VMware Linux增加虚拟硬盘
"\u003cp\u003eVMware安装Linux的时候默认分配的空间是4GB,可能会不够,这个时候可以通过增加一块虚拟硬盘,将/usr或其他内容拷贝过去解决这个问题:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e总个操作过程可分为:\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e分区\u003c/li\u003e\n\u003cli\u003e格式化\u003c/li\u003e\n\u003cli\u003e挂载\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e三个过程.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e创建虚拟硬盘\u003c/strong\u003e\n1、关闭VM中正在运行的虚拟系统;\u003c/p\u003e\n\u003cp\u003e2、在虚拟系统名称上点右键-》Virtual Machine Settings;\n3、在Hardware页点“Add”-》Add a hard disk-》Create a new virtual disk-》SCSI(recommended)-》分配空间大小-》OK;\n4、可以看见Hardware中出现了一块新的硬盘Hard Disk 2。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e对虚拟硬盘进行分区和格式化\u003c/strong\u003e\n[root@cncmail data1]# fdisk -l ## 这里是查看目前系统上有几块硬盘\u003c/p\u003e\n\u003cp\u003eDisk /dev/sda: 36.4 GB, 36401479680 bytes\n255 heads, 63 sectors/track, 4425 cylinders\nUnits = cylinders of 16065 * 512 = 8225280 bytes …\u003c/p\u003e"
August 1, 2011
理解Linux系统负荷
"\u003cp\u003e\u003cstrong\u003e一、查看系统负荷\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e如果你的电脑很慢,你或许想查看一下,它的工作量是否太大了。\u003c/p\u003e\n\u003cp\u003e在Linux系统中,我们一般使用uptime命令查看(w命令和top命令也行)。(另外,它们在苹果公司的Mac电脑上也适用。)\u003c/p\u003e\n\u003cp\u003e你在终端窗口键入uptime,系统会返回一行信息。\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://blogstatic.haohtml.com/uploads/2011/08/3c61c58dd6bbd277cc8c71cabb97e277.png\" alt=\"bg2011073001\"\u003e\u003c/p\u003e\n\u003cp\u003e这行信息的后半部分,显示”load average”,它的意思是”系统的平均负荷”,里面有三个数字,我们可以从中判断系统负荷是大还是小。\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://blogstatic.haohtml.com/uploads/2011/08/b639ca5e9954b512d726cb480644fbdc.png\" alt=\"bg2011073003\"\u003e\u003c/p\u003e\n\u003cp\u003e为什么会有三个数字呢?你从手册中查到,它们的意思分别是1分钟、5分钟、15分钟内系统的平均负荷。\u003c/p\u003e\n\u003cp\u003e如果你继续看手册,它还会告诉你,当CPU完全空闲的时候,平均负荷为0;当CPU工作量饱和的时候,平均负荷为1。\u003c/p\u003e\n\u003cp\u003e那么很显然,”load average”的值越低,比如等于0.2或0.3,就说明电脑的工作量越小,系统负荷比较轻。\u003c/p\u003e\n\u003cp\u003e但是,什么时候能看出系统负荷比较重呢?等于1的时候,还是等于0.5或等于1.5的时候?如果1分钟、5分钟、15分钟三个值不一样,怎么办?\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e二、一个类比\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e判断系统负荷是否过重,必须理解load average的真正含义。下面,我根据” \u003ca href=\"http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages\"\u003eUnderstanding Linux …\u003c/a\u003e\u003c/p\u003e"
July 8, 2011
linux下 lvm 磁盘扩容
"\u003cp\u003e打算给系统装一个oracle,发现磁盘空间不足。在安装系统的时候我选择的是自动分区,系统就会自动以LVM的方式分区。为了保证系统后期的可用性,建议所有新系统安装都采用LVM,之后生产上的设备我也打算这样做。\u003c/p\u003e\n\u003cp\u003e参于LVM基本介绍与常用命令请参考:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2011/07/lvm-pic.bmp\"\u003e\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2011/07/lvm-pic.bmp\" alt=\"\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2011/07/lvm.jpg\"\u003e\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2011/07/lvm.jpg\" alt=\"lvm\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eLVM结构图\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e扩容之前的磁盘状况\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[root@localhost ~]# df -h\u003c/p\u003e\n\u003cp\u003e文件系统 容量 已用 可用已用%%挂载点\u003c/p\u003e\n\u003cp\u003e/dev/mapper/VolGroup-lv_root 5.3G 2.5G 2.6G 50% /\u003c/p\u003e\n\u003cp\u003etmpfs 538M 0 538M 0% /dev/shm\u003c/p\u003e\n\u003cp\u003e/dev/sda1 485M 30M 430M 7% /boot\u003c/p\u003e\n\u003cp\u003e[root@localhost ~]# fdisk -l\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eDisk /dev/sda: 8589 MB, 8589934592 bytes\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e……………\u003c/p\u003e\n\u003cp\u003eDevice Boot Start End Blocks Id System …\u003c/p\u003e\u003c/blockquote\u003e"
June 29, 2011
linux的vm相关参数介绍
"\u003col\u003e\n\u003cli\u003e保证linux有足够的物理内存,可以调整vm的如下参数\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003evm.min_free_kbytes=409600;//默认值是3797,保证物理内存有足够空闲空间,防止突发性换页\nvm.vfs_cache_pressure=200;//默认是100,增大这个参数设置了虚拟内存回收directory和i-node缓冲的倾向,这个值越大。越易回收\nvm.swappiness=40 //缺省60,减少这个参数会使系统尽快通过swapout不使用的进程资源来释放更多的物理内存\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e一般在rac的配置环境中配置这三个参数,可以防止换页引起节点短暂无响应,导致节点重启\u003c/strong\u003e\n2. 改善io系统的性能\novercommit_memory = 0\nvm.overcommit_ratio = 10 //默认值是50,用于虚拟内存的物理内存的百分比\nvm.dirty_ratio = 20 //默认值是40,为了保持稳定,持续的写入,把这个值调整的小一些,经验值是20\u003c/p\u003e\n\u003cp\u003evm.dirty_background_ratio //缺省数值是500,也就是5秒,如果系统要求稳定持续的写,可以适当降低该值,把峰值的写操作平均多 …\u003c/p\u003e"
June 23, 2011
详解Linux系统修改环境变量PATH路径的方法
"\u003cp\u003e**关于PATH的作用:\n** PATH说简单点就是一个字符串变量,当输入命令的时候LINUX会去查找PATH里面记录的路径。比如在根目录/下可以输入命令ls,在/usr目录下也可以输入ls,但其实ls这个命令根本不在这个两个目录下,事实上当你输入命令的时候LINUX会去/bin,/usr/bin,/sbin等目录下面去找你此时输入的命令,而PATH的值恰恰就是/bin:/sbin:/usr/bin:……。其中的冒号使目录与目录之间隔开。\u003c/p\u003e\n\u003chr\u003e\n\u003cp\u003e**关于新增自定义路径:\n** 现在假设你新安装了一个命令在/usr/locar/new/bin下面,而你又想像ls一样在任何地方都使用这个命令,你就需要修改环境变量PATH了,准确的说就是给PATH增加一个值/usr/locar/new/bin。你只需要一行bash命令export PATH=$PATH:/usr/locar/new/bin。这条命令的意思太清楚不过了,使PATH自增:/usr/locar/new/bin,既PATH=PATH+”:/usr/locar/new/bin”;通常的做法是把这行bash命令写到/root/.bashrc …\u003c/p\u003e"
June 15, 2011
Linux下的Memcache安装
"\u003cp\u003e服务器端主要是安装memcache服务器端,目前的最新版本是 memcached-1.3.0 。\n下载:http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz\n另外,Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent,libevent的最新版本是libevent-1.3。(如果你的系统已经安装了libevent,可以不用安装)\n官网: \u003ca href=\"http://www.monkey.org/~provos/libevent/\"\u003ehttp://www.monkey.org/~provos/libevent/\u003c/a\u003e\n下载: \u003ca href=\"http://www.monkey.org/~provos/libevent-1.3.tar.gz\"\u003ehttp://www.monkey.org/~provos/libevent-1.3.tar.gz\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e用wget指令直接下载这两个东西.下载回源文件后。\n1.先安装libevent。这个东西在配置时需要指定一个安装路径,即./configure –prefix=/usr;然后make;然后make install;\u003c/p\u003e\n\u003cp\u003e2.再安装memcached,只是需要在配置时需要指定libevent的安装路径即./configure –with-libevent=/usr;然 …\u003c/p\u003e"
June 15, 2011
Redis在Windows,linux平台下的安装配置
"\u003cp\u003e为了方便查阅资料,特将网上搜索到的Redis相关安装配置进行归档整理:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003ewindow平台Redis安装\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e下载地址: \u003ca href=\"http://code.google.com/p/servicestack/wiki/RedisWindowsDownload\"\u003ehttp://code.google.com/p/servicestack/wiki/RedisWindowsDownload\u003c/a\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eRedis文件夹有以下几个文件\u003c/p\u003e\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003eredis-server.exe:服务程序\u003c/p\u003e\n\u003cp\u003eredis-check-dump.exe:本地数据库检查\u003c/p\u003e\n\u003cp\u003eredis-check-aof.exe:更新日志检查\u003c/p\u003e\n\u003cp\u003eredis-benchmark.exe:性能测试,用以模拟同时由N个客户端发送M个 SETs/GETs 查询 (类似于 Apache 的ab 工具).\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e指定redis的配置文件,如没有指定,则使用默认设置\u003c/p\u003e\n\u003cp\u003e解压目录:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ed:\u0026gt;redis-server.exe\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003eredis-cli.exe:命令行客户端,测试用.windows下没有redis.conf配置文件.\u003c/p\u003e\n\u003cp\u003e解压目录:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ed:\u0026gt;redis-cli.exe -h 127.0.0.1 -p 6379\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e使用方法有两种:一种是直接使用redis-cli.exe 后面加操作,另一种是直接输 …\u003c/p\u003e"
June 15, 2011
Linux环境变量的设置和查看方法
"\u003cp\u003e\u003cstrong\u003e1. 显示环境变量HOME\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e$ echo $HOME\u003c/p\u003e\n\u003cp\u003e/home/redbooks\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e2. 设置一个新的环境变量hello\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e$ export HELLO=”Hello!”\u003c/p\u003e\n\u003cp\u003e$ echo $HELLO\u003c/p\u003e\n\u003cp\u003eHello!\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e3. 使用env命令显示所有的环境变量\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e$ env\u003c/p\u003e\n\u003cp\u003eHOSTNAME=redbooks.safe.org\u003c/p\u003e\n\u003cp\u003ePVM_RSH=/usr/bin/rsh\u003c/p\u003e\n\u003cp\u003eShell=/bin/bash\u003c/p\u003e\n\u003cp\u003eTERM=xterm\u003c/p\u003e\n\u003cp\u003eHISTSIZE=1000\u003c/p\u003e\n\u003cp\u003e…\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e4. 使用set命令显示所有本地定义的Shell变量\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e$ set\u003c/p\u003e\n\u003cp\u003eBASH=/bin/bash\u003c/p\u003e\n\u003cp\u003eBASH_VERSINFO=([0]=”2″[1]=”05b”[2]=”0″[3]=”1″[4]=”release”[5]=”i386-redhat-linux-gnu”)\u003c/p\u003e\n\u003cp\u003eBASH_VERSION=’2.05b.0(1)-release’\u003c/p\u003e\n\u003cp\u003eCOLORS=/etc/DIR_COLORS.xterm\u003c/p\u003e\n\u003cp\u003eCOLUMNS=80\u003c/p\u003e\n\u003cp\u003eDIRSTACK=()\u003c/p\u003e\n\u003cp\u003eDISPLAY=:0.0\u003c/p\u003e\n\u003cp\u003e…\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e5. 使用unset命令来清除环境变量\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eset可以设置某个环境变量的值。清除环境变 …\u003c/p\u003e"
June 15, 2011
Linux下使用Iptraf进行网络流量的分析
"\u003cp\u003e下面的教程我个人安装的时候,总是失败,在/usr/local/bin目录里没有iptraf这个文件,没有办法直接用\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003eyum -y install iptraf\u003c/strong\u003e\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e命令安装成功了.\u003c/p\u003e\n\u003cp\u003eIptraf是一款Linux环境下,监控网络流量的一款绝佳的免费小软件,特别是安装到防火墙上,与Iptables一起工作,监控流经防火墙的网络异常,效果非常好。\u003c/p\u003e\n\u003cp\u003e我的安装配置环境是redhat 9.0\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e一、软件下载\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eIptraf的最新版本是2.7.0,可以从下面的地址下载\u003ca href=\"ftp://iptraf.seul.org/pub/Iptraf/\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e二、安装环境需要\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e— gcc 2.7.2.3 or later\u003c/p\u003e\n\u003cp\u003e— GNU C (glibc) development library 2.1 or later\u003c/p\u003e\n\u003cp\u003e— ncurses development libraries 4.2 or later\u003c/p\u003e\n\u003cp\u003e可以在Linux下执行:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e# rpm -qa | grep gcc\u003c/p\u003e\n\u003cp\u003e# rpm -qa | grep glibc\u003c/p\u003e\n\u003cp\u003e# rpm -qa | grep ncurses\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e如果没有,则请安装。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e三、安装\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e从网站下载软件包,将下载得到的Iptraf-2.7.0.tar.gz上传到你所要安装的机器上,我 …\u003c/p\u003e"
June 9, 2011
利用PHP操作Linux消息队列完成进程间通信
"\u003cp\u003e当我们开发的系统需要使用多进程方式运行时,进程间通信便成了至关重要的环节。消息队列(message queue)是Linux系统进程间通信的一种方式。\u003c/p\u003e\n\u003cp\u003e关于Linux系统进程通信的概念及实现可查看: \u003ca href=\"http://www.ibm.com/developerworks/cn/linux/l-ipc/\"\u003ehttp://www.ibm.com/developerworks/cn/linux/l-ipc/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e关于Linux系统消息队列的概念及实现可查看: \u003ca href=\"http://www.ibm.com/developerworks/cn/linux/l-ipc/\"\u003ehttp://www.ibm.com/developerworks/cn/linux/l-ipc/part4/\u003c/a\u003e\nPHP的sysvmsg模块是对Linux系统支持的System V IPC中的System V消息队列函数族的封装。我们需要利用sysvmsg模块提供的函数来进进程间通信。先来看一段示例代码_1:\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e01``\u0026lt;?php\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e02\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e03``$message_queue_key\u003c/code\u003e \u003ccode\u003e= \u003c/code\u003e \u003ccode\u003eftok\u003c/code\u003e \u003ccode\u003e(\u003c/code\u003e \u003ccode\u003e__FILE__\u003c/code\u003e \u003ccode\u003e, \u003c/code\u003e \u003ccode\u003e'a'\u003c/code\u003e \u003ccode\u003e);\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e04\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e05``$message_queue\u003c/code\u003e \u003ccode\u003e= msg_get_queue(\u003c/code\u003e \u003ccode\u003e$message_queue_key\u003c/code\u003e \u003ccode\u003e, 0666);\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e06``var_dump(\u003c/code\u003e \u003ccode\u003e$message_queue\u003c/code\u003e \u003ccode\u003e);\u003c/code\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003e07 …\u003c/code\u003e\u003c/p\u003e"
June 1, 2011
iostat来对linux硬盘IO性能进行检测
"\u003cp\u003e近期公司安装了几台DELL PE2650和2850的服务器,统一安装的是RHLE5.132位系统,而服务器的SCSI硬盘都统一做了raid1。公司老总要求对硬盘IO作统一检测报告,在Linux下找了许多工具,发现最实用的还是iostat,这个需要先安装sysstat ,即\u003cstrong\u003eyum -y install sysstat\u003c/strong\u003e;公司内部的yum服务器搭建这个不是本文的重点,这里不作详细叙述。\u003c/p\u003e\n\u003cp\u003e# iostat -x 1 10\nLinux 2.6.18-92.el5xen 03/01/2010\navg-cpu: %user %nice %system %iowait %steal %idle\n1.10 0.00 4.82 39.54 0.07 54.46\nDevice: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util\nsda 0.00 3.50 0.40 2.50 5.60 48.00 18.48 0.00 0.97 …\u003c/p\u003e"
June 1, 2011
Linux IO性能测试
"\u003cp\u003e近来想了解一下开发环境的IO性能,分别用dd/orion/iozone/bonnie++四种工具测试了一下\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e开发环境系统配置如下:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eIntel SR1625 server, 2 CPU, 32GB内存, 用主板自带卡做了raid1+0,8个7200转SATA硬盘\u003c/p\u003e\n\u003cp\u003e操作系统是RHEL 5.3 64位\u003c/p\u003e\n\u003cp\u003e因为物理内存是32GB,因此整个过程都选用了60GB+的数据量来测试,以避免cache的影响\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1. 首先用自带的dd命令先测一下, 块大小为8k\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003edd只能提供一个大概的测试结果,而且是连续IO而不是随机IO\u003c/p\u003e\n\u003cp\u003e读测试\u003c/p\u003e\n\u003cp\u003etime dd if=/dev/sda2 f=/dev/null bs=8k count=8388608\u003c/p\u003e\n\u003cp\u003e8388608+0 records in\u003c/p\u003e\n\u003cp\u003e8388608+0 records out\u003c/p\u003e\n\u003cp\u003e68719476736 bytes (69 GB) copied, 516.547 seconds, 133 MB/s\u003c/p\u003e\n\u003cp\u003ereal 8m36.926s\u003c/p\u003e\n\u003cp\u003euser 0m0.117s\u003c/p\u003e\n\u003cp\u003esys 0m55.216s\u003c/p\u003e\n\u003cp\u003e写测试\u003c/p\u003e\n\u003cp\u003etime dd if=/dev/zero …\u003c/p\u003e"
April 11, 2011
linux CentOS中top命令参数说明
"\u003cp\u003e先来一些CentOS(Linux)的基础知识:用top命令查看CPU使用率\u003c/p\u003e\n\u003cp\u003eCentOS 是 RHEL(Red Hat Enterprise Linux)源代码再编译的产物,而且在 RHEL 的基础上修正了不少已知的 Bug ,相对于其他 Linux 发行版,其稳定性值得信赖。\u003c/p\u003e\n\u003cp\u003e在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要。在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况。运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式 — 用基于 top 的命令,可以控制显示方式等等。退出 top 的命令为 q (在 top 运行中敲 q 键一次)。\u003c/p\u003e\n\u003cp\u003e在命令行中输入 “top” 即可启动 top ,运行后如下图所示:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2011/04/centos_top.gif\"\u003e\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2011/04/centos_top.gif\" alt=\"\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e如上图所示,top 的全屏对话模式可分为3部分:\u003cstrong\u003e系统信息栏\u003c/strong\u003e、\u003cstrong\u003e命令输入栏\u003c/strong\u003e、\u003cstrong\u003e进程列表栏\u003c/strong\u003e。\u003c/p\u003e\n\u003cp\u003e第一部分 — 最上部的 系统信息栏 :\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e第一行(top):\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e“00:11:04”为系统当前时刻;\u003c/p\u003e\n\u003cp\u003e“3:35”为系统启动后到现在的运作时间;\u003c/p\u003e\n\u003cp\u003e“2 users”为当前登录到系统的用户,更确切的说是登录到用户 …\u003c/p\u003e"
April 11, 2011
libiconv.so.2: cannot open shared object file解决办法
"\u003cp\u003e\u003cstrong\u003e解决办法如下:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e1.在/etc/ld.so.conf中加一行/usr/local/lib,\u003c/p\u003e\n\u003cp\u003e2.然后运行/sbin/ldconfig,文件解决,没有报错了~~\u003c/p\u003e"
April 7, 2011
PHP Warning: cannot restore segment prot after reloc: Permission denied的解决办法
"\u003cp\u003eFailed loading /usr/local/Zend/lib/Optimizer-3.3.3/php-5.2.x/ZendOptimizer.so: /usr/local/Zend/lib/Optimizer-3.3.3/php-5.2.x/ZendOptimizer.so: cannot restore segment prot after reloc: Permission denied\u003c/p\u003e\n\u003cp\u003e原来这是SELinux搞的鬼,解决办法有如下两个\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1. 使用chcon 命令\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e示例: chcon -t texrel_shlib_t /usr/local/Zend/lib/Optimizer-3.3.3/php-5.2.x/ZendOptimizer.so\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e2. 禁止掉SELinux\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e更改/etc/sysconfig/selinux 文件的内容为 SELINUX=disabled\u003c/p\u003e\n\u003cp\u003e这个GD库的问题,在装好后启动apache的时候,还会提示php库的问题,用上面的同样方法处理即可.\u003c/p\u003e"
April 5, 2011
Linux环境下PCRE库的使用
"\u003cp\u003e今天下载了PCRE的正则表达式库,应用在Linux环境下的C语言编程中。\u003c/p\u003e\n\u003cp\u003e调用方法:\u003c/p\u003e\n\u003cp\u003e1.下载PCRE库:\u003ca href=\"ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/\"\u003e\u003cstrong\u003eftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/\u003c/strong\u003e\u003c/a\u003e,版本是7.8;\u003c/p\u003e\n\u003cp\u003e2.解压后执行configure,而后make,make install,可配置后动态链接库;\u003c/p\u003e\n\u003cp\u003e3.写了个测试的例子:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e#include\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e#include\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eint main()\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e{\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003epcre *re;\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003econst char *error;\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eint erroffset;\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eint rc;\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eint ovector[30];\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ere = pcre_compile(“some”, 0, \u0026amp;error, \u0026amp;erroffset, NULL);\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003erc = pcre_exec(re, NULL, “some string”, 11, 0, 0, ovector, 30);\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eprintf(“%d\\n”, rc);\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ereturn 0;\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e}\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e4.gcc -o test test.c -lpcre …\u003c/p\u003e"
March 31, 2011
Linux提交命令至后台运行
"\u003cp\u003e我经常在putty里工作,有时候如果一个命令执行太长,不得已,我得开两个窗口,如果事情再多,可能开四个五个,不过有的ssh登陆工具可以开多个窗口,但难免会出点乱子.那么我们可以把命令隐藏再后台执行,使用linux下命令 “\u0026amp;” 这个倒霉的符号.\u003c/p\u003e\n\u003cp\u003e比如我们要执行一个命令,(暂时没想到执行时间N长的命令,假设一个shell) test.sh , 现在提交并隐藏在后台\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e$./test.sh \u0026raquo; test.log \u0026amp;\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e意思是,执行test.sh 反馈的结构输送至 test.log , \u0026amp;表示这个命令提交至后台执行.\u003c/p\u003e\n\u003cp\u003e执行后,返回一个进程号,可以用ps来查看.\u003c/p\u003e\n\u003cp\u003e这样,我们可以连续在同一个终端窗口上运行多个持续的命令.\u003c/p\u003e\n\u003cp\u003e然后,问题又来.我们运行这些命令至后台后,如果想退出终端窗口,那么后台的命令也随之中断.我们得想办法让进程持续运行.这里得使用此命令 nohup\u003c/p\u003e\n\u003cp\u003e重新执行上边的操作,那么我们应该这样执行\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e$nohup ./test.sh \u0026raquo; test.log\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e然后敲logout,放心,再登陆试试ps,进程依然存在!\u003c/p\u003e\n\u003cp\u003e对于nohup命令的介绍 …\u003c/p\u003e"
March 31, 2011
iftop来查看linux的即时流量
"\u003cp\u003e\u003cstrong\u003e关于 Iftop\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eiftop 是类似于top的实时流量监控工具。主要用来显示本机网络流量情况及各相互通信的流量集合,如单独同那台机器间的流量大小,非常适合于代理服务器和iptables服务器使用\u003c/p\u003e\n\u003cp\u003e官方网站:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e安装iftop\u003c/strong\u003e\n**安装方法1、编译安装\n**\n如果采用编译安装可以到iftop官网下载最新的源码包。\u003c/p\u003e\n\u003cp\u003e安装前需要已经安装好基本的编译所需的环境,比如make、gcc、autoconf等。安装iftop还需要安装libpcap和libcurses。\u003c/p\u003e\n\u003cp\u003eCentOS上安装所需依赖包:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eyum install flex byacc libpcap ncurses ncurses-devel libpcap-devel\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003eDebian上安装所需依赖包:\u003c/p\u003e\n\u003cp\u003eapt-get install flex byacc libpcap0.8 libncurses5\u003c/p\u003e\n\u003cp\u003e下载iftop\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ewget http://www.ex-parrot.com/pdw/iftop/download/iftop-0.17.tar.gz\ntar zxvf iftop-0.17.tar.gz\ncd iftop-0.17 …\u003c/code\u003e\u003c/pre\u003e"
March 4, 2011
Linux下cache内存释放
"\u003cp\u003e/proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段.也就是说可以通过修改/proc中的文 件,来对当前kernel的行为做出调整.那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存.操作如下:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[root@server test]# cat /proc/sys/vm/drop_caches\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e首先,/proc/sys /vm/drop_caches的值,默认为0\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[root@server test]# sync\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e手动执行sync命令(描述:sync 命令运行 sync 子例程。如果必须停止系统,则运行 sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件)\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[root@server test]# echo 3 \u0026gt; /proc/sys/vm/drop_caches\n[root@server test]# cat /proc/sys/vm/drop_caches\n3\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e …\u003c/p\u003e"
January 22, 2011
第 7 章进程控制开发
"\u003cp\u003e本章目标\u003c/p\u003e\n\u003cp\u003e文件是 Linux 中最常见最基础的操作对象,而进程则是系统调度的单位,在上一章学习了文件I/O 控制之后,本章主要讲解进程控制开发部分,通过本章的学习,读者将会掌握以下内容。\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e掌握进程相关的基本概念\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e掌握 Linux 下的进程结构\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e掌握 Linux 下进程创建及进程管理\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e掌握 Linux下进程创建相关的系统调用\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e掌握守护进程的概念\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e掌握守护进程的启动方法\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e掌握守护进程的输出及建立方法\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e学会编写多进程程序\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e学会编写守护进程\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e7.1 Linux 下进程概述\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e7.1.1 进程相关基本概念\u003c/p\u003e\n\u003cp\u003e1.进程的定义\u003c/p\u003e\n\u003cp\u003e进程的概念首先是在60年代初期由MIT的Multics系统和IBM的TSS/360系统引入的。\u003c/p\u003e\n\u003cp\u003e经过了40 多年的发展,人们对进程有过各种各样的定义。现列举较为著名的几种。\u003c/p\u003e\n\u003cp\u003e(1)进程是一个独立的可调度的活动(E. Cohen,D. Jofferson)\u003c/p\u003e\n\u003cp\u003e(2)进程是一个抽象实体,当它执行某个任务时,将要分配和释放各种资源(P. Denning)\u003c/p\u003e\n\u003cp\u003e(3)进程是可以并行执行的计算部分。(S. E. Madnick,J. T. Donovan) …\u003c/p\u003e"
January 22, 2011
6.5.2 文件读写
"\u003cp\u003e\u003cstrong\u003e1.读文件\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e(1)fread函数说明\u003c/p\u003e\n\u003cp\u003e在文件流打开之后,可对文件流进行读写等操作,其中读操作的函数为fread。\u003c/p\u003e\n\u003cp\u003e(2)fread函数格式\u003c/p\u003e\n\u003cp\u003efread函数格式如表6.18所示。\u003c/p\u003e\n\u003cp\u003e表6.18 fread函数语法要点\u003c/p\u003e\n\u003cp\u003e所需头文件 #include\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e函数原型\u003c/strong\u003e size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream)\u003c/p\u003e\n\u003cp\u003eptr:存放读入记录的缓冲区\u003c/p\u003e\n\u003cp\u003esize:读取的记录大小\u003c/p\u003e\n\u003cp\u003enmemb:读取的记录数\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e函数传入值\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003estream:要读取的文件流\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e函数返回值\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e成功:返回实际读取到的nmemb数目\u003c/p\u003e\n\u003cp\u003e失败:EOF\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e2.写文件\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e(1)fwrite函数说明\u003c/p\u003e\n\u003cp\u003efwrite函数是用于对指定的文件流进行写操作。\u003c/p\u003e\n\u003cp\u003e(2)fwrite函数格式\u003c/p\u003e\n\u003cp\u003efwrite函数格式如表6.19 所示。\u003c/p\u003e\n\u003cp\u003e表6.19 fwrite函数语法要点\u003c/p\u003e\n\u003cp\u003e所需头文件#include\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e函数原型\u003c/strong\u003e size_t fwrite(const void * ptr,size_t size,size_t nmemb,FILE * stream)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e函数传入值ptr\u003c/strong\u003e:存放写入记录的缓冲区\u003c/p\u003e\n\u003cp\u003esize:写 …\u003c/p\u003e"
January 22, 2011
6.5 标准 I/O 开发
"\u003cp\u003e本章前面几节所述的文件及I/O 读写都是基于文件描述符的。这些都是基本的I/O 控制,是不带缓存的。而本节所要讨论的I/O 操作都是基于流缓冲的,它是符合ANSI C的标准I/O处理,这里有很多函数读者已经非常熟悉了(如printf、scantf 函数等),因此本节中仅简要介绍最主要的函数。\u003c/p\u003e\n\u003cp\u003e标准 I/O 提供流缓冲的目的是尽可能减少使用read和write调用的数量。标准I/O 提供了3 种类型的缓冲存储。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e· 全缓冲\u003c/strong\u003e。在这种情况下,当填满标准I/O 缓存后才进行实际I/O 操作。对于驻在磁盘上的文件通常是由标准I/O 库实施全缓冲的。在一个流上执行第一次I/O 操作时,通常调用malloc就是使用全缓冲。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e· 行缓冲\u003c/strong\u003e。在这种情况下,当在输入和输出中遇到新行符时,标准I/O 库执行I/O 操作。\n这允许我们一次输出一个字符(如fputc 函数),但只有写了一行之后才进行实际I/O 操作。\n当流涉及一个终端时(例如标准输入和标准输出),典型地使用行缓冲。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e· 不带缓冲\u003c/strong\u003e。标准I/O库不对字符进行缓冲。如果用标准I/O函数写若干字符到不带缓冲的流中,则相当于用write系统的用函数将这些字 …\u003c/p\u003e"
January 21, 2011
6.2 Linux 中文件及文件描述符概述
"\u003cp\u003e正如第1 章中所述,在Linux 中对目录和设备的操作都等同于文件的操作,因此,大大简化了系统对不同设备的处理,提高了效率。Linux 中的文件主要分为4 种:普通文件、目录文件、链接文件和设备文件。\u003c/p\u003e\n\u003cp\u003e那么,内核如何区分和引用特定的文件呢?这里用到的就是一个重要的概念——文件描述符。对于Linux 而言,所有对设备和文件的操作都使用文件描述符来进行的。文件描述符是一个非负的整数,它是一个索引值,并指向内核中每个进程打开文件的记录表。当打开一个现存文件或创建一个新文件时,内核就向进程返回一个文件描述符;当需要读写文件时,也需要把文件描述符作为参数传递给相应的函数。\u003c/p\u003e\n\u003cp\u003e通常,一个进程启动时,都会打开3 个文件:标准输入、标准输出和标准出错处理。这3 个文件分别对应文件描述符为0、1 和2(也就是宏替换STDIN_FILENO、STDOUT_FILENO和STDERR_FILENO,鼓励读者使用这些宏替换)。\u003c/p\u003e\n\u003cp\u003e基于文件描述符的I/O 操作虽然不能移植到类Linux 以外的系统上去(如Windows),但它往往是实现某些I/O操作的惟一途径,如Linux中低级文件操作函数、多 …\u003c/p\u003e"
January 15, 2011
linux下which、whereis、locate、find 命令的区别
"\u003cp\u003e我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索。这些是从网上找到的资料,因为有时很长时间不会用到,当要用的时候经常弄混了,所以放到这里方便使用。\nwhich 查看可执行文件的位置\nwhereis 查看文件的位置\nlocate 配 合数据库查看文件位置\nfind 实际搜寻硬盘查询文件名称\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1、which\u003c/strong\u003e\n语法:\n[root@redhat ~]# which 可执行文件名称\n例如:\n[root@redhat ~]# which passwd\n/usr/bin/passwd\nwhich是通过 PATH环境变量到该路径内查找可执行文件,所以基本的功能是寻找可执行文件\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e2、whereis\u003c/strong\u003e\n语法:\n[root@redhat ~]# whereis [-bmsu] 文件或者目录名称\n参数说 明:\n-b : 只找二进制文件\n-m: 只找在说明文件manual路径下的文件\n-s : 只找source源文件\n-u : 没有说明文档的文件\n例如:\n[root@redhat ~]# whereis passwd …\u003c/p\u003e"
January 11, 2011
Linux对象存储文件系统的技术架构研究
"\u003cp\u003e随着高性能计算由传统的主机方式向网络化集群演变,传统的基于主机的存储架构已逐渐向网络化存储发展,计算和存储分离的趋势越来越明显。针对 SAN 和 NAS 的不足,国际上已开展针对 Linux 集群的新型文件系统――对象存储文件系统的研究,本文重点论述了存储对象文件系统的架构、技术特点,并针对Lustre 对象存储文件系统进行了初步测试,结果表明对象存储文件系统在可扩展性、性能、易用性等方面都有显著提高,随着网络化存储技术的不断成熟,对象存储文件系统将成为重要的发展方向。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e一、引言\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e高性能计算已由传统的主机方式逐渐向集群方式演变,如TOP500中,1998年只有2台系统是集群方式,而到2003年已有208台为集群系统。随着高性能计算体系结构的发展变化,传统的基于主机的存储架构已成为新的瓶颈,不能满足集群系统的需求。集群的存储系统必须有效解决两个主要问题:(1)提供共享访问数据,便于集群应用程序的编写和存储的负载均衡;(2)提供高性能的存储,在I/O级和数据吞吐率方面能满足成百上千台规模的Linux集群服务器聚合访问的需求。目前,网络化存储已成为解决集群系统高性能存储的有效技术途径。\u003c/p\u003e\n\u003cp\u003e国际 …\u003c/p\u003e"
December 28, 2010
linux修改用户主目录的方法
"\u003cp\u003e我有两种办法,仅供参考。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e第一:修改/etc/passwd文件\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003evi /etc/passwd\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e找到要修改的用户那几行,修改掉即可。此法很暴力,建议慎用。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e第二:usermod命令\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eusermod -d /usr/newfolder -u uid\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e-u后面一定要接uid啊,不是username附:usermod详细参数\u003c/p\u003e\n\u003cp\u003e**语 法:**usermod [-LU][-c \u0026lt;备注\u0026gt;][-d \u0026lt;登入目录\u0026gt;][-e \u0026lt;有效期限\u0026gt;][- f \u0026lt;缓冲天数\u0026gt;][-g \u0026lt;群组\u0026gt;][-G \u0026lt;群组\u0026gt;][-l \u0026lt;帐号名称\u0026gt;][-s ][-u ] [用户帐号]\u003c/p\u003e\n\u003cp\u003e**补充说明:**usermod可用来修改用户帐号的各项设定。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e参 数:\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e-c\u0026lt;备注\u0026gt; 修改用户帐号的备注文字。\n-d登入目录\u0026gt; 修改用户登入时的目录。\n-e\u0026lt;有效期限\u0026gt; 修改帐号的有效期限。\n-f\u0026lt;缓冲天数\u0026gt; 修改在密码过期后多少天即关闭该帐号。\n-g\u0026lt;群组\u0026gt; 修改用户所属的群组。\n-G\u0026lt;群 …\u003c/p\u003e\u003c/blockquote\u003e"
December 17, 2010
如何调整Linux磁盘分区的大小
"\u003cp\u003e在使用linux的过程中, 有时会出现因为安装系统时分区不当导致有的分区空间不足,而有的分区空间过剩的情况.比如: 我在安装系统时给/usr/local分配器了5G的空间,但使用一段过程後发现, /usr/local最多只用到了1G.这样可以将/usr/local大小调整为1G. 空出4G留作他用.本文归纳了在不破快文件系统数据的前提下对文件系统大小进行调整的方法.这里采用的是”拆东墙, 补西墙”的方法.\u003c/p\u003e\n\u003cp\u003e当然, 如果你的磁盘中有未分区的空闲空间, 你就不用减小某个分区的空间了.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e准备工作\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e(一) 备份\u003c/p\u003e\n\u003cp\u003e首先组好备份要更改的分区中的文件. 对磁盘的操作也许会导致数据的丢失. 开始工作之前最好将重要的数据保存到別的分区.\u003c/p\u003e\n\u003cp\u003e(二) 获取相关信息.\u003c/p\u003e\n\u003cp\u003e1, 运行 $ df , 查看文件系统信息. 记下你想要调整的分区对應的挂载点和设备文件.\u003c/p\u003e\n\u003cp\u003e这一步是为了查看/usr/local对應/dev/中的哪个设备文件. 本文以/dev/hda7为例.\u003c/p\u003e\n\u003cp\u003e2, 运行 # sudo fdisk /dev/sda . 进入fdisk , 按下p, 查看磁盘分区信息. 记下/dev/sda8的起始柱面号, 终止柱 …\u003c/p\u003e"
December 16, 2010
linux ulimit调优
"\u003cp\u003e1,说明:\nulimit用于shell启动进程所占用的资源.\n2,类别:\nshell内建命令\n3,语法格式:\nulimit [-acdfHlmnpsStvw] [size]\n\u003cstrong\u003e4,参数介绍:\u003c/strong\u003e\n-H 设置硬件资源限制.\n-S 设置软件资源限制.\n-a 显示当前所有的资源限制.\n-c size:设置core文件的最大值.单位:blocks\n-d size:设置数据段的最大值.单位:kbytes\n-f size:设置创建文件的最大值.单位:blocks\n-l size:设置在内存中锁定进程的最大值.单位:kbytes\u003c/p\u003e\n\u003cp\u003e-m size:设置可以使用的常驻内存的最大值.单位:kbytes\n-n size:设置内核可以同时打开的文件描述符的最大值.单位:n\n-p size:设置管道缓冲区的最大值.单位:kbytes\n-s size:设置堆栈的最大值.单位:kbytes\n-t size:设置CPU使用时间的最大上限.单位:seconds\n-v size:设置虚拟内存的最大值.单位:kbytes\n5.举例\n在Linux下写程序的时候,如果程序比较大,经常会遇到“段错误” (segmentation …\u003c/p\u003e"
December 10, 2010
cat /proc/loadavg 命令详解
"\u003cp\u003e/proc文件系统是一个虚拟的文件系统,不占用磁盘空间,它反映了当前操作系统在内存中的运行情况,查看/proc下的文件可以聊寄到系统的运行状态。\u003c/p\u003e\n\u003cp\u003ecat /proc/loadavg是查看系统平均负载的命令,输出结果:\n0.18 0.26 0.25 2/251 20320\u003c/p\u003e\n\u003cp\u003e前三个数字是1、5、15分钟内的平均进程数(有人认为是系统负荷的百分比,其实不然,有些时候可以看到200甚至更多)。\u003c/p\u003e\n\u003cp\u003e第四个值的分子是正在运行的进程数,分母是进程总数,最后一个是最近运行的进程ID号。\u003c/p\u003e\n\u003cp\u003e这里的平均负载也就是可运行的进程的平均数。\u003c/p\u003e\n\u003cp\u003efrom proc(5) manual page:\u003c/p\u003e\n\u003cp\u003e/proc/loadavg\nThe first three fields in this file are load average figures giving the number of jobs in the run queue (state R) or waiting\nfor disk I/O …\u003c/p\u003e"
December 2, 2010
Linux服务器安装后的优化
"\u003cp\u003e我们的服务器并不是安装完成后就可直接托管到机房了,而是需要进行一系列的优化配置和安全配置等\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1,关闭不需要的服务\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e这个应该很容易理解的,凡是我们的系统不需要的服务,一概关闭,这样一个好处是减少内存和CPU时间的占用,另一个好处相对可以提高安全性那么哪些服务是肯定要保留的呢?\n在linux机器上通常有四项服务是必须保留的\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eiptables\u003c/code\u003e\nlinux下强大的防火墙,只要机器需要连到网上,哪里离得开它\n\u003ccode\u003enetwork\u003c/code\u003e\nlinux机器的网络,如果不上网可以关闭,只要上网当然要打开它\n\u003ccode\u003esshd\u003c/code\u003e\n这是openssh server,如果你的机器不是本地操作,而是托管到IDC机房,\n那么访问机器时需要通过这个sshd服务进行\n\u003ccode\u003esyslog\u003c/code\u003e\n这是linux系统的日志系统,必须要有,否则机器出现问题时会找不到原因\u003c/p\u003e\n\u003cp\u003e除了这四项必需的服务之外,其他的服务需要保留哪些呢?\n这时就可以根据系统的用途而定,比如:数据库服务器,就需要启用mysqld(或oracle)\nweb服务器,就需要启用apache\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e2,关闭不需要的tty\u003c/strong\u003e\n请编辑你的/etc/inittab\n找到如下一段: …\u003c/p\u003e"
December 2, 2010
Linux常用信息查看命令
"\u003cp\u003e\u003cstrong\u003e系统\u003c/strong\u003e\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e# uname -a # 查看内核/操作系统/CPU信息\n# head -n 1 /etc/issue # 查看操作系统版本\n# cat /proc/cpuinfo # 查看CPU信息\n# hostname # 查看计算机名\n# lspci -tv # 列出所有PCI设备\n# lsusb -tv # 列出所有USB设备\n# lsmod # 列出加载的内核模块\n# env # 查看环境变量\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e\u003cstrong\u003e资源\u003c/strong\u003e\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e# free -m # 查看内存使用量和交换区使用量\n# df -h # 查看各分区使用情况\n# du -sh \u0026lt;目录名\u0026gt; # 查看指定目录的大小\n# grep MemTotal /proc/meminfo # 查看内存总量\n# grep MemFree /proc/meminfo # …\u003c/code\u003e\u003c/pre\u003e"
December 2, 2010
Linux网管必备的几个命令
"\u003cp\u003e\u003cstrong\u003e一、uptime\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e**\n** **** Uptime命令的显示结果包括服务器已经运行了多长时间,有多少登陆用户和对服务器性能的总体评估(load average)。load average值分别记录了上个1分钟,5分钟和15分钟间隔的负载情况,load average不是一个百分比,而是在队列中等待执行的进程的数量。如果进程要求CPU时间被阻塞(意味着CPU没有时间处理它),load average值将增加。另一方面,如果每个进程都可以立刻得到访问CPU的时间,这个值将减少。\u003c/p\u003e\n\u003cp\u003eUP kernel下的load average的最佳值是1,这说明每个进程都可以立刻被CPU处理,当然,更低不会有问题,只说明浪费了一部分的资源。但在不同的系统间这个值也是不同的,例如一个单CPU的工作站,load average为1或者2都是可以接受的, \u003cstrong\u003e而在一个多CPU的系统中这个值应除以物理CPU的个数\u003c/strong\u003e,假设CPU个数为4,而load average为8或者10,那结果也是在2多点而已。 \u003ca href=\"http://blog.licess.org/uploads/200904/0.jpg\"\u003e\u003cimg src=\"http://blog.licess.org/uploads/200904/0.jpg\" alt=\"点击在新窗口中浏览此图片\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e你可以使用uptime判断一个性能问题是出现在服务器上还是网络上。例如,如果一个网络应用运行性能不理想,运 …\u003c/p\u003e"
December 1, 2010
linux系统中关于文件权限
"\u003cp\u003e文件权限除了r、w、x外还有s、t、i、a权限:\u003c/p\u003e\n\u003cp\u003es:文件属主和组设置SUID和GUID,文件在被设置了s权限后将以root身份执行。在设置s权限时文件属主、属组必须先设置相应的x权 限,否则s权限并不能正真生效(c h m o d命令不进行必要的完整性检查,即使不设置x权限就设置s权限,chmod也不会报错,当我们ls -l时看到rwS,大写S说明s权限未生效)。Linux修改密码的passwd便是个设置了SUID的程序,普通用户无读写/etc/shadow文件 的权限确可以修改自己的密码。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003els -al /usr/bin/passwd\u003c/p\u003e\n\u003cp\u003e-rwsr-xr-x 1 root root 32988 2008-12-08 17:17 /usr/bin/passwd\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e我们可以通过字符模式设置s权限:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003echmod a+s filename\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e也可以使用绝对模式进行设置:\u003c/p\u003e\n\u003cp\u003e设置s u i d:将相应的权限位之前的那一位设置为4;\u003c/p\u003e\n\u003cp\u003e设置g u i d:将相应的权限位之前的那一位设置为2;\u003c/p\u003e\n\u003cp\u003e两者都置位:将相应的权限位之前的那一位设置为4+2=6。\u003c/p\u003e\n\u003cp\u003e如:chmod 4764 filename …\u003c/p\u003e"
November 16, 2010
shell test操作运算符
"\u003cp\u003e\u003cstrong\u003e4.4 控制结构\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e在shell脚本中,使用控制结构就可以控制Linux命令的执行。使用控制结构,可以重复执行命令,或者选择特定的命令。控制结构包含两个主要的组件:测试操作(test)和命令。如果测试操作成功,则命令就会执行。这样的话,就可以使用控制结构来决定是否执行选定的命令。\u003c/p\u003e\n\u003cp\u003e存在两种不同类型的控制结构:循环和条件。循环结构会重复执行命令,而条件结构会在特定条件满足时执行命令。\u003c/p\u003e\n\u003cp\u003eBASH Shell有三种循环控制结构:while、for和for-in,两种条件控制结构:if和case。控制结构把Linux命令执行结果作为测试。\u003c/p\u003e\n\u003cp\u003e所有的Linux命令在执行结束后都会返回一个退出状态。如果某命令成功执行,退出状态将是0。如果因为某种原因该命令执行失败,则退出状态是表示失败类型的一个正值。控制结构会检查Linux命令的退出状态是0,还是其他值。对于if和while控制结构,如果退出状态是0,则说明该命令被成功执行,控制结构会继续。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e4.4.1 test操作\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e借助于test命令,可以比较\u003cstrong\u003e整数\u003c/strong\u003e、\u003cstrong\u003e字符串\u003c/strong\u003e,甚至执行\u003cstrong\u003e逻辑操作\u003c/strong\u003e。命令由关键字test,以及被比较值组成;被比较数值之间使用一个选项分隔开, …\u003c/p\u003e"
November 16, 2010
grep用法详解:grep与正则表达式
"\u003cp\u003e**首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同!**正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串。vim、grep、awk 、sed 都支持正则表达式,也正是因为由于它们支持正则,才显得它们强大;\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1基础正则表达式\u003c/strong\u003egrep 工具,以前介绍过。\u003c/p\u003e\n\u003cp\u003egrep -[acinv] ‘搜索内容串‘ filename\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e-a 以文本文件方式搜索\n-c 计算找到的符合行的次数\n-i 忽略大小写\n-n 顺便输出行号\n-v 反向选择,即显示不包含匹配文本的所有行\n-h 查询多文件时不显示文件名。\n-l 查询多文件时只输出包含匹配字符的文件名。\n-s 不显示不存在或无匹配文本的错误信息。\ngrep命令加- E参数,这一扩展允许使用扩展模式匹配。\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e**其中搜索串可以是正则表达式!**grep: 要用好grep这个工具,其实就是要写好正则表达式,所以这里不对grep的所有功能进行实例讲解,只列几个例子,讲解一个正则表达式的写法。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003e$ ls -l | grep ‘^a’\u003c/strong\u003e 通过管道过滤ls -l输出的内容,只显示以a开头的行。\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003e$ …\u003c/strong\u003e\u003c/p\u003e"
November 11, 2010
linux挂载新硬盘,开机自动挂载
"\u003cp\u003e\u003cstrong\u003eLinux的硬盘识别:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e2.6 kernel以后,linux会将识别到的硬件设备,在/dev/下建立相应的设备文件.如:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003esda 表示第1块SCSI硬盘.# V, z b, }2 F7 u’ |\u003c/p\u003e\n\u003cp\u003ehda 表示第1块IDE硬盘(即连接在第1个IDE接口的Master口上)\u003c/p\u003e\n\u003cp\u003escd0 表示第1个USB光驱.\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e当添加了新硬盘后,在/dev目录下会有相应的设备文件产生.cciss的硬盘是个例外,它的设备文件在/dev/cciss/目录下.一般使用”fdisk -l”命令可以列出系统中当前连接的硬盘设备和分区信息.新硬盘没有分区信息,则只显示硬盘大小信息.\u003c/p\u003e\n\u003cp\u003e1.关闭服务器加上新硬盘\u003c/p\u003e\n\u003cp\u003e2.启动服务器,以root用户登录\u003c/p\u003e\n\u003cp\u003e3.查看硬盘信息\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e#fdisk -l\u003c/p\u003e\n\u003cp\u003eDisk /dev/sda: 146.1 GB, 146163105792 bytes\u003c/p\u003e\n\u003cp\u003e255 heads, 63 sectors/track, 17769 cylinders\u003c/p\u003e\n\u003cp\u003eUnits = cylinders of 16065 * 512 = 8225280 bytes\u003c/p\u003e\n\u003cp\u003eDevice …\u003c/p\u003e\u003c/blockquote\u003e"
October 20, 2010
linux 下的软件开发之GCC,GDB用法篇
"\u003cp\u003e在为Linux开发应用程序时,绝大多数情况下使用的都是C语言,因此几乎每一位Linux程序员面临的首要问题都是如何灵活运用C编译器。目前Linux下最常用的C语言编译器是GCC(GNU Compiler Collection),它是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。GCC不仅功能非常强大,结构也异常灵活。最值得称道的一点就是它可以通过不同的前端模块来支持各种语言,如Java、 Fortran、Pascal、Modula-3和Ada等。\u003c/p\u003e\n\u003cp\u003e开放、自由和灵活是Linux的魅力所在,而这一点在GCC上的体现就是程序员通过它能够更好地控制整个编译过程。在使用GCC编译程序时,编译过程可以被细分为四个阶段:\u003c/p\u003e\n\u003cp\u003e========================================\u003c/p\u003e\n\u003cp\u003e◆ 预处理(Pre-Processing)\u003c/p\u003e\n\u003cp\u003e◆ 编译(Compiling)\u003c/p\u003e\n\u003cp\u003e◆ 汇编(Assembling)\u003c/p\u003e\n\u003cp\u003e◆ 链接(Linking)\u003c/p\u003e\n\u003cp\u003e========================================\u003c/p\u003e\n\u003cp\u003eLinux程序员可以根据自己 …\u003c/p\u003e"
October 19, 2010
Linux软链接和硬链接的区别
"\u003cp\u003e\u003cstrong\u003e一. 链接文件\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e链接有两种方式,软链接和硬链接。\u003c/p\u003e\n\u003cp\u003e1 软链接文件\u003c/p\u003e\n\u003cp\u003e软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。\n链接文件甚至可以链接不存在的文件,这就产生一般称之为”断链”的问题(或曰“现象”),链接文件甚至可以循环链接自己。类似于编程语言中的递归。\n用ln -s 命令可以生成一个软连接,如下:\n[root@linux236 test]# ln -s source_file softlink_file\n在对符号文件进行读或写操作的时候,系统会自动把该操作转换为对源文件的操作,但删除链接文件时,系统仅仅删除链接文件,而不删除源文件本身。\n2 硬链接文件\ninfo ln 命令告诉您,硬链接是已存在文件的另一个名字(A “hard link” is another name for an existing file),这多少有些令人困惑。硬连接的命令是\nln -d existfile newfile\n硬链接文件有两个限制\u003c/p\u003e\n\u003cp\u003e1)、不允许给目录创建硬链接;\n2)、只有在同一文件系统中的文件之间才能创建链接。\n对硬链接文件进行读写和删除操 …\u003c/p\u003e"
October 15, 2010
Linux下 XCache 编译安装方法
"\u003cp\u003e大部分的人都说XCache的加速效果比eaccelerator好,这里说说编译安装,\u003c/p\u003e\n\u003cp\u003e这里选择的是稳定版本的1.2.2版本,2.0版本的不稳定。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ewget \u003ca href=\"http://xcache.lighttpd.net/pub/Releases/1.2.2/xcache-1.2.2.tar.gz\"\u003ehttp://xcache.lighttpd.net/pub/Releases/1.2.2/xcache-1.2.2.tar.gz\u003c/a\u003e (下载)\u003c/p\u003e\n\u003cp\u003etar -zxf xcache-1.2.2.tar.gz\ncd xcache-1.2.2\u003c/p\u003e\n\u003cp\u003e/usr/local/php/bin/phpize\n./configure –enable-xcache –with-php-config=/usr/local/php/bin/php-config\nmake\nmake install\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e记录下xcache的安装目录。\u003c/p\u003e\n\u003cp\u003e编辑php.ini文件,加入Xcache,作为Zend扩展。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[xcache-common]\n;; install as zend extension (recommended), normally “$extension_dir/xcache.so”\nzend_extension = /路径/xcache.so\n;; or …\u003c/p\u003e\u003c/blockquote\u003e"
October 15, 2010
linux下用phpize给PHP动态添加扩展
"\u003cp\u003e相关教程: \u003ca href=\"http://blog.haohtml.com/index.php/archives/7001\"\u003eFreeBSD下安装php扩展\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e使用php的常见问题是编译php时忘记添加某扩展,后来想添加扩展,但是因为安装php后又装了一些东西如PEAR等,不想删除目录重装,这里就需要用到phpize了。\u003c/p\u003e\n\u003cp\u003e如我想增加bcmath扩展的支持,这是一个支持大整数计算的扩展。windows自带而且内置,linux“本类函数仅在 PHP 编译时配置了 –enable-bcmath 时可用”(引号内是手册中的话)\u003c/p\u003e\n\u003cp\u003e注意,有些扩展需要和php的版本保持一致才可以的.\u003c/p\u003e\n\u003cp\u003e解压bcmath包,进入里面的ext/bcmath目录,然后执行/usr/local/php/bin/phpize,phpize在php安装完以后会有这个命令的, 会发现当前目录下多了一些configure文件,然后再执行./configure命令即可.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e#/usr/local/php/bin/phpize\n#./configure –with-php-config=/usr/local/php/bin/php-config\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e注意要先确保**/usr/local/php/bin/php-config**存在。 (如果你的php安装 …\u003c/p\u003e"
October 13, 2010
Linux实现从Ext2到Ext3文件系统的转换
"\u003cp\u003e日志文档系统ext3具备ext2所不具备的特点和优势。顺利完成从ext2到ext3的转换,是实现ext3优势的必经之路。ext3文档系统是ext2文档系统的更高一级版本,他有一个其他同类日志文档系统所不具备的独特优势――完全兼容ext2文档系统,因而ext3能充分利用ext2中已有的操作和应用,而且比ext2更有效、更易用。他在ext2的基础上加入了记录元数据的日志功能,是个支持异步的日志。Red Hat 7.2和SuSE 7.3已率先发行了包含ext3文档系统的Linux。通过使用Linux最新安装版本和e2fsprogs Linux公用程式,可将ext3文档系统编译到系统的内核中。这里介绍的是ext2到ext3系统转换的一些基本方法,并为用户提供修正的参考建议。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eext3日志文档系统\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e1.日志文档系统\u003c/p\u003e\n\u003cp\u003e日志文档系统的设计思想是跟踪文档系统的变化而不是文档系统的内容。他用单独的日志文档跟踪磁盘内容的变化,就像关系型数据库(RDBMS),因而比传统的文档系统安全。日志文档系统能够用事务处理的方式,提交或撤消文档系统的变化。当系统非正常关闭,处于写入磁盘过程中的文档系统被非正常卸载,文档 …\u003c/p\u003e"
October 13, 2010
Linux 查看文件系统及分区格式!
"\u003cblockquote\u003e\n\u003cp\u003e可以用df -T /df -Th /df -TH\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e今天读到新一代 Linux 文件系统 btrfs 简介 感觉写的很好,纠正了我对ext2/3的几个错误理解,并且让我明白了为什么很多人在论坛或者聚合上总是在问Linux 什么时间支持ZFS 真是期待Btrfs的出现呀!不过在LinuxTOY上看到说MeeGo将采用btrfs做为默认文件系统。\u003c/p\u003e\n\u003cp\u003eext3比ext2读写小文件要快,才想到我的很多系统貌似手工做成了ext2格式的想统计一下,于是乎就产生了这个标题。\u003c/p\u003e\n\u003cp\u003e两个文件 /etc/fstab 和 /etc/mtab (至于这两个文件后便介绍)可以看到分区的格式信息,另外运行一条命令也可以 df -T 不过他读取的是 /etc/mtab中的信息,貌似这样不挂载的分区信息将无法展现出来。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e另外 fdisk 可以查看磁盘的分区的类型,这个类型不是格式 是指是哪类文件系统。\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e例如:fdisk -l 可以列出分区信息里边有一个ID列,这个就是分区的类型ID.可以到 fdisk 里用l命令查看具体分类!\u003c/p\u003e\n\u003cp\u003e/etc/fstab是个配置文件,而/etc/mtab则显示的是已经被挂载的fs的清单文件,关 …\u003c/p\u003e"
October 12, 2010
Linux下patch打补丁命令实例详解
"\u003cp\u003e\u003cstrong\u003elinux下patch命令使用详解—linux打补丁命令\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e功能说明:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e****修补文件。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e语 法:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003cstrong\u003e\u003cstrong\u003ep\u003c/strong\u003e\u003c/strong\u003eatch\u003c/strong\u003e [-bceEflnNRstTuvZ][-B \u0026lt;备份字首字符串\u0026gt;][-d \u0026lt;工作目录\u0026gt;][-D \u0026lt;标示符号\u0026gt;][-F \u0026lt;监别列数\u0026gt;][-g \u0026lt;控制数值\u0026gt;][-i \u0026lt;修补文件\u0026gt;][-o \u0026lt;输出文件\u0026gt;][-p \u0026lt;剥离层级\u0026gt;][-r \u0026lt;拒绝文件\u0026gt;][-V \u0026lt;备份方式\u0026gt;][-Y \u0026lt;备份字首字符串\u0026gt;][-z \u0026lt;备份字尾字符串\u0026gt;][–backup-if -mismatch][–binary][–help][–nobackup-if-mismatch][–verbose][原始文件 \u0026lt;修补文件\u0026gt;] 或 patch [-p \u0026lt;剥离层级\u0026gt;] \u0026lt; [修补文件]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e补充说明:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e****\u003cstrong\u003epatch\u003c/strong\u003e指令让用户利用设置修补文件的方式,修改,更新原始文件。倘若一次仅修改一个文件,可直接在指令列中下达指令依序执行。如果配合修补文件的方 …\u003c/p\u003e"
September 25, 2010
Linux下使用screen工作How-to
"\u003cp\u003e通过ssh在Linux终端下工作,有一个很烦的事情就是,如果需要执行一个长时间的命令(例如拷贝一个大文件,或者做DDL)时,如果终端意外断开(网络或者别的原因),一般命令就会终止,当然你可以使用nohup命令,这里提供另一个办法:使用\u003ca href=\"http://www.gnu.org/software/screen/\"\u003escreen\u003c/a\u003e。\u003c/p\u003e\n\u003cp\u003e一般,我们创建一个screen会话,然后连接会话并在会话下工作,这时候,我们可以随时挂起会话,去做别的事情,而且这个挂起的会话会一直在后台执行。而后又可以重新连接会话。下面是一个简单的How-to:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003eHow-to\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e1.1 创建一个screen会话\u003c/p\u003e\n\u003cp\u003escreen -dmS supu\u003c/p\u003e\n\u003cp\u003e该命令,创建一个名为supu的会话,当时并不立刻进入会话。\u003c/p\u003e\n\u003cp\u003e1.2 连入会话\u003c/p\u003e\n\u003cp\u003escreen -r supu\u003c/p\u003e\n\u003cp\u003e连入会话后,就可以做任何想做的工作了。\u003c/p\u003e\n\u003cp\u003e1.3 挂起该终端\u003c/p\u003e\n\u003cp\u003e如果你在会话中,做了某个需要等很久的操作,或者你需要离开一段时间,这时就需要执行挂起操作了:\u003c/p\u003e\n\u003cp\u003e(ctrl+a) + D 先按下Ctr+a然后按D键(screen捕获ctrl+a,后面跟一个命令键D,可以通过ctrl+a ?查看更多)\u003c/p\u003e\n\u003cp\u003e1.4 其他相关\u003c/p\u003e\n\u003cp\u003e而后,可以重新使用-r参数回到会话;在会话 …\u003c/p\u003e"
September 8, 2010
Linux中cp总是提示覆盖文件的解决办法
"\u003cp\u003e把a目录下的文件复制到b目录\ncp –r a/* b\n执行上面的命令时,b存在的每个文件都会提示是否覆盖;\ncp –r –f a/* b\n执行上面的命令时,b存在的每个文件都不再会提示;\n这是我们希望的理想状态,但是有时加了 -f了,怎么还会有提示呢?原来一些服务器会默认增加别名 alias cp =’cp -i’,当你执行cp 时, 其实执行的是cp –i。\n在终端执行alias就可以看出来了。\n[root@devdb ~]# alias\nalias cp =’cp -i’\n可以这样解决\n[root@devdb ~]# vi ~/.bashrc\n在alias cp =’cp -i’前加上”#”注释掉这行,:wq!保存退出!\u003c/p\u003e\n\u003cp\u003e然后重新登陆就可以了。\u003c/p\u003e\n\u003cp\u003e如:\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003cem\u003ecp -R -f /home/priceangels/\u003c/em\u003e /usr/ROOT/\u003c/em\u003e*\u003c/p\u003e"
September 8, 2010
原创:解决 cp: omitting directory
"\u003cp\u003elinux下面执行cp命令时提示如下信息:\u003c/p\u003e\n\u003cp\u003ecp: omitting directory\u003c/p\u003e\n\u003cp\u003e可以用下面的办法来解决\u003c/p\u003e\n\u003cp\u003ecp -r orginal_file new_file\u003c/p\u003e"
September 2, 2010
linux,unix为什么要编译内核?
"\u003cp\u003e今天看的内容是有关书上第六章编译内核的问题:\u003c/p\u003e\n\u003cp\u003e首先为什么要编译内核?\u003c/p\u003e\n\u003cp\u003e它最大的好处就是可以调整linux系统,以便其更合理地安装到计算机中。linux集成套件通常包括多种目\u003c/p\u003e\n\u003cp\u003e标内核,能够处理各种机器。除此之外,还可以通过重新编译内核以便在你的计算机上实现一些功能,\u003c/p\u003e\n\u003cp\u003e例如:将linux系统设置为一个临时路由器,使之拥有内置的路由功能,或者作为放火墙,添加一个新的外部设备(如SCSI卡等)\u003c/p\u003e\n\u003cp\u003e创建自己的内核的最好理由就是使全世界内核设计者所提供的各种为改进性能而设计的内核得到充分利用。创建内核的过程不是很困难,只是要花费一些时间,并且系统越老或运行越慢,在创建时所花费的时间就越长,而且要特别注意一些关键的驱动程序或者其特性时,那会带来不少麻烦的\u003c/p\u003e\n\u003cp\u003e这个内核将针对机器的处理器进行优化,并且只提供需要的驱动和特征。另一个原因是为内核增加新的支持特性,有些特性在发行商提供的内核中有可能没有包括进来,或让硬件工作得更好。\u003c/p\u003e\n\u003cp\u003e最终结果是建立一个更小的,更快的,打上所有最新最稳定的补丁和增强特性的内核。\u003c/p\u003e"
September 1, 2010
浅谈Linux优化及安全配置的个人体会
"\u003cp\u003e\u003cstrong\u003e前言:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e很久没有写过文章了,最近收到不少朋友来信,提及了有关优化配置和一些新的安全问题,在此我想和大家浅显讨论一下这些问题,有什么不准确和有更好的方式,请给我来信共同讨论提高。\u003c/p\u003e\n\u003cp\u003e在网上看到不少有关linux优化方面的好文章,在此我也不赘述这些文章了,我只想从我自己的体会来谈谈这方面的问题。\u003c/p\u003e\n\u003cp\u003e作为一个系统管理员,我下面说的都是基于服务器应用的linux来谈的,由于个人电脑上使用linux也许不是像服务器上一样,优先追求安全和稳定,因此个人电脑使用的朋友只做个参考吧。\u003c/p\u003e\n\u003cp\u003e本文提及的系统,如没有特别声明,均采用redhat公司的redhat linux系统。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e关于优化\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e说起优化,其实最好的优化就是提升硬件的配置,例如提高cpu的运算能力,提高内存的容量,个人认为如果你考虑升级硬件的话,建议优先提高内存的容量,因为一般服务器应用,对内存的消耗使用要求是最高的。当然这都是题外话了。\u003c/p\u003e\n\u003cp\u003e这里我们首要讨论的,是在同等硬件配置下(同一台服务器,不提升硬件的情况下)对你的系统进行优化。\u003c/p\u003e\n\u003cp\u003e作为系统管理员,我认为,首先我们要明确一个观点:在服务器上作任何操作,升级和修改任何配置文件或软件,都必须首要考虑安全性, …\u003c/p\u003e"
July 27, 2010
用linux上的cacti去监控windows服务器
"\u003cp\u003e另篇相同的教程: \u003ca href=\"http://blog.haohtml.com/index.php/archives/4850\"\u003ehttp://blog.haohtml.com/index.php/archives/4850\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e以前一直用cacti或者mrtg来监控交换机流量,很少用来监控服务器,最近突然有个任务需要监控windows服务器,一般刚装好的cacti,里面的监控设置都是基于交换机和linux的,没有专门监控windows的选择,于是研究了一下,和大家分享一下经验。另外我的cacti是安装的debian linux上,有些安装命令不适合其他linux上,请大家注意。\u003c/p\u003e\n\u003cp\u003e操作系统:debian 5\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1.安装mysql\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eapy-get install mysql-server-5.0\u003c/p\u003e\n\u003cp\u003e安装时会提示你输入mysql root密码\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e2.安装apache和php\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eapt-get install apache2 libapache2-mod-php5 php5 php5-gd php5-mysql php5-cli php5-common php5-snmp php-net-socket\u003c/p\u003e\n\u003cp\u003ephp5-gd是关系到绘图\u003c/p\u003e\n\u003cp\u003ephp5-mysql和数据库有关系\u003c/p\u003e\n\u003cp\u003ephp-net-socket这个有时候cacti …\u003c/p\u003e"
July 20, 2010
学会使用Linux性能分析工具
"\u003cp\u003eLinux在具有高稳定性、可靠性的同时,具有很好的可伸缩性和扩展性,能够针对不同的应用和硬件环境调整,优化出满足当前应用需要的最佳性能。因此企业在维护Linux系统、进行系统调优时,了解系统性能分析工具是至关重要的。\n在Linux下有很多系统性能分析工具,比较常见的有top、free、ps、time、timex、uptime等。下文将介绍几个较为重要的性能分析工具vmstat、iostat和sar及其使用。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e用vmstat监视内存使用情况\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003evmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监视。它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。\u003c/p\u003e\n\u003cp\u003evmstat的语法如下:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e vmstat [-V] [-n] [delay [count]]\n\u003c/code\u003e\u003c/pre\u003e\u003cblockquote\u003e\n\u003cp\u003e其中,\n-V表示打印出版本信息;\n-n表示在周期性循环输出时,输出的头部信息仅显示一次;\ndelay是两次输出之间的延迟时间;\ncount是指按照这个时间间隔统计的次数。\n对于vmstat输出各字段的含义,可运行man vmstat查看。\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003e …\u003c/strong\u003e\u003c/p\u003e"
July 16, 2010
Linux中cp直接覆盖不提示的方法
"\u003cp\u003eLinux中cp直接覆盖不提示的方法\u003c/p\u003e\n\u003cp\u003e新做了服务器,cp覆盖时,无论加什么参数-f之类的还是提示是否覆盖,这在大量cp覆盖操作的时候是不能忍受的。。。\u003c/p\u003e\n\u003cp\u003e把a目录下的文件复制到b目录\u003c/p\u003e\n\u003cp\u003ecp –r a/* b\u003c/p\u003e\n\u003cp\u003e执行上面的命令时,b存在的每个文件都会提示是否覆盖;\u003c/p\u003e\n\u003cp\u003ecp –r –f a/* b\u003c/p\u003e\n\u003cp\u003e执行上面的命令时,b存在的每个文件都不再会提示;\u003c/p\u003e\n\u003cp\u003e这是我们希望的理想状态,但是有时加了-f了,怎么还会有提示呢?原来一些服务器会默认增加别名 alias cp=’cp -i’,当你执行cp时,其实执行的是cp –i。\u003c/p\u003e\n\u003cp\u003e在终端执行alias就可以看出来了。\u003c/p\u003e\n\u003cp\u003e[root@devdb ~]# alias\u003c/p\u003e\n\u003cp\u003ealias cp=’cp -i’\u003c/p\u003e\n\u003cp\u003e可以这样解决\u003c/p\u003e\n\u003cp\u003e[root@devdb ~]# vi ~/.bashrc\u003c/p\u003e\n\u003cp\u003e在alias cp=’cp -i’前加上”#”注释掉这行,:wq!保存推出,然后重新登陆就可以了。\u003c/p\u003e"
July 16, 2010
Linux上查看目录大小
"\u003cp\u003e查看目录大小du\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003edu -sh dirname\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e-s 仅显示总计\n-h 以k、m、g为单位,提高信息的可读性。kb、mb、gb是以1024为换算单 位, -h以1000为换算单位\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e以下是刚装好的RH9.0(全部) Linux目录大小参考:\n/usr 4.5G\n/usr/share 2.2G\n/usr/src 189M\n/usr/games 3.9M\n/usr/X11R6 173M\n/usr/lib 1.5G\n/usr/include 91M\n/usr/bin 258M\n/var 250M\n/var/www 130M\u003c/p\u003e"
July 8, 2010
ubuntu关机命令
"\u003cp\u003e\u003cstrong\u003e1. 关机命令 shutdown\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e好像ubuntu的终端中默认的是当前用户的命令,只是普通用户,因此在终端器中可以使用sudo -sh 转换到管理员root用户下执行命令。\u003c/p\u003e\n\u003cp\u003e1)shutdown –help\u003c/p\u003e\n\u003cp\u003e可以查看shutdown命令如何使用,当然也可以使用man shutdown命令。\u003c/p\u003e\n\u003cp\u003e2) shutdown -h now 现在立即关机\u003c/p\u003e\n\u003cp\u003e3)shutdown -r now 现在立即重启\u003c/p\u003e\n\u003cp\u003e4)shutdown -r +3 三分钟后重启\u003c/p\u003e\n\u003cp\u003e5)shutdown -h +3 “The System will shutdown after 3 minutes” 提示使用者将在三分钟后关机\u003c/p\u003e\n\u003cp\u003e6)shutdown -r 20:23 在20:23时将重启计算机\u003c/p\u003e\n\u003cp\u003e7)shutdown -r 20:23 \u0026amp; 可以将在20:23时重启的任务放到后台去,用户可以继续操作终端\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e2. 中断命令\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e1)执行完命令后(若没有转到后台),可以使用CTRL+C来中止命令\u003c/p\u003e\n\u003cp\u003e2)kill 程序编码\u003c/p\u003e\n\u003cp\u003e当命令在后台执行时系统会返回一个程序编码,例如:在使用 shutdown -r 20:23 \u0026amp; 系统返回系统编 …\u003c/p\u003e"
July 8, 2010
ubuntu查看内核版本和发行版本
"\u003cp\u003e查看 \u003cstrong\u003e内核\u003c/strong\u003e 版本:\u003c/p\u003e\n\u003cp\u003e方法一:uname -r\n输出:\n2.6.32-23-generic\n方法二:cat /proc/version\n输出:\nLinux version 2.6.32-23-generic (buildd@rothera) (gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) ) #37-Ubuntu SMP Fri Jun 11 07:54:58 UTC 2010\u003c/p\u003e\n\u003cp\u003e查看 \u003cstrong\u003e发行\u003c/strong\u003e 版本:`\u003c/p\u003e\n\u003cp\u003e方法一:cat /etc/issue`\n输出:\nUbuntu 8.04 \\n \\l\n方法二:lsb_release -a\n输出:\nNo LSB modules are available.\nDistributor ID: Ubuntu\nDescription: Ubuntu 10.04 LTS\nRelease: 10.04\nCodename: lucid\u003c/p\u003e"
July 8, 2010
ubuntu开启SSH服务
"\u003cp\u003e网上有很多介绍在Ubuntu下开启SSH服务的文章,但大多数介绍的方法测试后都不太理想,均不能实现远程登录到Ubuntu上,最后分析原因是都没有真正开启ssh-server服务。最终成功的方法如下:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003esudo apt-get install openssh-server\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eUbuntu缺省安装了openssh-client,所以在这里就不安装了,如果你的系统没有安装的话,再用apt-get安装上即可。\u003c/p\u003e\n\u003cp\u003e然后确认sshserver是否启动了:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eps -e |grep ssh\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e如果只有ssh-agent那ssh-server还没有启动,需要/etc/init.d/ssh start,如果看到sshd那说明ssh-server已经启动了。\u003c/p\u003e\n\u003cp\u003essh-server配置文件位于/ etc/ssh/sshd_config,在这里可以定义SSH的服务端口,默认端口是22,你可以自己定义成其他端口号,如222。然后重启SSH服务:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003esudo /etc/init.d/ssh resar\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003essh连接:ssh \u003ca href=\"mailto:xjtu129@202.117.15.165\"\u003exjtu129@202.117.15.165\u003c/a\u003e\u003c/p\u003e"
July 7, 2010
linux中查看系统资源占用情况的命令
"\u003cp\u003e\u003cstrong\u003etop:\u003c/strong\u003e\n主要参数\nd:指定更新的间隔,以秒计算。\nq:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。\nc:显示进程完整的路径与名称。\nS:累积模式,会将己完成或消失的子行程的CPU时间累积起来。\ns:安全模式。\ni:不显示任何闲置(Idle)或无用(Zombie)的行程。\nn:显示更新的次数,完成后将会退出to\n显示参数:\nPID(Process ID):进程标示号。\nUSER:进程所有者的用户名。\nPR:进程的优先级别。\nNI:进程的优先级别数值。\nVIRT:进程占用的虚拟内存值。\nRES:进程占用的物理内存值。\nSHR:进程使用的共享内存值。\u003c/p\u003e\n\u003cp\u003eS:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。\n%CPU:该进程占用的CPU使用率。\n%MEM:该进程占用的物理内存和总内存的百分比。\nTIME+:该进程启动后占用的总的CPU时间。\nCommand:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。\ntop命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。 …\u003c/p\u003e"
July 5, 2010
linux scp 命令
"\u003cp\u003e在 linux 之间复制 文件\u003c/p\u003e\n\u003cp\u003e安装方法:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eyum -y install openssh-clients\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003elinux 的 scp 命令 可以 在 linux 之间复制 文件 和 目录;\u003c/p\u003e\n\u003ch1 id=\"scp-命令\"\u003e==================\n\u003cstrong\u003escp 命令\u003c/strong\u003e\u003c/h1\u003e\n\u003cp\u003escp 可以在 2个 linux 主机间复制文件;\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e命令基本格式:\u003c/strong\u003e\nscp [可选参数] file_source file_target\u003c/p\u003e\n\u003ch1 id=\"从-本地-复制到-远程\"\u003e======\n从 本地 复制到 远程\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e复制文件:\u003c/li\u003e\n\u003cli\u003e命令格式:\nscp local_file remote_username@remote_ip:remote_folder\n或者\nscp local_file remote_username@remote_ip:remote_file\n或者\nscp local_file remote_ip:remote_folder\n或者\nscp local_file remote_ip:remote_file\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e第1,2个指定了用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名;\n第3,4个没有指定用户名,命令执行后需要输入用户名和密码, …\u003c/p\u003e"
May 1, 2010
Linux下常见文件格式的压缩、解压小结
"\u003cp\u003e\u003cstrong\u003e.tar\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e解包:tar xvf FileName.tar\u003c/p\u003e\n\u003cp\u003e打包:tar cvf FileName.tar DirName\u003c/p\u003e\n\u003cp\u003e(注:tar是打包,不是压缩)\u003c/p\u003e\n\u003cp\u003e如果要过滤某个文件夹的话,使用参数 –excludetar -czvf www_web.tar.gz www_web/ –exclude=”./web/logs”\u003c/p\u003e\n\u003cp\u003e———————————————\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e.gz\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e解压 1:gunzip FileName.gz\u003c/p\u003e\n\u003cp\u003e解压2:gzip -d FileName.gz\u003c/p\u003e\n\u003cp\u003e压缩:gzip FileName\u003c/p\u003e\n\u003cp\u003e.tar.gz 和 .tgz\u003c/p\u003e\n\u003cp\u003e解压:tar zxvf FileName.tar.gz\u003c/p\u003e\n\u003cp\u003e压缩:tar zcvf FileName.tar.gz DirName\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003e参数:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e-c :create 建立压缩档案的参数;\u003c/p\u003e\n\u003cp\u003e-x : 解压缩压缩档案的参数;\u003c/p\u003e\n\u003cp\u003e-z : 是否需要用gzip压缩;\u003c/p\u003e\n\u003cp\u003e-v: 压缩的过程中显示档案;\u003c/p\u003e\n\u003cp\u003e-f: 置顶文档名,在f后面立即接文件名,不能再加参数\u003c/p\u003e\n\u003cp\u003e举例: 一,将整个/home/www/images 目录下的文件全部打包为 /home/www/images.tar …\u003c/p\u003e\u003c/blockquote\u003e"
May 1, 2010
Kloxo(原名LxAdmin)控制面板 使用指南
"\u003cp\u003eKloxo是一个优秀的Web控制面板,有商业版本和免费版本。免费版本的Kloxo允许绑定40个域名,对普通客户来讲40个域名也足够用了。瑞豪开源的VPS提供了预装免费版Kloxo的Linux系统。本文介绍Kloxo控制面板的基本使用方法。\u003c/p\u003e\n\u003cp\u003eVPS安装好之后,我们会告诉客户Kloxo的登录地址以及admin用户的密码,登录之后就可以开始配置了。\u003c/p\u003e\n\u003ch2 id=\"升级kloxo到最新版本\"\u003e升级Kloxo到最新版本\u003c/h2\u003e\n\u003cp\u003e进入Kloxo后要做的第一件事情就是升级Kloxo到最新版本,这是非常必要的,因为老版本可能有bug存在,这些bug有可能导致Kloxo被入侵,而最新版本往往修复了这些bug。\u003c/p\u003e\n\u003cp\u003e在首页中间的Administration部分,点击Update Home然后就会看到当前的Kloxo是否是最新版本,如果不是最新版本,就点击下面的Update Now按钮进行升级。\u003c/p\u003e\n\u003ch2 id=\"添加dns模板\"\u003e添加DNS模板\u003c/h2\u003e\n\u003cp\u003e添加DNS模板是必要的,如果不添加DNS模板,将无法添加域名,无法添加新用户。\u003c/p\u003e\n\u003cp\u003e添加DNS模板,首先点击左侧菜单中的:Resources –\u0026gt; DNS Templates 或者首页中部的Resources –\u0026gt; DNS Templates, …\u003c/p\u003e"
May 1, 2010
Linux ftp服务启动方法
"\u003cp\u003e来源:http://www.linuxidc.com/Linux/2007-03/2430.htm\nLinux ftp服务启动方法\u003c/p\u003e\n\u003cp\u003eLinux ftp\u003c/p\u003e\n\u003cp\u003e服务启动步骤\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e#setup\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e//进入图形界面的System services查看是否有 vsftpd项,如果没有转到2.,保存后退出\u003c/p\u003e\n\u003cp\u003e2.用redhat第三张盘 安装此服务(开始–删除/增加程序),200K左右\u003c/p\u003e\n\u003cp\u003e3.#setup\u003c/p\u003e\n\u003cp\u003e此时能看到vsftpd项,此时选中此services项,保存后退出.\u003c/p\u003e\n\u003cp\u003e4.# service vsftpd start //启动ftp服务\u003c/p\u003e\n\u003cp\u003e5.# service vsftpd stop //停止ftp服务\u003c/p\u003e\n\u003cp\u003eOK.\u003c/p\u003e\n\u003cp\u003e---------------\u003c/p\u003e\n\u003cp\u003e#service vsftpd start //linux默认服务的启动方式\u003c/p\u003e\n\u003cp\u003e#apachectl start //linux第三方服务的启动方式\u003c/p\u003e\n\u003cp\u003e#lsnrctl\u003c/p\u003e\n\u003cp\u003e#setup的东西,会自动加载的services\u003c/p\u003e"
November 29, 2008
用Rsync从Linux到Windows远程备份
"\u003cp\u003ersync是Linux系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。rsync支持大多数的类Unix系统,无论是Linux、Solaris还是BSD上都经过了良好的测试。rsync的最新版本可以从http://rsync.samba.org/rsync/获得。它的特性如下:\n1、可以镜像保存整个目录树和文件系统。\n2、可以很容易做到保持原来文件的权限、时间、软硬链接等等。\n3、无须特殊权限即可安装。\n4、优化的流程,文件传输效率高。\n5、可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。\n本文介绍了如何使用rsync服务从Linux到Windows进行远程备份。\n一、配置服务器端\n首先我们需要配置rsync,打开配置文件/etc/xinetd.d/rsyncd.conf(如果没有请创建它),修改相应的配置项,并增加以下内容:\nuid = nobody # 备份以什么身份进行,用户ID\ngid = nobody # 备份以什么身份进行,组ID\n#注意这个用户ID和组ID,如果要方便的话,可以设置成root,这样rsync几乎 …\u003c/p\u003e"
October 15, 2008
Linux必学的60个命令
"\u003cp\u003eLinux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等。所以,在Linux系统上工作离不开使用系统提供的命令。要想真正理解Linux系统,就必须从Linux命令学起,通过基础的命令学习可以进一步理解Linux系统。不同Linux发行版的命令数量不一样,但Linux发行版本最少的命令也有200多个。这里笔者把比较重要和使用频率最多的命令,按照它们在系统中的作用分成下面六个部分一一介绍。\u003c/p\u003e\n\u003cp\u003e◆ 安装和登录命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last;\n◆ 文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln;\n◆ 系统管理相关命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab;\n◆ 网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 …\u003c/p\u003e"