zoukankan      html  css  js  c++  java
  • linux进程永久放后台运行

    我们使用ssh连接服务器之后,如果在执行某个命令需要时间特别长,当把终端断掉之后,命令就自动停止了一般我们在ssh客户端执行命令之后,默认他的父进程是ssh,所以把ssh终端关掉之后,子进程也就被自动kill掉了,解决办法就是更改这个命令进程的父进程为init,那样ssh退出去之后,命令依然会运行

    默认情况下:

    [root@localhost ~]# ping 127.0.0.1 &>/dev/null  &
    
    [1] 1782
    
    [root@localhost ~]# pstree
    
    init─┬─VBoxService───7*[{VBoxService}]
    
         ├─abrtd
    
         ├─acpid
    
         ├─atd
    
         ├─auditd───{auditd}
    
         ├─console-kit-dae───63*[{console-kit-da}]
    
         ├─crond
    
         ├─dbus-daemon
    
         ├─dhclient
    
         ├─hald───hald-runner─┬─hald-addon-acpi
    
         │                    └─hald-addon-inpu
    
         ├─master─┬─pickup
    
         │        └─qmgr
    
         ├─6*[mingetty]
    
         ├─redis-server───2*[{redis-server}]
    
         ├─rsyslogd───3*[{rsyslogd}]
    
         ├─sshd───sshd───bash─┬─ping  -------->从进程树中可以看出ping的父进程是ssh
    
         │                    └─pstree
    
         └─udevd───udevd

    解决办法:

    1.使用nohup   即  nohup  commond &
    
    [root@localhost ~]# nohup ping 127.0.0.1 &>/dev/null  &
    
    查看进程:
    
    [root@localhost ~]# pstree 
    
    init─┬─VBoxService───7*[{VBoxService}]
    
         ├─abrtd
    
         ├─acpid
    
         ├─atd
    
         ├─auditd───{auditd}
    
         ├─console-kit-dae───63*[{console-kit-da}]
    
         ├─crond
    
         ├─dbus-daemon
    
         ├─dhclient
    
         ├─hald───hald-runner─┬─hald-addon-acpi
    
         │                    └─hald-addon-inpu
    
         ├─master─┬─pickup
    
         │        └─qmgr
    
         ├─6*[mingetty]
    
         ├─ping           ---------->ping的父进程已经是init了
    
         ├─redis-server───2*[{redis-server}]
    
         ├─rsyslogd───3*[{rsyslogd}]
    
         ├─sshd───sshd───bash───pstree
    
         └─udevd───udevd
    
    
    
    2.使用setsid  setsid  commond &  
    
    [root@localhost ~]# setsid ping 127.0.0.1 &>/dev/null &
    
    查看进程;
    
    [root@localhost ~]# pstree
    
    init─┬─VBoxService───7*[{VBoxService}]
    
         ├─abrtd
    
         ├─acpid
    
         ├─atd
    
         ├─auditd───{auditd}
    
         ├─console-kit-dae───63*[{console-kit-da}]
    
         ├─crond
    
         ├─dbus-daemon
    
         ├─dhclient
    
         ├─hald───hald-runner─┬─hald-addon-acpi
    
         │                    └─hald-addon-inpu
    
         ├─master─┬─pickup
    
         │        └─qmgr
    
         ├─6*[mingetty]
    
         ├─ping               ---------->ping的父进程已经是init了
    
         ├─redis-server───2*[{redis-server}]
    
         ├─rsyslogd───3*[{rsyslogd}]
    
         ├─sshd───sshd───bash───pstree
    
         └─udevd───udevd
    
    
    
    
    3.使用(),  (commond &)
    
    [root@localhost ~]# ( ping 127.0.0.1 &>/dev/null & ) 
    
    查看进程树:
    
    [root@localhost ~]# pstree
    
    init─┬─VBoxService───7*[{VBoxService}]
    
         ├─abrtd
    
         ├─acpid
    
         ├─atd
    
         ├─auditd───{auditd}
    
         ├─console-kit-dae───63*[{console-kit-da}]
    
         ├─crond
    
         ├─dbus-daemon
    
         ├─dhclient
    
         ├─hald───hald-runner─┬─hald-addon-acpi
    
         │                    └─hald-addon-inpu
    
         ├─master─┬─pickup
    
         │        └─qmgr
    
         ├─6*[mingetty]
    
         ├─ping              ---------->ping的父进程已经是init了
    
         ├─redis-server───2*[{redis-server}]
    
         ├─rsyslogd───3*[{rsyslogd}]
    
         ├─sshd───sshd───bash───pstree
    
         └─udevd───udevd
  • 相关阅读:
    dividend = Integer.parseInt(args[0])参数问题
    java异常处理的throw和throws的区别
    NULL,"",String.Empty三者在C#中的区别
    C# 窗体文件下的 MainForm.cs,MainForm.Designer.cs,MainForm.resx,是什么,干什么
    关于MyEclipse,JDK使用的几点收获
    子类会继承父类对于接口的实现
    koa2做请求转发
    ES5中的类与继承
    Docker中部署puppeteer导出pdf
    typescript import 全局node_modules报错
  • 原文地址:https://www.cnblogs.com/pycode/p/8734296.html
Copyright © 2011-2022 走看看