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

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. hp,Qlogic,Brocade光纖卡查看方式

    查看光纖卡類型 # lspci| grep Fibre 1. NHB棟 光纖卡brocade /sys/class/fc_host 查看光纖卡是否加載,若無,打驅動brocade_adapter_so ...

  2. JavaScript - BOM

    window 对象 window 对象是BOM的核心对象,也是ECMAScript规定的Global对象. 无法跨浏览精确获得窗口左边和上边的精确值,同样也无法确定浏览器窗口本身的大小,但是可以取得页 ...

  3. C# XML操作

    一.简单介绍 using System.Xml; //初始化一个xml实例 XmlDocument xml=new XmlDocument(); //导入指定xml文件 xml.Load(path); ...

  4. C#屏幕截图

    今天通过C#来实现一个简单的屏幕截图功能.实现思路,获取鼠标按下去的位置和鼠标左键释放的位置,计算这个区域的宽度和高度.然后通过 Graphics.CopyFromScreen 方法便可以获取到屏幕截 ...

  5. C和C++混合编程(__cplusplus 与 external "c" 的使用)

    转自:http://blog.csdn.net/ljfth/article/details/3965871 第一种理解比如说你用C++开发了一个DLL库,为了能够让C语言也能够调用你的DLL输出(Ex ...

  6. MapKit的使用显示当前位置

    1.添加MapKit.framework框架 ,在plist中添加字段,用于,获取用户当前位置设置 NSLocationAlwaysUsageDescription 2.代码 #import &quo ...

  7. 智能车学习(六)——OLED屏幕使用

    一.代码展示 1.头文件: #ifndef OLED_H_ #define OLED_H_ extern unsigned char Draw[]; extern const unsigned cha ...

  8. Java学习笔记(四)——流程控制语句

    一.条件语句 1.if条件语句 (1)语法: if(条件) { 条件成立时的代码 } (2)执行过程 2.if else语句 if(条件) { 条件成立时的代码 } else { 不成立的代码 } 3 ...

  9. jQuery全局函数

    全局函数是对jQuery对象的扩展,其中扩展方法包括: 一,extend扩展: //调用全局函数$(document).ready(function () { $.myFunction(); $.my ...

  10. while do while以及穷举和迭代

    今天的新内容1:while循环 格式: while() { } 初始状态要在循环外提前规定 状态改变要写在花括号里面 括号内是循环条件 for循环与while循环的对比: 2:do while 不管循 ...