Chinaunix首页 | 论坛 | 博客
  • 博客访问: 59738
  • 博文数量: 20
  • 博客积分: 1031
  • 博客等级: 少尉
  • 技术积分: 230
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-11 14:22
文章分类

全部博文(20)

文章存档

2011年(2)

2010年(4)

2009年(14)

我的朋友

分类: LINUX

2009-09-25 09:12:20



这里主要记录几个可以用在开发板上的查看系统资源使用情况的命令,外加lsof命令
 
主要参考了这个网页:
外加自己在开发板和主机上试验并查看手册的一些笔记



1、ps命令
ps命令的扩展使用,选项“-eo”,查看手册知道“-e”选项表明显示所有的进程,等同于“-A”选项
 
ps -eo ppid,pid,user,args,%mem,vsz,rss --sort rss   #显示进程名,内存占用,虚拟内存,物理内存,并按照物理内存使用量排序
ps -eo ppid,pid,user,args,%mem,vsz,rss --sort vsz   #显示进程名,内存占用,虚拟内存,物理内存,并按照虚拟内存使用量排序
这两条命令在主机上试验了,很有感觉,又在开发板上试了试,用“ps -eo ppid,pid,vsz,rss,args”,可以显示所有进程使用的虚拟内存、物理内存,这对了解系统资源使用情况应该很有帮助?



2、sysctl命令
又看到一个命令sysctl,试了一下,开发板上可以用,查了一下man
       sysctl - configure kernel parameters at runtime
       ...
        -a     Display all values currently available.
也是个好东西啊!



3、lsusb命令
从lsof,用ls再加tab键,看到lsusb命令,试了下

[root@lb ~]# lsusb
Bus 002 Device 001: ID 0000:0000 
Bus 001 Device 017: ID 0e0f:0002 
Bus 001 Device 016: ID 0403:6001 Future Technology Devices International, Ltd 8-bit FIFO
Bus 001 Device 001: ID 0000:0000 
[root@lb ~]#
一开始还以为开玩笑的,google搜了一下,发现这个公司确有其实,进公司网站,看logo,再看Z-TEK的安装包,不难知道这是Z-TEK用的芯片的供应商



4、lsof命令
看了手册,感觉这个命令也很有用
man lsof
       lsof - list open files
 
从那个网页摘下来的常用用法,作个备忘:
    lsof abc.txt 显示开启文件abc.txt的进程
    lsof -i :22 知道22端口现在运行什么程序
    lsof -c abc 显示abc进程现在打开的文件
    lsof -g gid 显示归属gid的进程情况
    lsof +d /usr/local/ 显示目录下被进程开启的文件
    lsof +D /usr/local/ 同上,但是会搜索目录下的目录,时间较长
    lsof -d 4 显示使用fd为4的进程
    lsof -i 用以显示符合条件的进程情况


附:
ps命令里rss、vsz的原意
man ps
...
rss        RSS      resident set size, the non-swapped physical memory that a task has used (in kiloBytes)
...
vsz        VSZ      virtual memory size of the process in KiB (1024-byte units)
...





2011.2.5 ______________________________________________________________  

root 用户 vi不能语法高亮

环境:fedora-7.0
问题:root 时,vi 打开文件没有语法高亮。

在这里看到一个文章:
Fedora下用超级用户root操作vim不能语法高亮显示的解决方法

里面提到:
用root却不能vim语法高亮,解决的方法是
rm /bin/vi;
ln -s /usr/bin/vim /bin/vi;
因为在Fedora下vim被装在了/usr/bin/vim目录,这个目录不在超级用户root的环境变量中。

这种方法删除了一个系统自己的文件,不够好。

### ### ### ### ### ### ###

以其它用户登录,看了一下vi 的真实身份:
[***@localhost ~]$ which vi
alias vi='vim'
        /usr/bin/vim
可以看到,vim 有个小名“vi”,调用 vi 的时候,实际上系统会用vim。

有这条线索,在/root/.bashrc 里也依样画个瓢:
[root@localhost ~]# vi .bashrc
# .bashrc
...
alias vi='vim'
...

然后用 source 命令使之立即生效:
[root@localhost ~]# source .bashrc

