千万个美丽的未来,抵不上一个温暖的现在,每一个真实的现在,都是我们曾经幻想的未来!
分页: 5/10 第一页 上页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]
Mar 13
1.ps命令
作用:ps命令主要查看系统中进程的状态。
格式:ps [选项]
主要选项如下。
点击在新窗口中浏览此图片
说明:要对进程进行监测和控制,首先要了解当前进程的情况,也就是需要查看当前进程。ps命令就是最基本、也是非常强大的进程查看命令。根据显示的信息可以确定哪个进程正在运行、哪个进程被挂起、进程已运行了多久、进程正在使用的资源、进程的相对优先级,以及进程的标志号(PID)。所有这些信息对用户都很有用,对于系统管理员来说更为重要。使用"ps -aux"命令可以获得终端上所有用户的有关进程的所有信息,下面结合图讲解进程的基本信息。
点击在新窗口中浏览此图片
图中第二行代码中,USER表示启动进程用户。PID表示进程标志号。%CPU表示运行该进程占用CPU的时间与该进程总的运行时间的比例。%MEM表示该进程占用内存和总内存的比例。VSZ表示占用的虚拟内存大小,以KB为单位。RSS为进程占用的物理内存值,以KB为单位。TTY表示该进程建立时所对应的终端,"?"表示该进程不占用终端。STAT表示进程的运行状态,包括以下几种代码:D,不可中断的睡眠;R,就绪(在可运行队列中);S,睡眠;T,被跟踪或停止;Z,终止(僵死)的进程,Z不存在,但暂时无法消除;W,没有足够的内存分页可分配;<高优先序的进程;N,低优先序的进程;L,有内存分页分配并锁在内存体内(实时系统或I/O)。START为进程开始时间。TIME为执行的时间。COMMAND是对应的命令名。
应用实例如下。

在进行系统维护时,如果CPU负载突然增加,而又不知道是哪一个进程造成的情况。使用命令:

#ps aux | sort +3n

因为%CPU选项在第三列,所以sort选3作为参数,+表示升序输出结果。

2.top命令
top命令用来显示系统当前的进程状况。
格式:top [选项]
主要选项如下。
点击在新窗口中浏览此图片
说明:top命令和ps命令的基本作用是相同的,都显示系统当前的进程状况。但是top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。这里结合图来说明它给出的信息。
点击在新窗口中浏览此图片
在图中,第一行表示的项目依次为当前时间、系统启动时间、当前系统登录用户数目、平均负载。第二行显示的是所有启动的、目前运行的、挂起(Sleeping)的和无用(Zombie)的进程。第三行显示的是目前CPU的使用情况,包括系统占用的比例、用户使用比例、闲置(Idle)比例。第四行显示物理内存的使用情况,包括总的可以使用的内存、已用内存、空闲内存、缓冲区占用的内存。第五行显示交换分区的使用情况,包括总的交换分区、使用的、空闲的和用于高速缓存的交换分区。第六行显示的项目最多,下面列出了详细解释。

PID(Process ID):进程标志号,是非零正整数。USER:进程所有者的用户名。PR:进程的优先级别。NI:进程的优先级别数值。VIRT:进程占用的虚拟内存值。RES:进程占用的物理内存值。SHR:进程使用的共享内存值。STAT:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。%CPU:该进程占用的CPU使用率。%MEM:该进程占用的物理内存和总内存的百分比。TIME:该进程启动后占用的总的CPU时间。COMMAND:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。top命令使用过程中,还可以使用一些交互的命令来完成其他参数的功能。这些命令是通过快捷键启动的。

点击在新窗口中浏览此图片
可以看到,top命令是一个功能十分强大的监控系统的工具,对于系统管理员而言尤其重要。但是,它的缺点是会消耗很多系统资源。
Tags: , ,
Jun 30
在日常运维中你可能会有几十G或者上百G的文件压缩包,要查看里面的每个文件的大小的话,解压出来可能需要很长时间,而且要占用大量磁盘空间和系统CPU资源。因此,不解压查看文件大小很有必要。

