LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: percy

shell脚本里dhcpcd命令不执行

[复制链接]
 楼主| 发表于 2004-4-28 23:17:18 | 显示全部楼层
我已经说过
kill -9后需要等待一段时间才可以重新启动dhcpcd,不让进程还没有退出,执行的dhcpcd不会成功,
所以才加入了for循环,
此for循环是从ifup-dhcp中截取的。
 楼主| 发表于 2004-4-28 23:19:11 | 显示全部楼层
for ((wait=0; wait<30; wait++)); do
if test -d /proc/$i; then usleep 300000 # $i ???
else continue 1
fi

中的$i其实就是dhcpcd的进程,我直接贴的是ifup-dhcop中的教本,没有改过来,
发表于 2004-4-28 23:47:18 | 显示全部楼层
suse那段代码不是拿来这样用得吧,总觉得有问题。
把cat /var/run/dhcpcd-eth0.pid贴出来看看。

其实你只要检测kill的返回状态或者检测dhcp对应的pid进程状态即可,没必要用那个wait循环。我没看过suse脚本的全文,但是猜想它一定考虑到比你的要求更复杂的情况,直接拿来用是不适合的,还是那句,不要断章取义。
 楼主| 发表于 2004-4-29 00:13:39 | 显示全部楼层
cat /var/run/dhcpcd-eth0.pid是数字,既是dhcpcd的进程ID
不用for循环,dhcpcd启动不了,提示进程还在,
可脚本退出后进程已经被杀死了,说明在脚本执行过程中,kill命令随后立即执行dhcpcd却不行,现在是得加入for循环才可以,说明kill后要有一个延迟,
单单查kill得返回状态是不行的
发表于 2004-4-29 00:37:57 | 显示全部楼层
最初由 percy 发表
cat /var/run/dhcpcd-eth0.pid是数字,既是dhcpcd的进程ID
不用for循环,dhcpcd启动不了,提示进程还在,
可脚本退出后进程已经被杀死了,说明在脚本执行过程中,kill命令随后立即执行dhcpcd却不行,现在是得加入for循环才可以,说明kill后要有一个延迟,
单单查kill得返回状态是不行的

没错啊,所以叫你只检查dhpcd的进程状态即可。
没必要用那个烦杂的for块。
 楼主| 发表于 2004-4-29 00:42:16 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表