Showing posts with label linux. Show all posts
Showing posts with label linux. Show all posts

Monday, November 7, 2011

linux中查看系统资源占用情况的命令

top:
主要参数
d:指定更新的间隔,以秒计算。
q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。
c:显示进程完整的路径与名称。
S:累积模式,会将己完成或消失的子行程的CPU时间累积起来。
s:安全模式。
i:不显示任何闲置(Idle)或无用(Zombie)的行程。
n:显示更新的次数,完成后将会退出to
显示参数:
PID(Process ID):进程标示号。
USER:进程所有者的用户名。
PR:进程的优先级别。
NI:进程的优先级别数值。
VIRT:进程占用的虚拟内存值。
RES:进程占用的物理内存值。
SHR:进程使用的共享内存值。
S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。
%CPU:该进程占用的CPU使用率。
%MEM:该进程占用的物理内存和总内存的百分比。
TIME+:该进程启动后占用的总的CPU时间。
Command:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。
top命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。
<空格>:立刻刷新。
P:根据CPU使用大小进行排序。
T:根据时间、累计时间排序。
q:退出top命令。
m:切换显示内存信息。
t:切换显示进程和CPU状态信息。
c:切换显示命令名称和完整命令行。
M:根据使用内存大小进行排序。
W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。

free
1.作用
free命令用来显示内存的使用情况,使用权限是所有用户。

2.格式
free [-b-k-m] [-o] [-s delay] [-t] [-V]

3.主要参数
-b -k -m:分别以字节(KB、MB)为单位显示内存使用情况。
-s delay:显示每隔多少秒数来显示一次内存使用情况。
-t:显示内存总和列。
-o:不显示缓冲区调节列。

uptime
18:59:15 up 25 min,  2 users,  load average: 1.23, 1.32, 1.21
现在的时间
系统开机运转到现在经过的时间
连线的使用者数量
最近一分钟,五分钟和十五分钟的系统负载
参数: -V 显示版本资讯。

vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r  b   swpd free   buff   cache    si   so    bi     bo    in    cs   us  sy  id wa
0  1  24980 10792 8296  47316    5   19   205    52  1161   698  26  3  1  70
1 观察磁盘活动情况
磁盘活动情况主要从以下几个指标了解:
bi:表示从磁盘每秒读取的块数(blocks/s)。数字越大,表示读磁盘的活动越多。
bo:表示每秒写到磁盘的块数(blocks/s)。数字越大,表示写磁盘的活动越多。
wa:cpu等待磁盘I/O(未决的磁盘IO)的时间比例。数字越大,表示文件系统活动阻碍cpu的情况越严重,因为cpu在等待慢速的磁盘系统提供数据。wa为0是最理想的。如果wa经常大于10,可能文件系统就需要进行性能调整了。
2 观察cpu活动情况
vmstat比top更能反映出cpu的使用情况:
us:用户程序使用cpu的时间比例。这个数字越大,表示用户进程越繁忙。
sy: 系统调用使用cpu的时间比例。注意,NFS由于是在内核里面运行的,所以NFS活动所占用的cpu时间反映在sy里面。这个数字经常很大的话,就需要注 意是否某个内核进程,比如NFS任务比较繁重。如果us和sy同时都比较大的话,就需要考虑将某些用户程序分离到另外的服务器上面,以免互相影响。
id:cpu空闲的时间比例。
wa:cpu等待未决的磁盘IO的时间比例。

iostat
用于统计CPU的使用情况及tty设备、硬盘和CD-ROM的I/0量
参数:
    -c      只显示CPU行
    -d      显示磁盘行
    -k      以千字节为单位显示磁盘输出
    -t       在输出中包括时间戳
    -x      在输出中包括扩展的磁盘指标

avg-cpu:  %user   %nice    %sys %iowait   %idle
          20.25    0.18    2.61   76.39    0.57
%iowait 等待本地I/O时CPU空闲时间的百分比
%idle 未等待本地I/O时CPU空闲时间的百分比

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
hda               9.86       284.34        84.48     685407     2036
每秒传输数(tps)、每秒512字节块读取数(Blk_read/s)、每秒512字节块写入数(Blk_wrtn/s)和512字节块读取(Blk_read)和写入(Blk_wrtn)的总数量。