看效果,成功了 ^_^

### ### ### ### ### ### ###

一点幕后花絮 :)

[root@localhost ~]# man source
...
       source filename [arguments]
              Read and execute commands from filename  in  the  current  shell
              environment  and return the exit status of the last command exe-
              cuted from filename.
...


[root@localhost ~]# man which
...
       which - shows the full path of (shell) commands.
...





2011.5.16 ______________________________________________________________

5、
find 命令

主要参考了这里:


“ -type ”这个参数很有用,意思是 查找某一类型的文件,如:
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。

还有 xargs 的使用,以下这些话摘自上面参考的网页:
在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。

find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。

在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;

而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。


综合上面两个知识点,写了下面这个小命令,功能是 给当前目录下没有执行权限的目录增加执行权限:
find -type d | xargs chmod u+x

注1:当目录不具备可执行权限的时候,就不能进去该目录;
注2:上面的命令需要执行多遍,才能把当前目录下的所有不具备可执行权限的目录都加上可执行权限;





2011.5.24 ______________________________________________________________

rpm -ql ***

查看rpm 包安装到那里去的;





2011.6.13 ______________________________________________________________

rpm 用法又知道一个: (看某文件是属于那个安装包)
rpm -qf /usr/bin/free
procps-3.2.8-12.fc14.1.i686






2011.6.15 ______________________________________________________________

rpm 用法又知道一个: (看某rpm文件将安装那些包,以及安装在何处)  ^_^
rpm -qpl FoxitReader-1.1-0.fc9.i386.rpm
/usr/bin/FoxitReader
/usr/share/applications/fedora-Foxit-Reader.desktop
/usr/share/foxit/fpdfcjk.bin
/usr/share/foxit/fum.fhd
/usr/share/icons/hicolor/48x48/apps/fx-icon
/usr/share/locale/de/LC_MESSAGES/FoxitReader.mo
/usr/share/locale/fr/LC_MESSAGES/FoxitReader.mo
/usr/share/locale/ja/LC_MESSAGES/FoxitReader.mo
/usr/share/locale/zh_CN/LC_MESSAGES/FoxitReader.mo
/usr/share/locale/zh_TW/LC_MESSAGES/FoxitReader.mo

还有一种情况是不包含安装目录,比如源代码的rpm 包,就会默认安装在当前用户的家目录的 rpmbuild 目录下; (是这样的吧,我猜的 ^_^)

例如:
rpm -qpl procps-1.2.4-1.src.rpm
procps-1.2.4.tar.gz
procps.spec

rpmbuild 一般会有两个子目录:
SOURCES SPECS

SOURCES  自然就是存 procps-1.2.4.tar.gz
SPECS 则保存  procps.spec





2011.5.25 ______________________________________________________________

今天又发现一个命令的用法,strace,把结果输出到一个文件里,正确的写法是:
strace -o loggggg.txt cat /dev/null


之前一直把 -o loggggg.txt 放在后面,结果总是打印一些奇怪的东西... :(

今天偶然看到下面网页里的文档:
http://www.cublog.cn/u/22617/showart_268876.html

其中有一个例子 “strace -f -F -o ... ....” 才想起来可能是放在后面造成不能正常的输出。

这个问题以前困扰过我,今朝得以解决,爽 :)



strace 还是有很多值得细究的,调试的时候应该很有用,记录一下:

-a column
设置返回值的输出位置.默认为 40.

-e expr 
指定一个表达式,用来控制如何跟踪.格式如下:

[qualifier=][!]value1[,value2]...

qualifier 只能是 trace,abbrev,verbose,raw,signal,read,write其中之一,默认的qualifier是 trace;
value 是用来限定的符号或数字;
感叹号 是否定符号;

举例如下:
-eopen 等价于 -e trace=open,表示只跟踪open调用;
-etrace!=open 表示跟踪 除了open以外 的其他调用;





2011.5.30 ______________________________________________________________

nfs 真简单啊! ^_^

fedora 7.0,只要在ntsysv 那里打开 rpcbind、nfs、nfslock 服务,再在 /etc/exports 里面加上 想要被加载的目录 和网段 就可以了:
/home 192.168.81.*(rw,sync,no_root_squash)
/media 192.168.81.*(rw,sync,no_root_squash)


