Linux之进程管理
=====================================================================================================
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之进程管理的更多相关文章
- .Neter玩转Linux系列之五:crontab使用详解和Linux的进程管理以及网络状态监控
一.crontab使用详解 概述:任务调度:是指系统在某个时间执行的特定的命令或程序. 任务调度分类: (1)系统工作:有些重要的工作必须周而 复始地执行. (2)个别用户工作:个别用户可能希望执 行 ...
- Linux:进程管理
Linux:进程管理 进程间通信 文件和记录锁定. 为避免两个进程间同时要求访问同一共享资源而引起访问和操作的混乱,在进程对共享资源进行访问前必须对其进行锁定,该进程访问完后再释放.这是UNIX为共享 ...
- Linux操作系统的进程管理和作业管理
Linux操作系统的进程管理和信号 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.lsof命令详解 1>.lsof概述 list open files查看当前系统文件的工 ...
- Linux操作系统的进程管理
Linux操作系统的进程管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.进程相关概念 1>.进程概述 内核的功用: 进程管理.文件系统.网络功能.内存管理.驱动程序. ...
- linux 系统管理--进程管理
目录 linux 系统管理--进程管理 一.进程基本概述 二.监控进程状态 三.进程的优先级[进阶] 四.企业案例,Linux假死是怎么回事 五.后台进程管理 六.系统平均负载[进阶] linux 系 ...
- Linux内核——进程管理与调度
进程的管理与调度 进程管理 进程描写叙述符及任务结构 进程存放在叫做任务队列(tasklist)的双向循环链表中.链表中的每一项包括一个详细进程的全部信息,类型为task_struct,称为进程描写叙 ...
- linux系统管理--进程管理
这两天一直维护公司的服务器,主要对进程管理和linux工作管理,把一些零散的知识整理一下,书归正传~ 什么进程? 以下是百度给的解释的进程,说实话,云里雾里的,其实linux进程和windows进程 ...
- 【linux之进程管理,系统监控】
一.进程管理 前台进程:一般是指占据着标准输入和/或标准输出的进程后台进程:不占据默认开启的进程都是前台进程ctrl+C 中断ctrl+z 从前台转入后台bg 后台进程编号 让其在后台运行ls -R ...
- [Linux]系统管理: 进程管理(ps/top/pstree/kill/pkill), 工作管理, 系统资源查看, 系统定时任务
进程管理:查看与终止 进程查看 1. 进程是正在执行的程序或命令. 2. 进程管理的作用: 判断服务器健康状态, 查看系统中所有进程 杀死进程 3. 查看系统中所有进程 ps aux # 查看系 ...
- linux 使用进程管理工具 supervisor
1.supervisor是使用python进行开发的运行在linux服务器上的进程管理工具 老版本的supervisor需要运行在python2环境,如果需要使用supervisor管理python3 ...
随机推荐
- Gmail 账号找回办法
前段时间一直在用GFW代理,结果发现GOOGLE账户的保护机制起用了,要给以前的手机号发消息,结果哪个号现在不用了,所以就登陆不进去了,非常扯淡,索性谷歌了下,得出如下的解决方案,完美解决,下次直接在 ...
- Newtonsoft.Json(Json.Net)学习笔记(转)
概述 Newtonsoft.Json,一款.NET中开源的Json序列化和反序列化类库,通过Nuget获取.(查看原文) 下面是Json序列化和反序列化的简单封装: /// <summary&g ...
- 【翻译二十一】java-并发之分拆和合并
Fork/Join This section was updated to reflect features and conventions of the upcoming Java SE 8 rel ...
- sort函数用法
原文链接:http://blog.csdn.net/csust_acm/article/details/7326418 sort函数的用法 做ACM题的时候,排序是一种经常要用到的操作.如果每次都自己 ...
- php获取文件夹下面的文件列表和文件夹列表
function getDir($dir) { $dirArray[] = NULL; if (false != ($handle = opendir( $dir ))) { $i=0; while ...
- php+jquery+ajax实现用户名验证
大多数情况下,jquery代码的编写,都要求我们将jquery的代码放在以下三种中任一个function里. 有三种写法,同样效果,有点像Window.onload,但也有不同,就是window.on ...
- [JavaCore] 不错的Java基础学习资料-持续更新
容易弄混的JAVA基础知识: http://www.iteye.com/topic/943647 [总结]String in Java: http://www.iteye.com/topic/5221 ...
- ListView中每个item条目在被单击选中时能够高亮显示
在布局文件中设定: android:listSelector="@android:color/holo_red_light" 在代码中实现 listView.setSelector ...
- Salesforce中所有常用类型字段的取值与赋值
Salesforce中所有常用字段类型的定义以及如何用代码进行取值和赋值: Field Type的定义: http://www.salesforce.com/us/developer/docs/api ...
- 去掉SrollView、GrdiView、ListView、ViewPager等滑动到边缘的光晕效果
当我们使用SrollView.GrdiView.ListView.ViewPager带有滑动功能的组件时,滑动到边缘时总会出现类光晕效果.这是用于提示用户已经滑动到了组件的边缘,不能再滑动了,但有时候 ...