一、如何查看服务器的CPU
今天安装了9台Linux服务器,型号完全不一样(有DELL、HP和IBM服务器),又懒得去对清单,如何在Linux下cpu的个数和核数呢? 另外,nginx的cpu工作模式也需要确切的知道linux服务器到底有多少个逻辑cpu,不过现在服务器那是相当的彪悍,直接上 worker_processes 8吧。
判断依据:
1.具有相同core id的cpu是同一个core的超线程。(Physical id and core id are not necessarily consecutive but they are unique. Any cpu with the same core id are hyperthreads in the same core.)
2.具有相同physical id的cpu是同一颗cpu封装的线程或者cores。(Any cpu with the same physical id are threads or cores in the same physical socket.)
以自己的惠普DL380G6为例说明:
①物理cpu个数:
[root@localhost ~]# cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
②每个物理cpu中core的个数(即核数)
[root@localhost ~]# cat /proc/cpuinfo | grep "cpu cores" | uniq
cpu cores : 4
这样可以推算出自己服务器的逻辑CPU为物理个数*核数,如果你的服务器是server2003,你可以在你的资源管理器里以图形化方式看到你的逻辑CPU个数。

二、查看服务器的内存情况
有时候,你运行了许多大的进程,比如你开启了300个fast-cgi。这时候你感觉系统很慢,便需要查看服务器的内存情况:
[root@server ~]# free -m
                     total used free shared buffers cached
Mem:            249   163    86            0        10         94
-/+ buffers/cache:   58  191
Swap:            511       0  511
参数解释:
total 内存总数
used 已经使用的内存数
free 空闲的内存数
shared 多个进程共享的内存总额
buffers Buffer Cache和cached Page Cache 磁盘缓存的大小
-buffers/cache (已用)的内存数:used - buffers - cached
+buffers/cache(可用)的内存数:free + buffers + cached
可用的memory=free memory+buffers+cached
上面的数值是一台我公司内网供PHP开发人员使用的DELL PE2850,内存为2G的服务器,其可使用内存为=217+515+826。记住,Linux的内存使用管理机制是有多少就用多少(特别是在频繁存取文件后),即Linux内存不是拿来看的,是拿来用的。


编辑推荐:Linux系统内存监控全面讲解:free命令

三、服务器磁盘使用情况
有时感觉硬盘反映很慢,或需要查看日志所在分区时,下列命令可以查看磁盘的使用情况,很有用:
①查看硬盘分区情况
fdisk -l
②查看当前硬盘使用情况
df -h
③查看硬盘性能
# iostat -x 1 10
Linux 2.6.18-92.el5xen                          03/01/2010

avg-cpu: %user %nice %system %iowait %steal %idle
                     1.10 0.00 4.82 39.54 0.07 54.46

Device:   rrqm/s wrqm/s       r/s       w/s     rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util

sda              0.00       3.50    0.40      2.50       5.60   48.00      18.48         0.00   0.97   0.97   0.28
sdb              0.00       0.00    0.00      0.00       0.00      0.00       0.00          0.00   0.00   0.00   0.00
sdc               0.00       0.00    0.00      0.00       0.00      0.00       0.00         0.00    0.00   0.00  0.00
sdd              0.00       0.00    0.00      0.00       0.00      0.00       0.00          0.00    0.00   0.00  0.00
sde              0.00       0.10    0.30      0.20       2.40      2.40       9.60          0.00    1.60   1.60  0.08
sdf             17.40       0.50 102.00    0.20 12095.20   5.60   118.40          0.70    6.81  2.09 21.36
sdg          232.40       1.90 379.70    0.50 76451.20 19.20   201.13          4.94 13.78   2.45 93.16
像我们公司,开发人员占多数。有时为了节约成本,会同时采购一些性价比比较高的二手服务器;这时一般将服务器的硬件的工作模式设置为RAID1,同 时对几种型号的服务器作相同文件的写操作,然后各自执行iostat –d,作对比性测试。这样服务器的硬盘性能孰优孰劣,一下子就能对比出来。


