1. 程式人生 > >linux進程永久放後臺運行

linux進程永久放後臺運行

log 命令 set IT CP 父進程 OS 後臺運行 acpi

我們使用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

linux進程永久放後臺運行