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 ...
随机推荐
- hp,Qlogic,Brocade光纖卡查看方式
查看光纖卡類型 # lspci| grep Fibre 1. NHB棟 光纖卡brocade /sys/class/fc_host 查看光纖卡是否加載,若無,打驅動brocade_adapter_so ...
- JavaScript - BOM
window 对象 window 对象是BOM的核心对象,也是ECMAScript规定的Global对象. 无法跨浏览精确获得窗口左边和上边的精确值,同样也无法确定浏览器窗口本身的大小,但是可以取得页 ...
- C# XML操作
一.简单介绍 using System.Xml; //初始化一个xml实例 XmlDocument xml=new XmlDocument(); //导入指定xml文件 xml.Load(path); ...
- C#屏幕截图
今天通过C#来实现一个简单的屏幕截图功能.实现思路,获取鼠标按下去的位置和鼠标左键释放的位置,计算这个区域的宽度和高度.然后通过 Graphics.CopyFromScreen 方法便可以获取到屏幕截 ...
- C和C++混合编程(__cplusplus 与 external "c" 的使用)
转自:http://blog.csdn.net/ljfth/article/details/3965871 第一种理解比如说你用C++开发了一个DLL库,为了能够让C语言也能够调用你的DLL输出(Ex ...
- MapKit的使用显示当前位置
1.添加MapKit.framework框架 ,在plist中添加字段,用于,获取用户当前位置设置 NSLocationAlwaysUsageDescription 2.代码 #import &quo ...
- 智能车学习(六)——OLED屏幕使用
一.代码展示 1.头文件: #ifndef OLED_H_ #define OLED_H_ extern unsigned char Draw[]; extern const unsigned cha ...
- Java学习笔记(四)——流程控制语句
一.条件语句 1.if条件语句 (1)语法: if(条件) { 条件成立时的代码 } (2)执行过程 2.if else语句 if(条件) { 条件成立时的代码 } else { 不成立的代码 } 3 ...
- jQuery全局函数
全局函数是对jQuery对象的扩展,其中扩展方法包括: 一,extend扩展: //调用全局函数$(document).ready(function () { $.myFunction(); $.my ...
- while do while以及穷举和迭代
今天的新内容1:while循环 格式: while() { } 初始状态要在循环外提前规定 状态改变要写在花括号里面 括号内是循环条件 for循环与while循环的对比: 2:do while 不管循 ...