图解:
Tps 该设备每秒I/O传输的次数(每秒的I/O请求)
Blk_read/s 表求从该设备每秒读的数据块数量
Blk_wrth/s 表示从该设备每秒写的数据块数量
编辑推荐:Linux系统监控之磁盘I/O篇


四、查看系统内核
查看系统内核主要为了掌握其版本号,为安装LVS等软件做准备。
uname –a
有关查看内核信息的更多指令,可参考Linux查看版本信息及CPU内核、型号等一文。有关Linux的内核优化,则可参考Linux 2.6.31内核优化指南一文。

五、查看服务器使用的Linux发行版的名称、版本号及描述信息等
lsb_release -a
这是我的某台用于SVN实验的vmware机器情况:







六、查看服务器的平均负载
感觉到系统压力较大时用可top或uptime查看下服务器的平均负载。uptime的另一个用法是查看你的Linux服务器已经稳定运行多少天没有重启了,我这边的机器最高记录是360多天。

七、查看系统整体性能情况
如果感觉系统比较繁忙,可以用vmstat查看系统整体性能情况。vmstat不仅仅适应于linux系统,它一样适用于FreeBSD等unix系统。
vmstat 1 2
如果 r经常大于 4 ,且id经常少于40,表示cpu的负荷很重。
如果pi,po 长期不等于0,表示内存不足。
如果disk 经常不等于0, 且在 b中的队列 大于3, 表示 io性能不好。
编辑推荐:Linux系统监控工具之vmstat详解

八、查看系统已载入的相关模块
Linux操作系统的核心具有模块化的特性,应此在编译核心时,务须把全部的功能都放入核心。你可以将这些功能编译成一个个单独的模块,待需要时再分别载入。比如说在安装LVS+Keepalived,下列用法被经常用到:
#检查内核模块,看一下ip_vs是否被加载 lsmod |grep ip_vsip_vs 77313 0
如果要查看当前系统的已加载模块,直接lsmod。

九、Linux下查找PCI设置
有时需要在Linux下查找PCI设置,可用lspci命令,它可以列出机器中的PCI 设备,比如声卡、显卡、Modem、网卡等,主板集成设备也能列出来。lspci 读取的是hwdata 数据库。有的小伙可能和我一样,最关心的还是网卡型号:
[root@mail ~]# lspci | grep Ethernet
03:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5708 Gigabit Ethernet (rev 12)
07:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5708 Gigabit Ethernet (rev 12)

推荐阅读:七大实用命令行工具 玩转Linux网络配置。至于网络流量的监控,建议用centos自带的工具iptraf,其用法可参考这篇文章

掌握上面这九条,你对你的Linux服务器的硬件信息基本就可以随时掌控了。

Wednesday, October 19, 2011

awesome wm ,keep client on top

使当前窗口保持在最顶端:
clientkeys = awful.util.table.join(
...
awful.key({ modkey, "Shift" }, "t", function (c) c.ontop = not c.ontop end),
...
)
或者加到awful.rules中,如对mplayer
-- {{{ Rules
awful.rules.rules = {
-- All clients will match this rule.
{ rule = { class = "MPlayer" },
properties = { floating = true,
ontop = true } },
}
-- }}}

Friday, October 14, 2011

[转]linux常见命令的列表

原文  http://www.pixelbeat.org/cmdline_zh_CN.html

这是一个linux常见命令的列表。
那些有• 标记的条目,你可以直接拷贝到终端上而不需要任何修改,因此你最好开一个终端边读边剪切&拷贝
所有的命令已在Fedora和Ubuntu下做了测试


命令描述
apropos whatis显示和word相关的命令。 参见线程安全
man -t man | ps2pdf - > man.pdf生成一个PDF格式的帮助文件
 which command显示命令的完整路径名
 time command计算命令运行的时间
time cat开始计时. Ctrl-d停止。参见sw
nice info运行一个低优先级命令(这里是info)
renice 19 -p $$使脚本运行于低优先级。用于非交互任务。
目录操作
cd -回到前一目录
cd回到用户目录
 (cd dir && command)进入目录dir,执行命令command然后回到当前目录
