xshell关闭后,后台进程没有退出,问的是,为什么没有退出???、

bsnry 2015-10-09 07:06:31
代码:
#include<stdio.h>
#include<time.h>
#include <unistd.h>

int main()
{
while(1)
{
printf("xxxx\n");
sleep(3);
}
return 0;
}



编译一下,然后运行./hello &

然后关闭xshell, 再次启动xshell , ps -fe|grep hello


发现该进程是在存在的。



顺便请教一个top命令:

top - 19:06:38 up 1:07, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 141 total, 1 running, 140 sleeping, 0 stopped, 0 zombie


为什么好几次, 执行该top命令,发现只有一个1 runing,为什么?

百度过很多次,发现top的讲解,铺天盖地的讲解,running是表示 运行的进程数目。

我去,难道我 的机器上只有一个进程在running,其他都被挂起?

linux 这么神奇?





...全文
1169 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bsnry 2015-10-10
  • 打赏
  • 举报
回复
引用 1 楼 JiangWenjie2014 的回复:
当终端退出时,此时ssh登录的shell是会话组长进程,会话组长进程退出时不再占用终端,因此会给所有前台子进程发送SIGHUP信号,该信号的默认动作就是退出进程,至于后台子进程是什么行为不清楚。我用的是CentOS5.6,也发现有这种情况,后台子进程不退出。看看这个http://www.cnblogs.com/ziziwu/p/4125750.html,还有这个https://www.win.tue.nl/~aeb/linux/lk/lk-10.html
centos 7 xshell关闭后,进程消失。 说明,后台进程的行为依赖于操作系统,为了保险起见,还是用nohup等命令让进程来运行后台。
bsnry 2015-10-10
  • 打赏
  • 举报
回复
引用 楼主 bsnry 的回复:
代码:
#include<stdio.h>
#include<time.h>
#include <unistd.h>

int main()
{
    while(1)
    {   
        printf("xxxx\n");
        sleep(3);
    }   
    return 0;
}
编译一下,然后运行./hello & 然后关闭xshell, 再次启动xshell , ps -fe|grep hello 发现该进程是在存在的。 顺便请教一个top命令: top - 19:06:38 up 1:07, 1 user, load average: 0.00, 0.00, 0.00 Tasks: 141 total, 1 running, 140 sleeping, 0 stopped, 0 zombie 为什么好几次, 执行该top命令,发现只有一个1 runing,为什么? 百度过很多次,发现top的讲解,铺天盖地的讲解,running是表示 运行的进程数目。 我去,难道我 的机器上只有一个进程在running,其他都被挂起? linux 这么神奇?
会话组长一定是shell吗? 另附一个新问题: jobs查看的结果, 是不是依赖shell, 也就说,shell a里的后台进程,再shell b里用jobs查看不到。
JiangWenjie2014 2015-10-09
  • 打赏
  • 举报
回复
至于第二个,top命令每隔若干秒检查一次CPU,看看有哪些进程状态是可运行的(R),显而易见,top命令自身此刻一定处于运行状态(要不然它怎么检查呢)。可能是检查的时间区间太大,任务调度很快,即使这段时间CPU的占用率不低,但是某一时刻的处于可运行的进程数量只有top这一个。例如,0-1区间内生成随机数,值等于0.5的概率是0%,值在0.1和0.2范围内的概率是10%,比喻不恰当。http://unix.stackexchange.com/questions/103062/why-are-there-so-few-running-processes
JiangWenjie2014 2015-10-09
  • 打赏
  • 举报
回复
当终端退出时,此时ssh登录的shell是会话组长进程,会话组长进程退出时不再占用终端,因此会给所有前台子进程发送SIGHUP信号,该信号的默认动作就是退出进程,至于后台子进程是什么行为不清楚。我用的是CentOS5.6,也发现有这种情况,后台子进程不退出。看看这个http://www.cnblogs.com/ziziwu/p/4125750.html,还有这个https://www.win.tue.nl/~aeb/linux/lk/lk-10.html

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