当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 1 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 大家一起來分析一下 關于開機時啟動的一些服務 dhclient
帖子发表于 : 2009-03-24 12:02 
头像

注册: 2006-07-28 14:58
帖子: 225
地址: 廣州
送出感谢: 0 次
接收感谢: 0 次
原由是這樣的,我需要用802.1x才能上網,但是運行完其linux1x後,發現要過一小段時間(几分鐘)才能抓下ip來。如果手動運行dhclient的話立刻就可以了。如果在運行linux1x之前運行dhclient是抓不下ip的,于是我想到rc.d裡找一下哪裡開的dhclient服務並在其前加上linux1x,但是沒有發現。另一方面是開機後一直有個dhclient3在運行。

使用ps和pstree順勢跟蹤了一下,dhclient的父進程是ifup,以為ifup是個腳本,但發現是2進制執行文件,

代码:
 ~$ date; pstree -pa
2009年 03月 24日 星期二 11:08:57 CST
init,1
  |-NetworkManager,5081 --pid-file /var/run/NetworkManager/NetworkManager.pid
  |-NetworkManagerD,5097 --pid-file /var/run/NetworkManager/NetworkManagerDispatcher.pid
  |-acpid,4862 -c /etc/acpi/events -s /var/run/acpid.socket
  |-atd,5803
  |-avahi-daemon,5143
  |   `-avahi-daemon,5144
  |-bonobo-activati,6131 --ac-activate --ior-output-fd=20
  |   `-{bonobo-activati},6132
  |-console-kit-dae,5554
  |   |-{console-kit-dae},5555
         省略一部分
  |   |-{console-kit-dae},5615
  |   `-{console-kit-dae},5763
  |-cron,5821
  |-cupsd,5338
  |-dbus-daemon,5063 --system
  |-dbus-daemon,6122 --fork --print-pid 5 --print-address 7 --session
  |-dbus-launch,6121 --autolaunch e5bcf5681f17c67ae9156a8148fed795 --binary-syntax --close-stderr
  |-dd,5037 bs 1 if /proc/kmsg of /var/run/klogd/kmsg
  |-dhcdbd,5530 --system
  |-gam_server,6124
  |-gconfd-2,5968 4
  |-gdm,5752
  |   `-gdm,5753
  |       |-WindowMaker,5971
  |       |   |-WindowMaker,6093 --for-real
  |       |   |   |-/usr/bin/quodli,6155 /usr/bin/quodlibet
  |       |   |   |-gnome-terminal,6129
  |       |   |   |   |-bash,6138
  |       |   |   |   |   `-pstree,6555 -pa
  |       |   |   |   |-gnome-pty-helpe,6137
  |       |   |   |   `-{gnome-terminal},6139
  |       |   |   |-thunar,6111
  |       |   |   |-wmcalclock,6114
  |       |   |   |-wmnd,6113
  |       |   |   `-wmtime,6112
  |       |   `-seahorse-agent,6091 --execute /usr/bin/wmaker
  |       `-Xorg,5759 :0 -br -audit 0 -auth /var/lib/gdm/:0.Xauth -nolisten tcp vt7
  |-getty,4682 38400 tty4
  |-getty,4683 38400 tty5
  |-getty,4687 38400 tty2
  |-getty,4688 38400 tty3
  |-getty,4691 38400 tty6
  |-getty,5953 38400 tty1
  |-gnome-keyring-d,5970 -d --login
  |-hald,5551
  |   `-hald-runner,5616
  |       |-hald-addon-acpi,5634
  |       |-hald-addon-inpu,5643
  |       `-hald-addon-stor,5666
  |-hcid,5688 -x -s
  |   |-bluetoothd-serv,5702
  |   `-bluetoothd-serv,5705
  |-ifup,3131 --allow auto eth0
  |   `-sh,3167 -c ...
  |       `-dhclient3,3168 -e IF_METRIC=100 -pf /var/run/dhclient.eth0.pid -lf /var/lib/dhcp3/dhclient.eth0.leases eth0
  |           `-dhclient-script,6166 /sbin/dhclient-script
  |               `-dhclient-script,6549 /sbin/dhclient-script
  |                   `-host,6550 172.18.66.134
  |                       |-{host},6551
  |                       |-{host},6552
  |                       `-{host},6553
  |-klogd,5039 -P /var/run/klogd/kmsg
  |-mount.ntfs,4405 /dev/sdb5 /mnt/win-new -o rw
  |-mysqld_safe,5197 /usr/bin/mysqld_safe
  |   |-logger,5241 -p daemon.err -t mysqld_safe -i -t mysqld
  |   `-mysqld,5239 --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid ...
  |       |-{mysqld},5242
  |       |-{mysqld},5243
  |       |-{mysqld},5244
  |       |-{mysqld},5245
  |       |-{mysqld},5247
  |       |-{mysqld},5248
  |       |-{mysqld},5249
  |       |-{mysqld},5250
  |       `-{mysqld},5253
  |-scim-bridge,6159
  |-scim-helper-man,6107
  |-scim-launcher,6103 -d -c simple -e all -f socket --no-stay
  |-scim-launcher,6110 -d -c socket -e socket -f x11
  |-scim-panel-gtk,6108 --display :0.0 -c socket -d --no-stay
  |   `-{scim-panel-gtk},6109
  |-syslogd,4977 -u syslog
  |-system-tools-ba,5112
  |-udevd,2767 --daemon
  `-uml_switch,5411 -unix /var/run/uml-utilities/uml_switch.ctl