pushd .将当前目录压入栈,以后你可以使用popd回到此目录
alias l='ls -l --color=auto'单字符文件列表命令
ls -lrt按日期显示文件. 参见newest
ls /usr/bin | pr -T9 -W$COLUMNS在当前终端宽度上打印9列输出
 find -name '*.[ch]' | xargs grep -E 'expr'在当前目录及其子目录下所有.c和.h文件中寻找'expr'. 参见findrepo
 find -type f -print0 | xargs -r0 grep -F 'example'在当前目录及其子目录中的常规文件中查找字符串'example'
 find -maxdepth 1 -type f | xargs grep -F 'example'在当前目录下查找字符串'example'
 find -maxdepth 1 -type d | while read dir; do echo $dir; echo cmd2; done对每一个找到的文件执行多个命令(使用while循环)
find -type f ! -perm -444寻找所有不可读的文件(对网站有用)
find -type d ! -perm -111寻找不可访问的目录(对网站有用)
locate -r 'file[^/]*\.txt'使用locate 查找所有符合*file*.txt的文件
look reference在(有序)字典中快速查找
grep --color reference /usr/share/dict/words使字典中匹配的正则表达式高亮
归档 and compression
 gpg -c file文件加密
 gpg file.gpg文件解密
 tar -c dir/ | bzip2 > dir.tar.bz2将目录dir/压缩打包
 bzip2 -dc dir.tar.bz2 | tar -x展开压缩包 (对tar.gz文件使用gzip而不是bzip2)
 tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'目录dir/压缩打包并放到远程机器上
 find dir/ -name '*.txt' | tar -c --files-from=- | bzip2 > dir_txt.tar.bz2将目录dir/及其子目录下所有.txt文件打包
 find dir/ -name '*.txt' | xargs cp -a --target-directory=dir_txt/ --parents将目录dir/及其子目录下所有.txt按照目录结构拷贝到dir_txt/
 ( tar -c /dir/to/copy ) | ( cd /where/to/ && tar -x -p )拷贝目录copy/到目录/where/to/并保持文件属性
 ( cd /dir/to/copy && tar -c . ) | ( cd /where/to/ && tar -x -p )拷贝目录copy/下的所有文件到目录/where/to/并保持文件属性
 ( tar -c /dir/to/copy ) | ssh -C user@remote 'cd /where/to/ && tar -x -p' 拷贝目录copy/到远程目录/where/to/并保持文件属性
 dd bs=1M if=/dev/sda | gzip | ssh user@remote 'dd of=sda.gz'将整个硬盘备份到远程机器上
rsync (使用 --dry-run选项进行测试)
 rsync -P rsync://rsync.server.com/path/to/file file只获取diffs.当下载有问题时可以作多次
 rsync --bwlimit=1000 fromfile tofile有速度限制的本地拷贝,对I/O有利
 rsync -az -e ssh --delete ~/public_html/ remote.com:'~/public_html'镜像网站(使用压缩和加密)
 rsync -auz -e ssh remote:/dir/ . && rsync -auz -e ssh . remote:/dir/同步当前目录和远程目录
ssh (安全 Shell)
 ssh $USER@$HOST command在$Host主机上以$User用户运行命令(默认命令为Shell)
ssh -f -Y $USER@$HOSTNAME xeyes在名为$HOSTNAME的主机上以$USER用户运行GUI命令
 scp -p -r $USER@$HOST: file dir/拷贝到$HOST主机$USER'用户的目录下
 ssh -g -L 8080:localhost:80 root@$HOST由本地主机的8080端口转发到$HOST主机的80端口
 ssh -R 1434:imap:143 root@$HOST由主机的1434端口转发到imap的143端口