不解压一个tar.gz文件,查看里面的文件明细的命令为:

# tar tvf dbzhj.tar.gz

输出形如:
drwxr-xr-x root/root         0 2012-06-30 15:02 dbzhj/
-rw-r--r-- root/root       349 2012-05-04 00:37 dbzhj/phpinfo.php
-rw-r--r-- root/root        26 2012-05-04 00:37 dbzhj/robots.txt
-rw-r--r-- root/root        29 2012-05-04 00:37 dbzhj/RELEASE-DATE-3.5.1
-rw-r--r-- root/root       391 2012-05-04 00:37 dbzhj/url.php
-rw-r--r-- root/root     11366 2012-05-04 00:37 dbzhj/browse_foreigners.php
-rw-r--r-- root/root     31160 2012-05-04 00:37 dbzhj/db_qbe.php
-rw-r--r-- root/root      2157 2012-05-04 00:37 dbzhj/pmd_relation_upd.php
-rw-r--r-- root/root     13553 2012-05-04 00:37 dbzhj/db_search.php


从左起第三列数据就是文件大小(单位:字节),第6列就是文件名。如果要看得更清楚一点,用awk来过滤一下输出的结果:

# tar tvf dbzhj.tar.gz | awk '{print $3, $6}'

这样就只输出第3和第6列,输出形如:
349 dbzhj/phpinfo.php
26 dbzhj/robots.txt
29 dbzhj/RELEASE-DATE-3.5.1
391 dbzhj/url.php
11366 dbzhj/browse_foreigners.php
31160 dbzhj/db_qbe.php
2157 dbzhj/pmd_relation_upd.php
13553 dbzhj/db_search.php

如果要以KB/MB/GB来显示文件大小,可以用第3列除N个1024,例如,如果要显示为GB,则:

#tar tvf dbzhj.tar.gz | awk '{print $3/1024/1024/1024, $6}'

字节数连除3个1024,就是GB了,输出形如:
3.25032e-07 dbzhj/phpinfo.php
2.42144e-08 dbzhj/robots.txt
2.70084e-08 dbzhj/RELEASE-DATE-3.5.1
3.64147e-07 dbzhj/url.php
1.05854e-05 dbzhj/browse_foreigners.php
2.902e-05 dbzhj/db_qbe.php
2.00886e-06 dbzhj/pmd_relation_upd.php
1.26222e-05 dbzhj/db_search.php

如果对一个超大的文件(例如,上百G),并且压缩包里包含很多文件的话,这个过程将很漫长,让shell命令在后台执行,并将结果输出到一个文件中是一个比较合理的做法,如下:

#nohup tar tvf dbzhj.tar.gz | awk '{print $3/1024/1024/1024, $6}' > /root/fileinfo.txt &

nohup 是保证shell命令无中断(网络状况不佳时,SecureCRT等客户端软件有可能中断与服务器的连接,从而命令还没执行完就被中断了)
Jun 12

有很多人经常修改/etc/fstab文件,但是其中却有很多人对这个文件所表达的意义不太清楚,因为只要按照一定的模式,就可以轻而易举地添加一行挂载信息,而不需要完全理解其中的原理。下面就让我们来看看到底还有多少是我们不了解的。

    当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录。下面我来介绍如何在此文件下填写信息。
   在这个文件下,我们要关注的是它的六个域,分别为:

<file system>、<mount point>、<type> 、<options>、<dump>、<pass>

下面将详细介绍这六个域的详细意义。
 

1、<fie sysytem>。

这里用来指定你要挂载的文件系统的设备名称或块信息,也可以是远程的文件系统。

做过嵌入式linux开发的朋友都可能知道 mount 192.168.1.56:/home/nfs /mnt/nfs/ -o nolock (可以是其他IP)命令所代表的意义。它的任务是把IP为192.168.1.56的远程主机上的/home/nfs/目录挂载到本机的/mnt/nfs /目录之下。如果要把它写进/etc/fstab文件中,file system这部分应填写为:/192.168.1.56:/home/nfs/。
   如果想把本机上的某个设备(device)挂载上来,写法如:/dev/sda1、/dev/hda2或/dev/cdrom,其中,/dev/sda1 表示第一个串口硬盘的第一个分区,也可以是第一个SCSI硬盘的第一个分区,/dev/hda1表示第一个IDE硬盘的第一个分区,/dev/cdrom 表示光驱。
  

