记一段聊天记录
目前还看不太懂 r0bertz 说的啥…先放这儿..以后看…
起因是我在问下面两个命令输出的结果为什么不一样.
- [ucsp@ucsp-1 ini]$ pgrep scf_exs
- 30507
- 30512
- 30513
- 30514
- 30518
- [ucsp@ucsp-1 ini]$ ps -A |grep scf_exs
- 30507 ? 00:00:05 scf_exs
- [ucsp@ucsp-1 ini]$
为什么这两个命令看到的不一样?
<r0bertz> bones7456, 执行 /lib/libc.so.6
- [ucsp@ucsp-1 ini]$ /lib/libc.so.6
- GNU C Library stable release version 2.3.2, by Roland McGrath et al.
- Copyright (C) 2003 Free Software Foundation, Inc.
- This is free software; see the source for copying conditions.
- There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
- PARTICULAR PURPOSE.
- Compiled by GNU CC version 3.2.2 20030222 (Red Hat Linux 3.2.2-5).
- Compiled on a Linux 2.4.20 system on 2003-03-13.
- Available extensions:
- GNU libio by Per Bothner
- crypt add-on version 2.1 by Michael Glad and others
- linuxthreads-0.10 by Xavier Leroy
- BIND-8.2.3-T5B
- libthread_db work sponsored by Alpha Processor Inc
- NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
- Thread-local storage support included.
- Report bugs using the `glibcbug' script to <bugs@gnu.org>.
- [ucsp@ucsp-1 ini]$
<r0bertz> Native POSIX Threads Library by Ulrich Drepper et al
<r0bertz> bones7456, scf_exs 这是个什么东西?
<r0bertz> 商业软件?
<bones7456> r0bertz: 是的,我们公司自己写的…
<r0bertz> bones7456, 你用ps -eLf | grep 试试
<r0bertz> linuxthreads-0.10 by Xavier Leroy
<r0bertz> 哈哈
<r0bertz> bones7456, 这是典型的linuxthreads的特征
<bones7456> r0bertz: 啊? 就是线程?
<bones7456> r0bertz: pgerp能看到线程号?
<r0bertz> bones7456, 在使用linuxthreds线程库的glibc的机器上
<r0bertz> 其实直到现在,用户层线程和内核线程在linux里还是1:1关系
<r0bertz> 也就是nptl是1:1模型
<r0bertz> 但是
<r0bertz> 在nptl里,posix threading semantics是被严格遵守的
<r0bertz> 该是线程的你用看进程的东西,你看不到
<bones7456> 这么复杂?呵呵
<r0bertz> linuxthreads不是这样的
<r0bertz> linuxthreads里每个进程专门有一个管理线程
<r0bertz> 和posix语义有差异
<bones7456> r0bertz: 就是说 pgrep 能看到不同的线程号,而ps只能看到进程号?
<r0bertz> junmin, 似乎没见过大写的
<r0bertz> bones7456, 不能这么说
<r0bertz> 有前提
<r0bertz> 看线程库的实现种类
<r0bertz> nptl里都是只能看进程
<r0bertz> 当然加了适当的参数,ps也能看线程
<bones7456> r0bertz: 那在同一台机器上的 pgrep 和 ps 也有差异啊,他们用的不是一个库?
<r0bertz> bones7456, 这个东西和内核也有关系
<bones7456> r0bertz: 对了,刚那 ps -eLf 执行不了
<r0bertz> bones7456, 你的服务器太旧了
<r0bertz> 还是2.4
<r0bertz> 2.4上没有nptl线程库
<r0bertz> 唯一的例外是rh9
<bones7456> r0bertz: 服务器是 Red Hat Linux release 9
<r0bertz> …
<bones7456> r0bertz: 就是 rh9 啊…
<r0bertz> 你确定?
- [ucsp@ucsp-1 ini]$ cat /etc/issue
- Red Hat Linux release 9 (Shrike)
- Kernel \r on an \m
- [ucsp@ucsp-1 ini]$ uname -a
- Linux ucsp-1 2.4.20-8smp #1 SMP Thu Mar 13 17:45:54 EST 2003 i686 i686 i386 GNU/Linux
<bones7456> 至少这个是这样输出的
<r0bertz> /lib/tls/libc.so.6?
- [ucsp@ucsp-1 ini]$ /lib/tls/libc.so.6
- GNU C Library stable release version 2.3.2, by Roland McGrath et al.
- Copyright (C) 2003 Free Software Foundation, Inc.
- This is free software; see the source for copying conditions.
- There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
- PARTICULAR PURPOSE.
- Compiled by GNU CC version 3.2.2 20030222 (Red Hat Linux 3.2.2-5).
- Compiled on a Linux 2.4.20 system on 2003-03-13.
- Available extensions:
- GNU libio by Per Bothner
- crypt add-on version 2.1 by Michael Glad and others
- NPTL 0.29 by Ulrich Drepper
- BIND-8.2.3-T5B
- NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
- Thread-local storage support included.
- Report bugs using the `glibcbug' script to <bugs@gnu.org>.
- [ucsp@ucsp-1 ini]$
<bones7456> r0bertz: /lib/tls/libc.so.6 ==> http://paste.ubuntu.org.cn/4210
<bones7456> NPTL 0.29 by Ulrich Drepper 有这个
<r0bertz> bones7456, 这就对了
<r0bertz> 不过,我还没试过怎样指定具体使用哪个
<bones7456> r0bertz: 想起来了,这家伙就是前几天来北京讲座,你说偶像的那个,哈哈
<r0bertz> bones7456, 对阿
<bones7456> r0bertz: 强的~
<r0bertz> bones7456, ps和pgrep应该是直接到/proc里查的
<bones7456> r0bertz: 貌似 ps 很复杂,兼容了很多不同的系统…不知道有没有影响
<r0bertz> 2.4和2.6的proc里的结构不同
<r0bertz> 有关进程的信息
<bones7456> r0bertz: 你真强~这些我听着就晕了,哈…
<r0bertz> bones7456, 哪里哪里