linux使进程不依赖终端,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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值