此外,还可以label(卷标)或UUID(Universally Unique Identifier全局唯一标识符)来表示。

用label表示之前,先要e2label创建卷标,如:e2label /dir_1 /dir_2,其意思是说用/dir_2来表示/dir_1的名称。然后,再在/etc/fstab下添加:LABEL=/dir_2 /dir_2 <type>   <options> <dump> <pass>。重启后,系统就会将/dir_1挂载到/dir_2目录上。对于UUID,可以用vol_id -u /dev/sdax来获取。比如我想挂载第一块硬盘的第一个分区,先用命令vol_id -u /dev/sda11 来取得UUID,比如是:5dc08a62-3472-471b-9ef5-0a91e5e2c126,然后在<file system>这个域上填写: UUID=5dc08a62-3472-471b-9ef5-0a91e5e2c126,即可表示/dev/sda11。Red Hat linux 一般会使用label,而Ubuntu linux 一般会用UUID。
 

2、<mount point>。

挂载点,也就是自己找一个或创建一个dir(目录),然后把文件系统<fie sysytem>挂到这个目录上,然后就可以从这个目录中访问要挂载文件系统。对于swap分区,这个域应该填写:none,表示没有挂载点。
 

3、<type>。

这里用来指定文件系统的类型。下面的文件系统都是目前Linux所能支持的:adfs、befs、cifs、ext3、 ext2、ext、iso9660、kafs、minix、msdos、vfat、umsdos、proc、reiserfs、swap、 squashfs、nfs、hpfs、ncpfs、ntfs、affs、ufs。
 

4、<options>。

这里用来填写设置选项,各个选项用逗号隔开。由于选项非常多,而这里篇幅有限,所以不再作详细介绍,如需了解,请用 命令 man mount 来查看。但在这里有个非常重要的关键字需要了解一下:defaults,它代表包含了选项rw,suid,dev,exec,auto,nouser和 async。

5、<dump>。

此处为1的话,表示要将整个<fie sysytem>里的内容备份;为0的话,表示不备份。现在很少用到dump这个工具,在这里一般选0。
 

6、<pass>。

这里用来指定如何使用fsck来检查硬盘。如果这里填0,则不检查;挂载点为 / 的(即根分区),必须在这里填写1,其他的都不能填写1。如果有分区填写大于1的话,则在检查完根分区后,接着按填写的数字从小到大依次检查下去。同数字 的同时检查。比如第一和第二个分区填写2,第三和第四个分区填写3,则系统在检查完根分区后,接着同时检查第一和第二个分区,然后再同时检查第三和第四个分区。

Tags: ,
Jun 7
今天查看系统日志发现大量的nf_conntrack: table full, dropping packet. 错误
cat /var/log/messages | more
Jun  7 09:52:05 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:05 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:05 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:05 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:05 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:05 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:05 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:05 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:10 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:10 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:10 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:10 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:10 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:10 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:10 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:10 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:10 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:10 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:15 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:15 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:15 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:15 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:15 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:15 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:15 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:15 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:15 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:15 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:23 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:23 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:23 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:23 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:23 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:23 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:23 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:23 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:23 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:23 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:30 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:30 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:30 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:30 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:30 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:30 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:30 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:30 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:30 localhost kernel: nf_conntrack: table full, dropping packet.
Jun  7 09:52:30 localhost kernel: nf_conntrack: table full, dropping packet.
解决办法:
vi /etc/sysctl.conf
加入:
net.nf_conntrack_max = 655350
net.netfilter.nf_conntrack_tcp_timeout_established = 1200
CENTOS 6.1或以上版本使用:
net.netfilter.nf_conntrack_max = 655350
net.netfilter.nf_conntrack_tcp_timeout_established = 1200
保存后执行 sysctl -p 使之生效,然后观察该错误是不是没有了。
Apr 6
使用权限
所有用户
语法格式
打开一个编辑器去修改或重新执行以前输入的命令  
fc [ -r ] [ -e Editor ] [ First [ Last ] ]
生成一个以前输入的命令的列表  
fc -l [ -n ] [ -r ] [ First [ Last ] ]
生成带执行时间的以前输入的命令的列表  
fc -t [ -n ] [ -r ] [ First [ Last ] ]  
重新执行以前输入的命令
fc -s [ Old= New ] [ First ]

