=====================================================================================================

strace调试进程





  查看进程在做那些底层调用

  

[root@limt01 ~]# ps -ef|grep less

root     10932 10822  0 19:28 pts/2    00:00:00 less install.log

root     10935 10782  0 19:28 pts/1    00:00:00 grep less

[root@limt01 ~]# strace -p 10932

Process 10932 attached - interrupt to quit

read(3, 





上面表示进程在做read函数调用





   某个进程启动失败





查看ls命令依赖的库

[root@limt01 ~]# ldd /bin/ls

        linux-vdso.so.1 =>  (0x00007fff4e7ff000)

        libselinux.so.1 => /lib64/libselinux.so.1 (0x0000003a49200000)

        librt.so.1 => /lib64/librt.so.1 (0x0000003a48e00000)

        libcap.so.2 => /lib64/libcap.so.2 (0x0000003a4b200000)

        libacl.so.1 => /lib64/libacl.so.1 (0x0000003a56e00000)

        libc.so.6 => /lib64/libc.so.6 (0x0000003a47e00000)

        libdl.so.2 => /lib64/libdl.so.2 (0x0000003a48200000)

        /lib64/ld-linux-x86-64.so.2 (0x0000003a47600000)

        libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003a48600000)

        libattr.so.1 => /lib64/libattr.so.1 (0x0000003a55a00000)

[root@limt01 ~]# mv /lib64/libattr.so.1 /lib64/libattr.so.1.bak

[root@limt01 ~]# ls

ls: error while loading shared libraries: libattr.so.1: cannot open shared object file: No such file or directory

[root@limt01 ~]# strace ls

execve("/bin/ls", ["ls"], [/* 35 vars */]) = 0

brk(0)                                  = 0x19c9000

mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fa4e641a000

access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)

open("/etc/ld.so.cache", O_RDONLY)      = 3

fstat(3, {st_mode=S_IFREG|0644, st_size=166426, ...}) = 0

.....

.....

.....                          

stat("/lib64", {st_mode=S_IFDIR|0555, st_size=12288, ...}) = 0