代码:
:~$ ps aux | grep dhclient
root      3167  0.0  0.0   1772   484 ?        S<   11:03   0:00 /bin/sh -c dhclient3 -e IF_METRIC=100 -pf /var/run/dhclient.eth0.pid -lf /var/lib/dhcp3/dhclient.eth0.leases eth0
dhcp      3168  0.0  0.1   2440  1212 ?        S<   11:03   0:00 dhclient3 -e IF_METRIC=100 -pf /var/run/dhclient.eth0.pid -lf /var/lib/dhcp3/dhclient.eth0.leases eth0
root      6166  0.0  0.1   2912  1444 ?        S<   11:04   0:00 /bin/bash /sbin/dhclient-script
root      6843  0.0  0.0   2912   748 ?        S<   11:11   0:00 /bin/bash /sbin/dhclient-script
tseong    6859  0.0  0.1   3224   788 pts/0    S+   11:12   0:00 grep dhclient



總覺得 有些犯暈,怎麼dhclient寫進了ifup裡面了,是我理解錯誤嗎,那在開機是是誰啟動了dhclient3的,寫在了哪裡?

其次,開機後不理會的話,dhclient還會改變,父進程鞭策變成1(init),這是為什麼?是dhclient-script改的嗎?看了一下cron也沒發現什麼相關的例行程序。

代码:
 ~$ ps -AHf
......
dhcp      7011     1  0 11:12 ?        00:00:00   dhclient3 -e IF_METRIC=100 -pf /var/run/dhclient.eth0.pid -lf /var/lib/dhcp3/dhclient.eth0.leases eth0

~$ ps aux | grep dhclient
dhcp      7011  0.0  0.0   2436   596 ?        S<s  11:12   0:00 dhclient3 -e IF_METRIC=100 -pf /var/run/dhclient.eth0.pid -lf /var/lib/dhcp3/dhclient.eth0.leases eth0

 ~$ date; pstree -pa