使用说明

fc 命令显示了历史命令文件内容或调用一个编辑器去修改并重新执行以前在 shell 中输入的命令。 以下环境变量会影响 fc 命令的执行:  
EXTENDED_HISTORY 用来控制历史文件中命令执行时间的记录。                
                     如果变量设置为 ON,则记录时间,否则不记录时间。  
FCEDIT 当 shell 扩展该环境变量时,该变量确定了 -e editor 变量的缺省值。      
        如果环境变量 FCEDIT 为空值或没有被设置,则缺省使用 ed 编辑器。  
HISTDATEFMT 它用于控制 fc –t 命令显示的时间格式。            
               例如,如果 HISTDATEFMT=%Y,则 fc -t 将显示执行命令的年份。格式与 date 命令所做的相似。  
HISTFILE 确定历史命令文件的路径名。          
         如果环境变量 HISTFILE 没有被设置,则 shell 可能会尝试访问或创建在用户主目录中的          
         .sh_history 文件。 HISTSIZE 确定一个十进制数值,该数值表示了可以访问的以前输入的命令的数量限值。 如果没有设置该变量,则使用缺省值 128。

主要参数

-e Editor 使用指定的编辑器编辑命令。 Editor 参数应是一个命令名称。该命令用 PATH 环境变量指定位置。 当没有指定 -e 标志时,环境变量 FCEDIT 中的值被用作缺省值。 如果环境变量 FCEDIT 是空值或   没有设置,则使用 ed 编辑器。  

-l (L 的小写)列出了历史文件中的命令。不调用编辑器去修改它们。 按照 First 和 Last 参数所指定的顺序写命令,就象 -r 标志所作用的,在每一个命令的前面有一个命令编号。  

-n 当与 -l 标志一起使用时,隐藏命令编号。  

-r 逆转所列出命令的顺序(当使用 -l 标志)或者逆转所编辑的命令顺序(当没有指定 -l 标志时)。  

-s 不调用编辑器重新执行一个命令。如果也没有指定 First参数,则 -s 标志重新执行前一个命令。  

-t 在历史文件中列出命令及其执行时间。工作过程与 -l 标志类似,但是还显示命令的执行时间。 First or Last 选择要列出或编辑的命令。HISTSIZE 环境变量值确定了能够访问到的以前所输入命令的数量。

First 参数和 Last 参数必须具有以下数值中的一个:

[+] Number表示一个特定的命令编号。-l 标志可以显示命令编号。缺省值为一个 +(加符号)字符。

-Number表示一个以前执行的命令,由存储在历史列表中的命令编号指定。例如,-1 指出了前一个刚执行过的命令。

String 指出了最近所输入的命令,该命令以指定的字符串开头。 如果指定了 Old=New 参数但没有指定 -s 标志,则来自 First 参数的字符串中不能包含一个嵌入的 =(等于符号)。 当使用 -s 标志时,省略 First 参数将导致使用前一个命令。

应用实例

要对最近所使用的命令调用环境变量 FCEDIT 所定义的编辑器(缺省的编辑器是 /usr/bin/ed),请输入:
fc 当完成编辑之后,执行该命令。
要列出执行过的前两个命令,请输入:
fc -l -2
要找到以 cc 字符开始的命令,且将 foo 更改为 bar,并显示和执行该命令,请输入:
fc -s foo=bar cc
要列出先前执行的命令及其执行时间,请输入:
fc –t
Tags: , ,
分页: 5/10 第一页 上页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]