wget (多用途下载工具)
(cd cmdline && wget -nd -pHEKk http://www.pixelbeat.org/cmdline.html)在当前目录中下载指定网页及其相关的文件使其可完全浏览
 wget -c http://www.example.com/large.file继续上次未完的下载
 wget -r -nd -np -l1 -A '*.jpg' http://www.example.com/批量下载文件到当前目录中
 wget ftp://remote/file[1-9].iso/下载FTP站上的整个目录
wget -q -O- http://www.pixelbeat.org/timeline.html | grep 'a href' | head直接处理输出
 echo 'wget url' | at 01:00在下午一点钟下载指定文件到当前目录
 wget --limit-rate=20k url限制下载速度(这里限制到20KB/s)
 wget -nv --spider --force-html -i bookmarks.html检查文件中的链接是否存在
 wget --mirror http://www.example.com/更新网站的本地拷贝(可以方便地用于cron)
网络(ifconfig, route, mii-tool, nslookup 命令皆已过时)
 ethtool eth0显示网卡eth0的状态
 ethtool --change eth0 autoneg off speed 100 duplex full手动设制网卡速度
 iwconfig eth1显示无线网卡eth1的状态
 iwconfig eth1 rate 1Mb/s fixed手动设制无线网卡速度
iwlist scan显示无线网络列表
ip link show显示interface列表
 ip link set dev eth0 name wan重命名eth0为wan
 ip link set dev eth0 up启动interface eth0(或关闭)
ip addr show显示网卡的IP地址
 ip addr add 1.2.3.4/24 brd + dev eth0添加ip和掩码(255.255.255.0)
ip route show显示路由列表
 ip route add default via 1.2.3.254设置默认网关1.2.3.254
tc qdisc add dev lo root handle 1:0 netem delay 20msec增加20ms传输时间到loopback设备(调试用)
tc qdisc del dev lo root移除上面添加的传输时间
host pixelbeat.org查寻主机的DNS IP地址
hostname -i查寻本地主机的IP地址(同等于host `hostname`)
whois pixelbeat.org查寻某主机或莫IP地址的whois信息
netstat -tupl列出系统中的internet服务
netstat -tup列出活跃的连接
windows networking (samba提供所有windows相关的网络支持)
smbtree寻找一个windows主机. 参见findsmb
 nmblookup -A 1.2.3.4寻找一个指定ip的windows (netbios)名
 smbclient -L windows_box显示在windows主机或samba服务器上的所有共享
 mount -t smbfs -o fmask=666,guest //windows_box/share /mnt/share挂载一个windows共享
 echo 'message' | smbclient -M windows_box发送一个弹出信息到windows主机(XP sp2默认关闭此功能)
文本操作 (sed使用标准输入和标准输出,如果想要编辑文件,则需添加newfile)
 sed 's/string1/string2/g'使用string2替换string1
 sed 's/\(.*\)1/\12/g'将任何以1结尾的字符串替换为以2结尾的字符串
 sed '/ *#/d; /^ *$/d'删除注释和空白行
 sed ':a; /\\$/N; s/\\\n//; ta'连接结尾有\的行和其下一行
 sed 's/[ \t]*$//'删除每行后的空白
 sed 's/\([\\`\\"$\\\\]\)/\\\1/g'将所有转义字符之前加上\
seq 10 | sed "s/^/      /; s/ *\(.\{7,\}\)/\1/"向右排N(任意数)列
 sed -n '1000p;1000q'输出第一千行
 sed -n '10,20p;20q'输出第10-20行
 sed -n 's/.*\(.*\)<\/title>.*/\1/ip;<acronym title="quit after match">T;q</acronym>'</td><td>输出HTML文件的<title>字段中的 内容
 sort -t. -k1,1n -k2,2n -k3,3n -k4,4n排序IPV4地址
echo 'Test' | tr '[:lower:]' '[:upper:]'转换成大写
tr -dc '[:print:]' < /dev/urandom过滤掉不能打印的字符
history | wc -l计算指定单词出现的次数
集合操作 (如果是英文文本的话export LANG=C可以提高速度)
 sort file1 file2 | uniq两个未排序文件的并集
 sort file1 file2 | uniq -d两个未排序文件的交集
 sort file1 file1 file2 | uniq -u两个未排序文件的差 集
 sort file1 file2 | uniq -u两个未排序文件的对称差集
 join -t'\0' -a1 -a2 file1 file2两个有序文件的并集
 join -t'\0' file1 file2两个有序文件的交集
 join -t'\0' -v2 file1 file2两个有序文件的差集
 join -t'\0' -v1 -v2 file1 file2两个有序文件的对称差集
数学
echo '(1 + sqrt(5))/2' | bc -l方便的计算器(计算 φ)
echo 'pad=20; min=64; (100*10^6)/((pad+min)*8)' | bc更复杂地计算,这里计算了最大的FastE包率
echo 'pad=20; min=64; print (100E6)/((pad+min)*8)' | pythonPython处理数值的科学表示法
echo 'pad=20; plot [64:1518] (100*10**6)/((pad+x)*8)' | gnuplot -persist显示FastE包率相对于包大小的图形
echo 'obase=16; ibase=10; 64206' | bc进制转换(十进制到十六进制)
echo $((0x2dec))进制转换(十六进制到十进制)((shell数学扩展))
units -t '100m/9.58s' 'miles/hour'单位转换(公尺到英尺)
units -t '500GB' 'GiB'单位转换(SIIEC 前缀)
units -t '1 googol'定义查找
seq 100 | (tr '\n' +; echo 0) | bc加N(任意数)列. 参见 add and funcpy
日历
cal -3显示一日历
cal 9 1752显示指定月,年的日历
date -d fri这个星期五是几号. 参见day
date --date='25 Dec' +%A今年的圣诞节是星期几
date --date '1970-01-01 UTC 2147483647 seconds'将一相对于1970-01-01 00:00的秒数转换成时间
TZ=':America/Los_Angeles' date显示当前的美国西岸时间(使用tzselect寻找时区)
 echo "mail -s 'get the train' P@draigBrady.com < /dev/null" | at 17:45在指定的时间发送邮件
echo "DISPLAY=$DISPLAY xmessage cooker" | at "NOW + 30 minutes"在给定的时间弹出对话框
locales
printf "%'d\n" 1234根据locale输出正确的数字分隔
BLOCK_SIZE=\'1 ls -l用ls命令作类适于locale()文件分组
echo "I live in `locale territory`"从locale数据库中展开信息
LANG=en_IE.utf8 locale int_prefix查找指定地区的locale信息。参见ccodes
locale | cut -d= -f1 | xargs locale -kc | less显示在locale数据库中的所有字段
recode (iconv, dos2unix, unix2dos 已经过时了)
recode -l | less显示所有有效的字符集及其别名
 recode windows-1252.. file_to_change.txt转换Windows下的ansi文件到当前的字符集(自动进行回车换行符的转换)
 recode utf-8/CRLF.. file_to_change.txt转换Windows下的ansi文件到当前的字符集
 recode iso-8859-15..utf8 file_to_change.txt转换Latin9(西欧)字符集文件到utf8
 recode ../b64 < file.txt > file.b64Base64编码
 recode /qp.. < file.txt > file.qpQuoted-printable格式解码
 recode ..HTML < file.txt > file.html将文本文件转换成HTML
recode -lf windows-1252 | grep euro字符表中查找欧元符号
echo -n 0x80 | recode latin-9/x1..dump显示字符在latin-9中的字符映射
echo -n 0x20AC | recode ucs-2/x2..latin-9/x显示latin-9编码
echo -n 0x20AC | recode ucs-2/x2..utf-8/x显示utf-8编码
光盘
 gzip < /dev/cdrom > cdrom.iso.gz保存光盘拷贝
 mkisofs -V LABEL -r dir | gzip > cdrom.iso.gz建立目录dir的光盘镜像
 mount -o loop cdrom.iso /mnt/dir将光盘镜像挂载到 /mnt/dir (只读)
 cdrecord -v dev=/dev/cdrom blank=fast清空一张CDRW
 gzip -dc cdrom.iso.gz | cdrecord -v dev=/dev/cdrom -烧录光盘镜像 (使用 dev=ATAPI -scanbus 来确认该使用的 dev)
 cdparanoia -B在当前目录下将光盘音轨转录成wav文件
 cdrecord -v dev=/dev/cdrom -audio *.wav将当前目录下的wav文件烧成音乐光盘 (参见cdrdao)
 oggenc --tracknum='track' track.cdda.wav -o 'track.ogg'将wav文件转换成ogg格式
磁盘空间 (参见FSlint)
ls -lSr按文件大小降序显示文件
du -s * | sort -k1,1rn | head显示当前目录下占用空间最大的一批文件. 参见dutop
df -h显示空余的磁盘空间
df -i显示空余的inode
fdisk -l显示磁盘分区大小和类型(在root下执行)
rpm -q -a --qf '%10{SIZE}\t%{NAME}\n' | sort -k1,1n显示所有在rpm发布版上安装的,并以包字节大小为序
dpkg-query -W -f='${Installed-Size;10}\t${Package}\n' | sort -k1,1n显示所有在deb发布版上安装的,并以KB包大小为序
dd bs=1 seek=2TB if=/dev/null of=ext3.test建立一个大的测试文件(不占用空间). 参见truncate
监视/调试
tail -f /var/log/messages监视Messages日志文件
strace -c ls >/dev/null总结/剖析命令进行的系统调用
strace -f -e open ls >/dev/null显示命令进行的系统调用
ltrace -f -e getenv ls >/dev/null显示命令调用的库函数
lsof -p $$显示当前进程打开的文件
lsof ~显示打开用户目录的进程
tcpdump not port 22显示除了ssh外的网络交通. 参见tcpdump_not_me
ps -e -o pid,args --forest以树状结构显示进程
ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed '/^ 0.0 /d'以CPU占用率为序显示进程
ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS以内存使用量为序显示进程. 参见ps_mem.py
ps -C firefox-bin -L -o pid,tid,pcpu,state显示指定进程的所有线程信息
ps -p 1,2显示指定进程ID的进程信息
last reboot显示系统重启记录
free -m显示(剩余的)内存总量(-m以MB为单位显示)
watch -n.1 'cat /proc/interrupts'监测文件/proc/interrupts的变化
系统信息 (参见sysinfo)
uname -a查看内核/操作系统/CPU信息
head -n1 /etc/issue查看操作系统版本
cat /proc/partitions显示所有在系统中注册的分区
grep MemTotal /proc/meminfo显示系统可见的内存总量
grep "model name" /proc/cpuinfo显示CPU信息
lspci -tv显示PCI信息
lsusb -tv显示USB信息
mount | column -t显示所有挂载的文件系统并对齐输出
#dmidecode -q | less显示SMBIOS/DMI 信息
#smartctl -A /dev/sda | grep Power_On_Hours系统开机的总体时间
#hdparm -i /dev/sda显示关于磁盘sda的信息
#hdparm -tT /dev/sda检测磁盘sda的读取速度
#badblocks -s /dev/sda检测磁盘sda上所有的坏扇区
交互 (参见linux keyboard shortcut database)
readlineLine editor used by bash, python, bc, gnuplot, ...
screen多窗口的虚拟终端, ...
mc强大的文件管理器,可以浏览rpm, tar, ftp, ssh, ...
gnuplot交互式并可进行脚本编程的画图工具
links网页浏览器
miscellaneous
alias hd='od -Ax -tx1z -v'方便的十六进制输出。 (用法举例: • hd /proc/self/cmdline | less)
alias realpath='readlink -f'显示符号链接指向的真实路径((用法举例: • realpath ~/../$USER)
set | grep $USER在当前环境中查找
 touch -c -t 0304050607 file改变文件的时间标签 (YYMMDDhhmm)
python -m SimpleHTTPServerServe current directory tree at http://$HOSTNAME:8000/

[转]Linux系统信息查看命令大全

 版权声明:可以任意转载,但转载时必须标明原作者charlee、原始链接http://tech.idv2.com/2008/01/11/linux-sysinfo-cmds/以及本声明。


最近看了一些Linux命令行的文章,在系统信息查看方面学到不少命令。 想起以前写过的一篇其实Linux这样用更简单, 发现这些系统信息查看命令也可以总结出一篇小小的东西来了。
另外这里还有非常多的命令, 可以作为参考。
系统
# uname -a               # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue   # 查看操作系统版本
# cat /proc/cpuinfo      # 查看CPU信息
# hostname               # 查看计算机名
# lspci -tv              # 列出所有PCI设备
# lsusb -tv              # 列出所有USB设备
# lsmod                  # 列出加载的内核模块
# env                    # 查看环境变量
资源
# free -m                # 查看内存使用量和交换区使用量
# df -h                  # 查看各分区使用情况
# du -sh <目录名>        # 查看指定目录的大小
# grep MemTotal /proc/meminfo   # 查看内存总量
# grep MemFree /proc/meminfo    # 查看空闲内存量
# uptime                 # 查看系统运行时间、用户数、负载
# cat /proc/loadavg      # 查看系统负载
磁盘和分区
# mount | column -t      # 查看挂接的分区状态
# fdisk -l               # 查看所有分区
# swapon -s              # 查看所有交换分区
# hdparm -i /dev/hda     # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE       # 查看启动时IDE设备检测状况
网络
# ifconfig               # 查看所有网络接口的属性
# iptables -L            # 查看防火墙设置
# route -n               # 查看路由表
# netstat -lntp          # 查看所有监听端口
# netstat -antp          # 查看所有已经建立的连接
# netstat -s             # 查看网络统计信息
进程
# ps -ef                 # 查看所有进程
# top                    # 实时显示进程状态
用户
# w                      # 查看活动用户
# id <用户名>            # 查看指定用户信息
# last                   # 查看用户登录日志
# cut -d: -f1 /etc/passwd   # 查看系统所有用户
# cut -d: -f1 /etc/group    # 查看系统所有组
# crontab -l             # 查看当前用户的计划任务
服务
# chkconfig --list       # 列出所有系统服务
# chkconfig --list | grep on    # 列出所有启动的系统服务
程序
# rpm -qa                # 查看所有安装的软件包

Tuesday, October 4, 2011

flash全屏的时候停止gnome屏幕保护disable screen saver when looking at flash videos(youtube, vimeo, youku,etc)

~/dis.sh.html
# gnome环境当开启flash全屏播放的时候禁用屏幕保护 

#!/bin/bash 


# cleanup any bad state we left behind if the user exited while flash was running
gconftool-2 -s /apps/gnome-screensaver/idle_activation_enabled --type bool true

turn_it_off=0
sleepcomputer0=`gconftool-2 -g /apps/gnome-power-manager/timeout/sleep_computer_ac`
sleepdisplay0=`gconftool-2 -g /apps/gnome-power-manager/timeout/sleep_display_ac`

# run loop forever
while true; do
  # interval between checks
  sleep 30
  SS_off=0
  # make id variable of window in focus
  current_window_id=`xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | cut -d" " -f5`
  # make pid array of every command with libflashplayer in full(-f) command
  for pid in `pgrep -f libflashplayer` ; do
    # check if window in focus is our libflashplayer
    if [ $pid == `xprop -id $current_window_id | grep PID | cut -d" " -f3` ]
      then SS_off=1
    fi
  done

# check to see if xine is being used
#  if pgrep xine > /dev/null; then
#    SS_off=1
#  fi
#
# check to see if current application is fullscreen
#  current_window_id=`xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | cut -d" " -f5`
#  if xprop -id $current_window_id | grep "_NET_WM_STATE_FULLSCREEN" > /dev/null; then
#    SS_off=1
#  fi

  # read current state of screensaver
  ss_on=`gconftool-2 -g /apps/gnome-screensaver/idle_activation_enabled`

  # change state of screensaver as necessary
  if [ "$SS_off" = "1" ] && [ "$ss_on" = "true" ]; then
    gconftool-2 -s /apps/gnome-screensaver/idle_activation_enabled --type bool false
    gconftool-2 -s /apps/gnome-power-manager/timeout/sleep_computer_ac --type int 0
    gconftool-2 -s /apps/gnome-power-manager/timeout/sleep_display_ac --type int 0
    turn_it_off=1
  elif [ "$SS_off" = "0" ] && [ "$ss_on" = "false" ] && [ "$turn_it_off" = "1" ]; then
    gconftool-2 -s /apps/gnome-screensaver/idle_activation_enabled --type bool true
    gconftool-2 -s /apps/gnome-power-manager/timeout/sleep_computer_ac --type int $sleepcomputer0
    gconftool-2 -s /apps/gnome-power-manager/timeout/sleep_display_ac --type int $sleepdisplay0
    turn_it_off=0
  fi
done



#Reference: http://ubuntuforums.org/showthread.php?p=10832670#post10832670