open("/usr/lib64/tls/x86_64/libattr.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)

stat("/usr/lib64/tls/x86_64", 0x7fff5fa94ff0) = -1 ENOENT (No such file or directory)

open("/usr/lib64/tls/libattr.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)

stat("/usr/lib64/tls", {st_mode=S_IFDIR|0555, st_size=4096, ...}) = 0

open("/usr/lib64/x86_64/libattr.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)

stat("/usr/lib64/x86_64", 0x7fff5fa94ff0) = -1 ENOENT (No such file or directory)

open("/usr/lib64/libattr.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)

stat("/usr/lib64", {st_mode=S_IFDIR|0555, st_size=139264, ...}) = 0

writev(2, [{"ls", 2}, {": ", 2}, {"error while loading shared libra"..., 36}, {": ", 2}, {"libattr.so.1", 12}, {": ", 2}, {"cannot open shared object file", 30}, {": ", 2}, {"No such file or directory", 25}, {"\n", 1}], 10ls: error while loading shared libraries:
libattr.so.1: cannot open shared object file: No such file or directory

) = 114

exit_group(127)                         = ?





显示无法找到库文件/usr/lib64/libattr.so.1

=====================================================================================================

ldd 查看程序依赖那些库





[root@limt01 lib]# ldd /bin/ls

        linux-vdso.so.1 =>  (0x00007fffe358b000)

        libselinux.so.1 => /lib64/libselinux.so.1 (0x0000003a49200000)

        librt.so.1 => /lib64/librt.so.1 (0x0000003a48e00000)

        libcap.so.2 => /lib64/libcap.so.2 (0x0000003a4b200000)

        libacl.so.1 => /lib64/libacl.so.1 (0x0000003a56e00000)

        libc.so.6 => /lib64/libc.so.6 (0x0000003a47e00000)

        libdl.so.2 => /lib64/libdl.so.2 (0x0000003a48200000)

        /lib64/ld-linux-x86-64.so.2 (0x0000003a47600000)

        libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003a48600000)

        libattr.so.1 => /lib64/libattr.so.1 (0x0000003a55a00000)





=====================================================================================================

查看进程树





[root@limt01 lib]# pstree 1

init─┬─NetworkManager─┬─dhclient

     │                └─{NetworkManager}

     ├─abrtd

     ├─acpid

     ├─atd

     ├─auditd─┬─audispd─┬─sedispatch

     │        │         └─{audispd}

     │        └─{auditd}

     ├─automount───4*[{automount}]

     ├─bonobo-activati───{bonobo-activat}

     ├─certmonger

     ├─console-kit-dae───63*[{console-kit-da}]

     ├─crond

     ├─cupsd

     ├─2*[dbus-daemon───{dbus-daemon}]

     ├─dbus-launch

     ├─devkit-power-da

     ├─fcoemon

     ├─gconfd-2





=====================================================================================================

top 监控进程





[root@limt01 lib]# top





top - 09:29:16 up 11 min,  1 user,  load average: 0.00, 0.03, 0.04

Tasks: 193 total,   1 running, 192 sleeping,   0 stopped,   0 zombie

Cpu(s):  0.4%us,  0.8%sy,  0.0%ni, 97.5%id,  1.2%wa,  0.0%hi,  0.0%si,  0.0%st

Mem:   2054116k total,   358856k used,  1695260k free,    40200k buffers

Swap:  4128760k total,        0k used,  4128760k free,   122544k cached





  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                

    1 root      20   0 19364 1504 1188 S  0.0  0.1   0:02.08 init                                                                   

    2 root      20   0     0    0    0 S  0.0  0.0   0:00.02 kthreadd                                                               

    3 root      RT   0     0    0    0 S  0.0  0.0   0:00.12 migration/0                                                            

    4 root      20   0     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0                                                            

    5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0                                                            

    6 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 watchdog/0                                                             

    7 root      RT   0     0    0    0 S  0.0  0.0   0:00.06 migration/1         





=====================================================================================================

查看进程函数调用栈





[root@limt01 lib]# ps -ef|grep less

root      2960  2932  0 09:30 pts/1    00:00:00 less install.log

root      2965  2835  0 09:31 pts/0    00:00:00 grep less

[root@limt01 lib]# pstack 2960

#0  0x0000003a47edb730 in __read_nocancel () from /lib64/libc.so.6

#1  0x0000000000411b26 in ?? ()

#2  0x0000000000415785 in ?? ()

#3  0x0000000000408815 in ?? ()

#4  0x000000000040203e in ?? ()

#5  0x0000003a47e1ed1d in __libc_start_main () from /lib64/libc.so.6

#6  0x0000000000401a49 in ?? ()

#7  0x00007fff4d9b7658 in ?? ()

#8  0x000000000000001c in ?? ()

#9  0x0000000000000002 in ?? ()

#10 0x00007fff4d9b9753 in ?? ()

#11 0x00007fff4d9b9758 in ?? ()

#12 0x0000000000000000 in ?? ()





=====================================================================================================

nm 命令显示关于指定 File 中符号的信息,文件可以是对象文件、可执行文件或对象文件库。





[root@limt01 lib64]# nm -C /lib64/libdl-2.12.so 

0000000000000000 A GLIBC_2.2.5

0000000000000000 A GLIBC_2.3.3

0000000000000000 A GLIBC_2.3.4

0000000000000000 A GLIBC_PRIVATE

0000003a48402da0 a _DYNAMIC

0000003a48402fe8 a _GLOBAL_OFFSET_TABLE_

                 w _Jv_RegisterClasses

0000003a48402d70 d __CTOR_END__

0000003a48402d68 d __CTOR_LIST__

0000003a48402d88 d __DTOR_END__

0000003a48402d78 d __DTOR_LIST__

0000003a48201e40 r __FRAME_END__

0000003a484030a0 b __GI__dlfcn_hook

0000003a48402d90 d __JCR_END__

0000003a48402d90 d __JCR_LIST__





=====================================================================================================

ps 显示进程相关信息





[root@limt01 lib64]# ps -efl|less

F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD

4 S root         1     0  0  80   0 -  4841 poll_s 09:17 ?        00:00:02 /sbin/init

1 S root         2     0  0  80   0 -     0 kthrea 09:17 ?        00:00:00 [kthreadd]

1 S root         3     2  0 -40   - -     0 migrat 09:17 ?        00:00:00 [migration/0]

1 S root         4     2  0  80   0 -     0 ksofti 09:17 ?        00:00:00 [ksoftirqd/0]

1 S root         5     2  0 -40   - -     0 cpu_st 09:17 ?        00:00:00 [migration/0]

5 S root         6     2  0 -40   - -     0 watchd 09:17 ?        00:00:00 [watchdog/0]

1 S root         7     2  0 -40   - -     0 migrat 09:17 ?        00:00:00 [migration/1]

1 S root         8     2  0 -40   - -     0 cpu_st 09:17 ?        00:00:00 [migration/1]

1 S root         9     2  0  80   0 -     0 ksofti 09:17 ?        00:00:00 [ksoftirqd/1]

5 S root        10     2  0 -40   - -     0 watchd 09:17 ?        00:00:00 [watchdog/1]

1 S root        11     2  0 -40   - -     0 migrat 09:17 ?        00:00:00 [migration/2]

1 S root        12     2  0 -40   - -     0 cpu_st 09:17 ?        00:00:00 [migration/2]

1 S root        13     2  0  80   0 -     0 ksofti 09:17 ?        00:00:00 [ksoftirqd/2]

5 S root        14     2  0 -40   - -     0 watchd 09:17 ?        00:00:00 [watchdog/2]

1 S root        15     2  0 -40   - -     0 migrat 09:17 ?        00:00:00 [migration/3]

1 S root        16     2  0 -40   - -     0 cpu_st 09:17 ?        00:00:00 [migration/3]

1 S root        17     2  0  80   0 -     0 ksofti 09:17 ?        00:00:00 [ksoftirqd/3]

5 S root        18     2  0 -40   - -     0 watchd 09:17 ?        00:00:00 [watchdog/3]

1 S root        19     2  0  80   0 -     0 worker 09:17 ?        00:00:00 [events/0]

1 S root        20     2  0  80   0 -     0 worker 09:17 ?        00:00:00 [events/1]

1 S root        21     2  0  80   0 -     0 worker 09:17 ?        00:00:00 [events/2]

1 S root        22     2  0  80   0 -     0 worker 09:17 ?        00:00:00 [events/3]

1 S root        23     2  0  80   0 -     0 worker 09:17 ?        00:00:00 [cgroup]









[root@limt01 lib64]# ps aux|less

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

root         1  0.1  0.0  19364  1504 ?        Ss   09:17   0:02 /sbin/init

root         2  0.0  0.0      0     0 ?        S    09:17   0:00 [kthreadd]

root         3  0.0  0.0      0     0 ?        S    09:17   0:00 [migration/0]

root         4  0.0  0.0      0     0 ?        S    09:17   0:00 [ksoftirqd/0]

root         5  0.0  0.0      0     0 ?        S    09:17   0:00 [migration/0]

root         6  0.0  0.0      0     0 ?        S    09:17   0:00 [watchdog/0]

root         7  0.0  0.0      0     0 ?        S    09:17   0:00 [migration/1]

root         8  0.0  0.0      0     0 ?        S    09:17   0:00 [migration/1]

root         9  0.0  0.0      0     0 ?        S    09:17   0:00 [ksoftirqd/1]

root        10  0.0  0.0      0     0 ?        S    09:17   0:00 [watchdog/1]

root        11  0.0  0.0      0     0 ?        S    09:17   0:00 [migration/2]

root        12  0.0  0.0      0     0 ?        S    09:17   0:00 [migration/2]

root        13  0.0  0.0      0     0 ?        S    09:17   0:00 [ksoftirqd/2]

root        14  0.0  0.0      0     0 ?        S    09:17   0:00 [watchdog/2]

root        15  0.0  0.0      0     0 ?        S    09:17   0:00 [migration/3]

root        16  0.0  0.0      0     0 ?        S    09:17   0:00 [migration/3]

root        17  0.0  0.0      0     0 ?        S    09:17   0:00 [ksoftirqd/3]

root        18  0.0  0.0      0     0 ?        S    09:17   0:00 [watchdog/3]

root        19  0.0  0.0      0     0 ?        S    09:17   0:00 [events/0]

root        20  0.0  0.0      0     0 ?        S    09:17   0:00 [events/1]

root        21  0.0  0.0      0     0 ?        S    09:17   0:00 [events/2]

root        22  0.0  0.0      0     0 ?        S    09:17   0:00 [events/3]

root        23  0.0  0.0      0     0 ?        S    09:17   0:00 [cgroup]

root        24  0.0  0.0      0     0 ?        S    09:17   0:00 [khelper]









=====================================================================================================

proc 显示进程相关信息





[root@limt01 lib64]# ps -ef|grep less

root      3062  2932  0 09:42 pts/1    00:00:00 less install.log

root      3065  2835  0 09:42 pts/0    00:00:00 grep less

[root@limt01 lib64]# cd /proc/3062

[root@limt01 3062]# ls

attr       clear_refs       cpuset   fd      loginuid   mounts      numa_maps      pagemap      schedstat  stat     task

autogroup  cmdline          cwd      fdinfo  maps       mountstats  oom_adj        personality  sessionid  statm    wchan

auxv       comm             environ  io      mem        net         oom_score      root         smaps      status

cgroup     coredump_filter  exe      limits  mountinfo  ns          oom_score_adj  sched        stack      syscall

[root@limt01 3062]# more cmdline 

less









=====================================================================================================

显示文件被那个进程占用





[root@limt01 ~]# fuser -v /root

                     用户     进程号 权限   命令

/root:               root       2835 ..c.. bash

                     root       2932 ..c.. bash

[root@limt01 ~]# fuser -v /root/install.log

                     用户     进程号 权限   命令

/root/install.log:   root       3216 f.... less





[root@limt01 ~]# lsof /root/install.log

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME

less    3216 root    4r   REG  253,0    89373 1441794 /root/install.log





[root@limt01 ~]# lsof|grep delete

less      3216      root    4r      REG              253,0     89373    1441794 /root/install.log (deleted)

上面表示此文件已经被别的进程删除





kill掉打开此文件的进程

[root@limt01 ~]# fuser -k -v /root/install.log1 

                     用户     进程号 权限   命令

/root/install.log1:  root       3268 f.... less









显示端口被那个进程占用

[root@limt01 ~]# fuser -v -n tcp 22

                     用户     进程号 权限   命令

22/tcp:              root       2488 F.... sshd

                     root       2831 f.... sshd

[root@limt01 ~]# netstat -tnp|grep 22

tcp        0     52 192.168.1.104:22            192.168.1.101:51775         ESTABLISHED 2831/sshd

Linux之进程管理的更多相关文章

  1. .Neter玩转Linux系列之五:crontab使用详解和Linux的进程管理以及网络状态监控

    一.crontab使用详解 概述:任务调度:是指系统在某个时间执行的特定的命令或程序. 任务调度分类: (1)系统工作:有些重要的工作必须周而 复始地执行. (2)个别用户工作:个别用户可能希望执 行 ...

  2. Linux:进程管理

    Linux:进程管理 进程间通信 文件和记录锁定. 为避免两个进程间同时要求访问同一共享资源而引起访问和操作的混乱,在进程对共享资源进行访问前必须对其进行锁定,该进程访问完后再释放.这是UNIX为共享 ...

  3. Linux操作系统的进程管理和作业管理

    Linux操作系统的进程管理和信号 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.lsof命令详解 1>.lsof概述 list open files查看当前系统文件的工 ...

  4. Linux操作系统的进程管理

    Linux操作系统的进程管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.进程相关概念 1>.进程概述 内核的功用: 进程管理.文件系统.网络功能.内存管理.驱动程序. ...

  5. linux 系统管理--进程管理

    目录 linux 系统管理--进程管理 一.进程基本概述 二.监控进程状态 三.进程的优先级[进阶] 四.企业案例,Linux假死是怎么回事 五.后台进程管理 六.系统平均负载[进阶] linux 系 ...

  6. Linux内核——进程管理与调度

    进程的管理与调度 进程管理 进程描写叙述符及任务结构 进程存放在叫做任务队列(tasklist)的双向循环链表中.链表中的每一项包括一个详细进程的全部信息,类型为task_struct,称为进程描写叙 ...

  7. linux系统管理--进程管理

    这两天一直维护公司的服务器,主要对进程管理和linux工作管理,把一些零散的知识整理一下,书归正传~ 什么进程?  以下是百度给的解释的进程,说实话,云里雾里的,其实linux进程和windows进程 ...

  8. 【linux之进程管理,系统监控】

    一.进程管理 前台进程:一般是指占据着标准输入和/或标准输出的进程后台进程:不占据默认开启的进程都是前台进程ctrl+C 中断ctrl+z 从前台转入后台bg 后台进程编号 让其在后台运行ls -R ...

  9. [Linux]系统管理: 进程管理(ps/top/pstree/kill/pkill), 工作管理, 系统资源查看, 系统定时任务

    进程管理:查看与终止 进程查看 1. 进程是正在执行的程序或命令. 2. 进程管理的作用: 判断服务器健康状态, 查看系统中所有进程 杀死进程 3. 查看系统中所有进程 ps aux    # 查看系 ...

  10. linux 使用进程管理工具 supervisor

    1.supervisor是使用python进行开发的运行在linux服务器上的进程管理工具 老版本的supervisor需要运行在python2环境,如果需要使用supervisor管理python3 ...

随机推荐

  1. java中常用的工具类(三)

    继续分享java中常用的一些工具类.前两篇的文章中有人评论使用Apache 的lang包和IO包,或者Google的Guava库.后续的我会加上的!谢谢支持IT江湖 一.连接数据库的综合类       ...

  2. git 本地仓库和远程仓库及本地分支和远程分支

    从远程git仓库签出代码:   $ git clone git://aaa.com/git_project.git (远程git服务器项目所在地址) 当你需要克隆远程项目到本地时,默认会把项目保存在名 ...

  3. Java Hour 62 J2EE App 服务器

    目前略微瓶颈了,准备换工作. tomcat.weblogic.jboss的区别,容器的作用 Apache 是一个http 服务器. Tomcat 是一web 应用程序服务器,支持部分的j2ee. Jb ...

  4. JavaScript获取当前根目录

    JavaScript获取当前根目录 主要用到Location 对象,包含有关当前 URL 的信息,是 Window 对象的一个部分,可通过 window.location 属性来访问. 方法一 (wi ...

  5. hdu 4031 2011成都赛区网络赛A题 线段树 ***

    就是不知道时间该怎么处理,想了好久,看了别人的题解发现原来是暴力,暴力也很巧妙啊,想不出来的那种  -_-! #include<cstdio> #include<iostream&g ...

  6. 在VS 2015中边调试边分析性能

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 对代码进行性能分析,之前往往是一种独立的Profiling过程,现在在VS 2015中可以结 ...

  7. Microshaoft WinDbg cmdtree

    windbg ANSI Command Tree 1.0 title {"Microshaoft Commands"} body {"cmdtree"} {&q ...

  8. CentOS安装中文支持

    部分文档突然成乱码了. 解决方法: 1.安装中文支持包 # yum groupinstall "Chinese Support" 2 修改# /etc/sysconfig/i18n ...

  9. 湖南省第十二届大学生计算机程序设计竞赛 F 地铁 多源多汇最短路

    1808: 地铁 Description Bobo 居住在大城市 ICPCCamp. ICPCCamp 有 n 个地铁站,用 1,2,…,n 编号. m 段双向的地铁线路连接 n 个地铁站,其中第 i ...

  10. Markdown语言.md文件

    转自:http://www.kuqin.com/shuoit/20141125/343459.html 之前一直在使用github,也在上面分享了不少的项目和Demo,每次创建新项目的时候,使用的都是 ...