2009年 03月 24日 星期二 11:15:22 CST
init,1
  |-NetworkManager,5081 --pid-file /var/run/NetworkManager/NetworkManager.pid
  |-NetworkManagerD,5097 --pid-file /var/run/NetworkManager/NetworkManagerDispatcher.pid
  |-acpid,4862 -c /etc/acpi/events -s /var/run/acpid.socket
  |-atd,5803
  |-avahi-autoipd,6938
  |   `-avahi-autoipd,6939
  |-avahi-daemon,5143
  |   `-avahi-daemon,5144
  |-bonobo-activati,6131 --ac-activate --ior-output-fd=20
  |   `-{bonobo-activati},6132
  |-console-kit-dae,5554
  |   |-{console-kit-dae},5555
          ...............
  |   `-{console-kit-dae},5763
  |-cron,5821
  |-cupsd,5338
  |-dbus-daemon,5063 --system
  |-dbus-daemon,6122 --fork --print-pid 5 --print-address 7 --session
  |-dbus-launch,6121 --autolaunch e5bcf5681f17c67ae9156a8148fed795 --binary-syntax --close-stderr
  |-dd,5037 bs 1 if /proc/kmsg of /var/run/klogd/kmsg
  |-dhcdbd,5530 --system
  |-dhclient3,7011 -e IF_METRIC=100 -pf /var/run/dhclient.eth0.pid -lf /var/lib/dhcp3/dhclient.eth0.leases eth0
  |-gam_server,6124
  |-gconfd-2,5968 4
  |-gdm,5752
  |   `-gdm,5753
  |       |-WindowMaker,5971
  |       |   |-WindowMaker,6093 --for-real
  |       |   |   |-/usr/bin/quodli,6155 /usr/bin/quodlibet
  |       |   |   |-gedit,6711
  |       |   |   |-gnome-terminal,6129
  |       |   |   |   |-bash,6138
  |       |   |   |   |   `-pstree,7121 -pa
  |       |   |   |   |-gnome-pty-helpe,6137
  |       |   |   |   `-{gnome-terminal},6139
  |       |   |   |-thunar,6111
  |       |   |   |   `-{thunar},6576
  |       |   |   |-wmcalclock,6114
  |       |   |   |-wmnd,6113
  |       |   |   `-wmtime,6112
  |       |   `-seahorse-agent,6091 --execute /usr/bin/wmaker
  |       `-Xorg,5759 :0 -br -audit 0 -auth /var/lib/gdm/:0.Xauth -nolisten tcp vt7
  |-getty,4682 38400 tty4
  |-getty,4683 38400 tty5
  |-getty,4687 38400 tty2
  |-getty,4688 38400 tty3
  |-getty,4691 38400 tty6
  |-getty,5953 38400 tty1
  |-gnome-keyring-d,5970 -d --login
  |-hald,5551
  |   `-hald-runner,5616
  |       |-hald-addon-acpi,5634
  |       |-hald-addon-inpu,5643
  |       `-hald-addon-stor,5666
  |-hcid,5688 -x -s
  |   |-bluetoothd-serv,5702
  |   `-bluetoothd-serv,5705
  |-klogd,5039 -P /var/run/klogd/kmsg
  |-mount.ntfs,4405 /dev/sdb5 /mnt/win-new -o rw
  |-mysqld_safe,5197 /usr/bin/mysqld_safe
  |   |-logger,5241 -p daemon.err -t mysqld_safe -i -t mysqld
  |   `-mysqld,5239 --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid ...
  |       |-{mysqld},5242
             ..........
  |       `-{mysqld},5253
  |-scim-bridge,6159
  |-scim-helper-man,6107
  |-scim-launcher,6103 -d -c simple -e all -f socket --no-stay
  |-scim-launcher,6110 -d -c socket -e socket -f x11
  |-scim-panel-gtk,6108 --display :0.0 -c socket -d --no-stay
  |   `-{scim-panel-gtk},6109
  |-syslogd,4977 -u syslog
  |-system-tools-ba,5112
  |-udevd,2767 --daemon
  `-uml_switch,5411 -unix /var/run/uml-utilities/uml_switch.ctl


目錄/var/run下是什麼?dhcp 7011 0.0 0.0 2436 596 ? S<s 11:12 0:00 dhclient3 -e IF_METRIC=100 -pf /var/run/dhclient.eth0.pid -lf /var/lib/dhcp3/dhclient.eth0.leases eth0表示什麼?

總的問題:
1. dhclient3是誰啟動的,在哪裡啟動的,我想找到位置在其前面加多一條命令。
2. /var/run目錄裡表示的是什麼?
3. 哪裡可以看到詳細的開機啟動信息,好像dmesg不全啊,log/messages也沒發現什麼。

代码:
$ dmesg | grep -i ifup
$ dmesg | grep -i dhclient
$ dmesg | grep -i net
[   18.200748] net_namespace: 64 bytes
[   18.201681] NET: Registered protocol family 16
[   18.280353] NET: Registered protocol family 8
[   18.280420] NET: Registered protocol family 20
[   18.324243] NET: Registered protocol family 2
[   19.068057] audit: initializing netlink socket (disabled)
[   19.516486] NET: Registered protocol family 1
[   21.746415] 8139too Fast Ethernet driver 0.9.28
[   22.100315] 8139cp: 10/100 PCI Ethernet driver v1.3 (Mar 22, 2004)
[   38.559042] NET: Registered protocol family 17
[   58.044909] ip_tables: (C) 2000-2006 Netfilter Core Team
[   62.649650] NET: Registered protocol family 10
[   67.778080] NET: Registered protocol family 31


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 1 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译