主要参考了这里:
http://blogold.chinaunix.net/u2/63379/showart_503706.html


2011.7.25 ______________

遇到 “No route to host” 这样的报错,把iptables 的防火墙规则都清掉就可以了:
[root@linux-serve ~]# mount -t nfs 193.168.1.207:/home/freescale/test ./tmp
mount: mount to NFS server '193.168.1.207' failed: System Error: No route to host.






2011.6.13 ______________________________________________________________

如果直接vi 然后不输文件名,最后保存的时候可以用 :w yyyy.c ,将输入的内容保存在 yyyy.c 里;






2011.6.17 ______________________________________________________________

vi 的当前行多处替换可以直接用:
...
    total = (user + nice + system + idle, &iowait, &irq, &softirq, &steal, &guest);
...
:s/, &/ + /g

替换后变成:
...
    total = (user + nice + system + idle + iowait + irq + softirq + steal + guest);
...





2011.7.5 ______________________________________________________________

vi 的用法,新发现的,开心啊!

执行shell命令:
:!+cmd  

更厉害的是,如果想把shell命令的结果输入在文件中,可以这样做:
:.!+cmd

太牛了,唉,vi 用得越来越熟了,什么时候才能转到emacs 啊 ^_^





2011.7.5 ______________________________________________________________

man xargs 才知道这原来是一个命令 :)
xargs - build and execute command lines from standard input





2011.7.6 ______________________________________________________________

vi 对鼠标的使用,网上看到的资料,记录一下,以备忘用 :)

这个网址得来的资料:


用以下命令打开鼠标:
:set mouse=a

'mouse' 选项的字符决定 Vim 在什么场合下会使用鼠标:
n 普通模式
v 可视模式
i 插入模式
c 命令行模式
h 在帮助文件里,以上所有的模式
a 以上所有的模式
r 跳过 |hit-enter| 提示
A 在可视模式下自动选择

'mouse' 的缺省值为空,即不使用鼠标。





2011.7.27 ______________________________________________________________

知道了几个用户管理的命令,原来只会用whoami,现在知道了id、groups

id可以这么用:
打印当前用户:id -nu
打印当前组:id -ng

把 id 的manual 摘录如下:
man id
...
id - print user identity
...
-g, --group
print only the effective group ID
...
-n, --name
print a name instead of a number, for -ugG
...
-u, --user
print only the effective user ID
...


groups 就是打印当前用户所属用户组,同样摘点 manual 给大家看: ^_^
man groups
...
groups - print the groups a user is in
...





2011.8.9 ______________________________________________________________

刚发现了一个小窍门,find 查找的时候,如果要用万用符 * 来作为查询的匹配字符串,那么 匹配字符串要加上双引号,不然就会出错,如下:
[freescale@localhost samplecode]$ find -name Desktop_*
find: 路径必须在表达式之前
Usage: find [-H] [-L] [-P] [path...] [expression]

正确的如下:
[freescale@localhost samplecode]$ find -name "Desktop_*"
./chapter10/Desktop_1.ini
./chapter10/Desktop_2.ini
...





2011.11.1 ______________________________________________________________

今天觉得调试freescale平台的软件,ls出来的文件、文件夹没有颜色标识,看着有点晕,于是上网找解决方案,最终是在ourdev网站发帖,看回帖解决了这个问题,记录下来,以免忘记 ^_^

ourdev的帖子在这里:

解决思路和步骤是这样的:
1、先看 ls --color 是否能生效,如果不能生效,那是另外的情况,我这里是可以生效的,这里就按可以生效来说下面的步骤~
2、在开机脚本里面写入 alias ls='ls -- color'。这里我一开始在 /etc/profile 里写入这个命令,但是重启后不生效,于是在 /etc/ 目录下创建了bashrc ,在里面写入这个命令,再运行 source /etc/bashrc 就生效了;
3、想要重启生效,暂时还没弄,先记到这里,下次再补~
阅读(637) | 评论(0) | 转发(0) |
0

上一篇:一个编译的问题

下一篇:Makefile 实用笔记

给主人留下些什么吧!~~