LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1157|回复: 10

没有用no_hup,父进程结束而子进程不死[已解决]

[复制链接]
发表于 2004-3-1 10:26:15 | 显示全部楼层 |阅读模式
su到root用户后;

  1. [root@mydesktop linuxer]# safe_mysqld &
  2. [1] 3188
  3. [root@mydesktop linuxer]# Starting mysqld daemon with databases from

  4. [root@mydesktop linuxer]# ps ax
  5.   PID TTY      STAT   TIME COMMAND
  6. 3087 pts/1    S      0:00 su
  7. 3090 pts/1    S      0:00 bash
  8. 3188 pts/1    S      0:00 /bin/sh /usr/bin/safe_mysqld
  9. 3209 pts/1    S      0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib
  10. 可以看到mysql相关进程是运行在pts/1下面的
  11. [root@mydesktop linuxer]# exit
  12. exit
  13. [linuxer@mydesktop linuxer]$ ps ax|grep mysql
  14. 3188 pts/1    S      0:00 /bin/sh /usr/bin/safe_mysqld
  15. 3209 pts/1    S      0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-locking
  16. 3215 pts/1    S      0:00 grep mysql
  17. 退出su的shell后,mysql相关进程还在pts/1

  18. 而退出终端再次打开终端变成这样,:
  19. [linuxer@mydesktop linuxer]$ ps ax|grep mysql
  20. 3188 ?        S      0:00 /bin/sh /usr/bin/safe_mysqld
  21. 3209 ?        S      0:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-locking
  22. 3654 pts/0    S      0:00 grep mysql

复制代码

为什么?
发表于 2004-3-1 12:00:26 | 显示全部楼层
道理跟使用sudo命令来使普通用户运行特定程序一样!
发表于 2004-3-1 13:00:52 | 显示全部楼层
没人说过父进程死了子进程也会死掉
发表于 2004-3-1 13:16:45 | 显示全部楼层
最初由 dearvoid 发表
没人说过父进程死了子进程也会死掉

init进程死调了会怎么样?
发表于 2004-3-1 13:24:44 | 显示全部楼层
没遇到过, 回去 kill 一下试试
发表于 2004-3-1 14:07:45 | 显示全部楼层
你在哪里结束的呀??

我看你是在启动呀!!!
 楼主| 发表于 2004-3-1 17:44:21 | 显示全部楼层
看看进程树就清楚了:


  1.   |-gnome-terminal
  2.   |   |-bash
  3.   |   |   `-su
  4.   |   |       `-bash
  5.   |   |           `-safe_mysqld /usr/bin/safe_mysqld
  6.   |   |               `-mysqld --basedir=/usr --datadir=/var/lib/mysql ...
  7.   |   |-bash
  8.   |   |   `-pstree -a
  9.   
复制代码


很明显mysql属于su的那个bash,当我exit那个su的bash,mysql竟然可以跳到上面去
好象在哪儿见到说子进程可以往上移动什么的.忘了
发表于 2004-3-1 18:09:40 | 显示全部楼层
如果一个进程的父进程死掉了, 这个进程的父进程就变成了 init 进程
发表于 2004-3-1 18:25:43 | 显示全部楼层
这个也许跟特定的命令有关,如果你运行的命令是普通权限的命令的话,你exit后这个进程会消失,如果你sudo的特定命令的话,当你退出的话,这个进程会依然存在!
发表于 2004-3-14 00:05:04 | 显示全部楼层
最初由 seablue 发表
看看进程树就清楚了:
  1.   |-gnome-terminal
  2.   |   |-bash
  3.   |   |   `-su
  4.   |   |       `-bash
  5.   |   |           `-safe_mysqld /usr/bin/safe_mysqld
  6.   |   |               `-mysqld --basedir=/usr --datadir=/var/lib/mysql ...
  7.   |   |-bash
  8.   |   |   `-pstree -a
  9.   
复制代码

很明显mysql属于su的那个bash,当我exit那个su的bash,mysql竟然可以跳到上面去
好象在哪儿见到说子进程可以往上移动什么的.忘了

在Linux中,如果一个进程的父进程死亡,那么这个孤儿进程将由init来收养
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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