图片 1

我们常常会遇上这么的标题,用 telnet/ssh 登入了长途的 Linux
服务器,运转了部分耗费时间较长的任务,
结果却是因为网络的不安静变成职责中途受挫。如何让命令提交后不受本地关闭终端窗口、互连网断开连接的搅和呢?

Linux 技术:让进程在后台可信赖运维的三种办法

咱们平常会遇上这么的主题材料,用 telnet/ssh 登陆了长途的 Linux
服务器,运营了一些耗费时间较长的任务,
结果却是因为互联网的动荡产生任务中途受挫。怎么样让命令提交后不受本地关闭终端窗口/互连网断开连接的郁闷呢?

上边举了部分事例, 您能够本着分裂的场合选取差别的方式来管理那些难题。

nohup/setsid/&场景:

如若只是暂且有一个命令须要长日子运作,什么艺术能最便捷的承保它在后台稳定运行吧?

笔者们领会,当顾客注销(logout)恐怕互连网断开时,终端会吸收接纳HUP(hangup)时域信号进而关闭其全数子进度。因而,大家的解决办法就有二种路子:要么让进度忽视HUP 非信号,要么让进程运营在新的对话里之所以成为不归于此终端的子进度。

  1. nohup

nohup 无疑是大家率先想到的方法。看名称就能够想到其意义,nohup
的用场就是让提交的通令忽视 hangup 非时限信号。让我们先来看一下 nohup
的帮手音信:

NOHUP(1)                        User Commands                        NOHUP(1)NAME       nohup - run a command immune to hangups, with output to a non-ttySYNOPSIS       nohup COMMAND [ARG]...       nohup OPTIONDESCRIPTION       Run COMMAND, ignoring hangup signals.       --help display this help and exit       --version              output version information and exit

看得出,nohup 的运用是那么些福利的,只需在要拍卖的授命前拉长 nohup
就能够,规范输出和正式错误缺省会被重定向到 nohup.out
文件中。平日大家可在最后加上”&”来将指令同偶然候归入后台运维,也可用”>filename
2>&1″来更动缺省的重定向文件名。

nohup 示例

[[email protected] ~]# nohup ping www.ibm.com &[1] 3059nohup: appending output to `nohup.out'[[email protected] ~]# ps -ef |grep 3059root      3059   984  0 21:06 pts/3    00:00:00 ping www.ibm.comroot      3067   984  0 21:06 pts/3    00:00:00 grep 3059[[email protected] ~]#

2.setsid

nohup 无疑能透过忽视 HUP
非确定性信号来使我们的进程防止中途被暂停,但一旦我们换个思路想一下,若是大家的经过不归属选择HUP 频域信号的终点的子进度,那么自然也就不会晤前遭受 HUP 功率信号的熏陶了。setsid
就会扶助我们做到那或多或少。让我们先来看一下 setsid 的提携音讯:

SETSID(8)                 Linux Programmer’s Manual                 SETSID(8)NAME       setsid - run a program in a new sessionSYNOPSIS       setsid program [ arg ... ]DESCRIPTION       setsid runs a program in a new session.

看得出 setsid 的运用也是特别有利的,也只需在要拍卖的命令前增加 setsid
就能够。

setsid 示例

[[email protected] ~]# setsid ping www.ibm.com[[email protected] ~]# ps -ef |grep www.ibm.comroot     31094     1  0 07:28 ?        00:00:00 ping www.ibm.comroot     31102 29217  0 07:29 pts/4    00:00:00 grep www.ibm.com[[email protected] ~]#

值得注意的是,上例中我们的历程 ID(PIDState of Qatar为31094,而它的父
ID(PPID)为1(即为 init 进程 ID),并非眼下极端的进度ID。请将此例与nohup 例中的父 ID 做比较。

3.&

此间还应该有贰个关于 subshell
的小本领。我们知晓,将一个或五个命名满含在“(卡塔尔(قطر‎”中就能够让这一个命令在子 shell
中运作中,进而增加出无数有意思的功能,大家以往要商量的正是内部之一。

当大家将”&”也归入“(卡塔尔”内现在,大家就能够发现所提交的作业并不在作业列表中,也正是说,是心余力绌通过jobs来查阅的。让大家来拜候为啥这么就能够躲过
HUP 频限信号的震慑啊。

subshell 示例

[[email protected] ~]# (ping www.ibm.com &)[[email protected] ~]# ps -ef |grep www.ibm.comroot     16270     1  0 14:13 pts/4    00:00:00 ping www.ibm.comroot     16278 15362  0 14:13 pts/4    00:00:00 grep www.ibm.com[[email protected] ~]#

从上例中得以看出,新交付的进度的父 ID(PPID)为1(init 进度的
PID),实际不是当下极端的经过
ID。由此并不归于当前极端的子进程,从而也就不会遭到当前终端的 HUP
频限信号的影响了。

disown

大家曾经知晓,假若事先在命令前增进 nohup 也许 setsid 就足防止止 HUP
实信号的熏陶。可是借使大家未加任何处理就早就付诸了指令,该怎么样补救手艺让它避免HUP 随机信号的熏陶呢?

当时想加 nohup 或然 setsid 已经来不及,只好通过作业调节和 disown
来消除那几个标题了。让我们来看一下 disown 的佑助新闻:

disown [-ar] [-h] [jobspec ...]Without options, each jobspec is  removed  from  the  table  ofactive  jobs.   If  the -h option is given, each jobspec is notremoved from the table, but is marked so  that  SIGHUP  is  notsent  to the job if the shell receives a SIGHUP.  If no jobspecis present, and neither the -a nor the -r option  is  supplied,the  current  job  is  used.  If no jobspec is supplied, the -aoption means to remove or mark all jobs; the -r option  withouta  jobspec  argument  restricts operation to running jobs.  Thereturn value is 0 unless a jobspec does  not  specify  a  validjob.

能够观望,大家得以用如下方式来达到我们的目标。

灵活运用 CT福特ExplorerL-z

在我们的家常职业中,大家得以用 CT中华VL-z
来将日前进程挂起到后台暂停止运输营,实践一些其他操作,然后再用 fg
来将挂起的经过重新放回前台(也可用 bg
来将挂起的长河放在后台)继续运转。那样大家就能够在三个极限内灵活切换运转多个义务,这点在调解代码时进一层有用。因为将代码编辑器挂起到后台再重新放回时,光标定位依旧停留在上次挂起时的职位,制止了再也定位的劳动。

用disown -h jobspec来使某个作业忽略HUP信号。用disown -ah 来使所有的作业都忽略HUP信号。用disown -rh 来使正在运行的作业忽略HUP信号。

亟需潜心的是,当使用过 disown
之后,会将把对象作业从作业列表中移除,大家将不可能再采纳jobs来查阅它,然则仍旧能够用ps
-ef查找到它。

只是还可能有叁个主题材料,这种措施的操作对象是学业,假如大家在运作命令时在终极加了”&”来使它成为贰个学业并在后台运转,那么就顺手了,大家得以经过jobs命令来收获全部作业的列表。可是假诺并没有把近年来命令作为作业来运维,怎样本领取得它的作业号呢?答案正是用
CT奥迪Q7L-z(按住Ctrl键的同期按住z键)了!
CTSportageL-z
的用项即是将日前历程挂起(Suspend),然后大家就足以用jobs命令来询问它的作业号,再用bg
jobspec来将它放入后台并三番两次运营。

亟需留意的是,就算挂起会影响当下经过的运作结果,请慎用此形式。

disown
示例1(倘诺提交命令时一度用“&”将指令放入后台运转,则能够直接使用“disown”)

[[email protected] build]# cp -r testLargeFile largeFile &[1] 4825[[email protected] build]# jobs[1]+  Running                 cp -i -r testLargeFile largeFile &[[email protected] build]# disown -h %1[[email protected] build]# ps -ef |grep largeFileroot      4825   968  1 09:46 pts/4    00:00:00 cp -i -r testLargeFile largeFileroot      4853   968  0 09:46 pts/4    00:00:00 grep largeFile[[email protected] build]# logout

disown 示例2(假如提交命令时未接受“&”将指令归入后台运转,可接受 CT奥迪Q7L-z
和“bg”将其归入后台,再利用“disown”)

[[email protected] build]# cp -r testLargeFile largeFile2[1]+  Stopped                 cp -i -r testLargeFile largeFile2[[email protected] build]# bg %1[1]+ cp -i -r testLargeFile largeFile2 &[[email protected] build]# jobs[1]+  Running                 cp -i -r testLargeFile largeFile2 &[[email protected] build]# disown -h %1[[email protected] build]# ps -ef |grep largeFile2root      5790  5577  1 10:04 pts/3    00:00:00 cp -i -r testLargeFile largeFile2root      5824  5577  0 10:05 pts/3    00:00:00 grep largeFile2[[email protected] build]#

screen

咱俩早已知晓了怎么着让过程免受 HUP
能量信号的影响,可是假若有大气这种命令须要在稳固的后台里运营,如何幸免对每条命令都做如此的操作呢?

那个时候最有利的主意正是 screen 了。综上可得,screen 提供了 ANSI/VT100
的极限模拟器,使它亦可在一个实打实终端下运作三个全屏的伪终端。screen
的参数比非常多,具备很强盛的意义,大家在那仅介绍其常用作用以至简要剖析一下怎么使用
screen 能够制止 HUP 非确定性信号的影响。大家先看一下 screen 的援助音讯:

SCREEN(1)                                                           SCREEN(1)NAME       screen - screen manager with VT100/ANSI terminal emulationSYNOPSIS       screen [ -options ] [ cmd [ args ] ]       screen -r [[pid.]tty[.host]]       screen -r sessionowner/[[pid.]tty[.host]]DESCRIPTION       Screen  is  a  full-screen  window manager that multiplexes a physical       terminal between several  processes  (typically  interactive  shells).       Each  virtual  terminal provides the functions of a DEC VT100 terminal       and, in addition, several control functions from the  ISO  6429  (ECMA       48,  ANSI  X3.64)  and ISO 2022 standards (e.g. insert/delete line and       support for multiple character sets).  There is a  scrollback  history       buffer  for  each virtual terminal and a copy-and-paste mechanism that       allows moving text regions between windows.

运用 screen 很便利,有以下多少个常用选项:

用screen -dmS session name来建立一个处于断开模式下的会话(并指定其会话名)。用screen -list 来列出所有会话。用screen -r session name来重新连接指定会话。用快捷键CTRL-a d 来暂时断开当前会话。

screen 示例

[[email protected] ~]# screen -dmS Urumchi[[email protected] ~]# screen -listThere is a screen on:        12842.Urumchi   (Detached)1 Socket in /tmp/screens/S-root.[[email protected] ~]# screen -r Urumchi

当大家用“-r”连接到 screen
会话后,大家就足以在此个伪终端里面天高皇帝远,再也不用担心 HUP
实信号会对我们的历程产生影响,也不用给各样命令前都增多“nohup”也许“setsid”了。那是为啥吗?让笔者来看一下底下四个例子吗。

  1. 未选用 screen 时新历程的进度树

    [[email protected] ~]# ping www.google.com &[1] 9499[[email protected] ~]# pstree -H 9499init─┬─Xvnc ├─acpid ├─atd ├─2*[sendmail] ├─sshd─┬─sshd───bash───pstree │ └─sshd───bash───ping

咱俩得以看出,未利用 screen 时我们所处的 bash 是 sshd 的子进度,当 ssh
断开连接时,HUP 能量信号自然会影响到它上面包车型地铁全体子进度(包罗大家新创造的
ping 进度)。

  1. 动用了 screen 后新进度的经过树

    [[email protected] ~]# screen -r Urumchi[[email protected] ~]# ping www.ibm.com &[1] 9488[[email protected] ~]# pstree -H 9488init─┬─Xvnc ├─acpid ├─atd ├─screen───bash───ping ├─2*[sendmail]

而选拔了 screen 后就区别了,那时 bash 是 screen 的子进度,而 screen 是
init(PID为1)的子进程。那么当 ssh 断开连接时,HUP 功率信号自然不会耳熟能详到
screen 上边的子进度了。

总结

现行反革命三种艺术已经介绍达成,我们得以借助不相同的景象来筛选分化的方案。nohup/setsid
无疑是临时需求时最便利的法子,disown
能协助大家来过后补救当前早已在运行了的作业,而 screen
则是在大量操作时不二的选拔了。

原稿转发自《Linux就该如此学》:

才能:让进度在后台可靠运营的三种方法
我们平日会遇上这么的标题,用 telnet/ssh 登陆了中间隔的 Linux
服务器,运维了一些耗费时间较长的…

总结

1. nohup

nohup 无疑是我们先是想到的艺术。看名就能够猜到其意义,nohup
的用场就是让提交的命令忽视 hangup 时限信号。

nohup 的运用是丰硕便利的,只需在要拍卖的下令前拉长 nohup
就可以,标准输出和规范错误缺省会被重定向到 nohup.out
文件中。平时我们可在最后加上”&”来将指令同不平时候纳入后台运营,也可用”>filename
2>&1″来改换缺省的重定向文件名。

nohup 示例

[root@pvcent107 ~]# nohup ping www.ibm.com &
[1] 3059
nohup: appending output to `nohup.out'
[root@pvcent107 ~]# ps -ef |grep 3059
root      3059   984  0 21:06 pts/3    00:00:00 ping www.ibm.com
root      3067   984  0 21:06 pts/3    00:00:00 grep 3059
[root@pvcent107 ~]#

screen

灵活运用 CT揽胜L-z

在我们的日常工作中,大家得以用 CTSportageL-z
来将近年来经过挂起到后台暂停运营,实践一些别的操作,然后再用 fg
来将挂起的长河重新放回前台(也可用 bg
来将挂起的进程放在后台)继续运行。那样大家就能够在贰个极端内灵活切换运转多个职分,那一点在调度代码时尤其有用。因为将代码编辑器挂起到后台再重复放回时,光标定位依旧停留在上次挂起时的职分,幸免了重复定位的劳碌。

  • 用disown -h jobspec来使某些作业忽视HUP实信号。
  • 用disown -ah 来使全体的作业都忽视HUP信号。
  • 用disown -rh 来使正在运转的功课忽视HUP功率信号。

须求在乎的是,当使用过 disown
之后,会将把对象作业从作业列表中移除,我们将不可能再利用jobs来查阅它,不过照旧能够用ps
-ef查找到它。

唯独还会有二个难点,这种格局的操作对象是学业,若是我们在运行命令时在终极加了”&”来使它成为一个功课并在后台运转,那么就顺手了,我们能够透过jobs命令来赢得全体作业的列表。

只是一旦并从未把当下命令作为作业来运转,怎样工夫得到它的作业号呢?答案正是用
CT安德拉L-z(按住Ctrl键的同有时候按住z键)了!

CT库罗德L-z
的用项正是将近年来经过挂起(Suspend),然后大家就足以用jobs命令来查询它的作业号,再用bg
jobspec来将它放入后台并无冕运维。

亟需注意的是,借使挂起会影响当下进度的运转结果,请慎用此措施。

disown
示例1(假诺提交命令时曾经用“&”将下令放入后台运营,则足以一贯利用“disown”)

[root@pvcent107 build]# cp -r testLargeFile largeFile &
[1] 4825
[root@pvcent107 build]# jobs
[1]+  Running                 cp -i -r testLargeFile largeFile &
[root@pvcent107 build]# disown -h %1
[root@pvcent107 build]# ps -ef |grep largeFile
root      4825   968  1 09:46 pts/4    00:00:00 cp -i -r testLargeFile largeFile
root      4853   968  0 09:46 pts/4    00:00:00 grep largeFile
[root@pvcent107 build]# logout

disown 示例2(要是提交命令时未接受“&”将下令放入后台运维,可选择 CTENVISIONL-z
和“bg”将其归入后台,再利用“disown”)

[root@pvcent107 build]# cp -r testLargeFile largeFile2

[1]+  Stopped                 cp -i -r testLargeFile largeFile2
[root@pvcent107 build]# bg %1
[1]+ cp -i -r testLargeFile largeFile2 &
[root@pvcent107 build]# jobs
[1]+  Running                 cp -i -r testLargeFile largeFile2 &
[root@pvcent107 build]# disown -h %1
[root@pvcent107 build]# ps -ef |grep largeFile2
root      5790  5577  1 10:04 pts/3    00:00:00 cp -i -r testLargeFile largeFile2
root      5824  5577  0 10:05 pts/3    00:00:00 grep largeFile2
[root@pvcent107 build]#
NOHUP(1)            User Commands            NOHUP(1)
NAME
    nohup - run a command immune to hangups, with output to a non-tty
SYNOPSIS
    nohup COMMAND [ARG]...
    nohup OPTION

DESCRIPTION
    Run COMMAND, ignoring hangup signals.
    --help display this help and exit
    --version
       output version information and exit

nohup/setsid/& 场景

若果只是权且有三个发令要求长日子运作,什么方法能最便利的管教它在后台稳固运营吧?

大家知道,当顾客注销(logout)或然互联网断开时,终端会收下
HUP(hangup)功率信号进而关闭其全体子进程。由此,大家的解决办法就有两种门路:要么让进度忽视HUP 时域信号,要么让过程运维在新的对话里之所以成为不归于此终端的子进度。

[root@pvcent107 ~]# setsid ping www.ibm.com
[root@pvcent107 ~]# ps -ef |grep www.ibm.com
root   31094   1 0 07:28 ?    00:00:00 ping www.ibm.com
root   31102 29217 0 07:29 pts/4  00:00:00 grep www.ibm.com
[root@pvcent107 ~]#

2.setsid

nohup 无疑能因此忽视 HUP
连续信号来使大家的经过制止中途被中断,但一旦大家换个角度寻思,倘若大家的长河不归于接收HUP 非确定性信号的极端的子进度,那么自然也就不会蒙受 HUP 复信号的熏陶了。setsid
就能够扶植大家做到那或多或少。

setsid 的应用也是特别低价的,也只需在要拍卖的授命前增加 setsid 就能够。

setsid 示例

[root@pvcent107 ~]# setsid ping www.ibm.com
[root@pvcent107 ~]# ps -ef |grep www.ibm.com
root     31094     1  0 07:28 ?        00:00:00 ping www.ibm.com
root     31102 29217  0 07:29 pts/4    00:00:00 grep www.ibm.com
[root@pvcent107 ~]#

值得注意的是,上例中大家的经过 ID(PIDState of Qatar为31094,而它的父
ID(PPID)为1(即为 init 进度 ID),并不是当下终端的进程ID。请将此例与nohup 例中的父 ID 做比较。

大家日常会遇见这么的标题,用 telnet/ssh 登陆了中间距的 Linux
服务器,运维了一部分耗时较长的职务,
结果却是因为网络的不安静产生义务中途受挫。如何让命令提交后不受本地关闭终端窗口/互联网断开连接的侵扰呢?上面举了有的事例,
您能够本着分化的现象接收差异的方式来拍卖这么些难题。

3.&

这里还应该有二个有关 subshell
的小手艺。大家掌握,将三个或多个命名包罗在“(卡塔尔(قطر‎”中就能够让那个命令在子 shell
中运作中,进而扩大出无数风趣的功能,大家几方今要斟酌的正是内部之一。

当我们将”&”也归入“(卡塔尔(قطر‎”内以往,大家就能意识所付出的作业并不在作业列表中,也正是说,是回天乏术通过jobs来查阅的。让我们来拜望为何如此就能够躲过
HUP 时域信号的影响吗。

subshell 示例

[root@pvcent107 ~]# (ping www.ibm.com &)
[root@pvcent107 ~]# ps -ef |grep www.ibm.com
root     16270     1  0 14:13 pts/4    00:00:00 ping www.ibm.com
root     16278 15362  0 14:13 pts/4    00:00:00 grep www.ibm.com
[root@pvcent107 ~]#

从上例中得以看来,新交付的进度的父 ID(PPID)为1(init 进度的
PID),并非现阶段终端的历程
ID。因而并不归于当前极端的子进程,进而也就不会遇到当前终端的 HUP
时域信号的影响了。

用急忙键CTLANDL-a d 来近些日子断开当前对话。

想让进度在断开连接后仍旧维持运转?借使该进程一度开首运转了该怎么补救?
借使有大气那类须要怎么样简化操作?

杀绝方法:

screen

咱俩早已知道了怎样让过程免受 HUP
确定性信号的影响,不过只要有雅量这种命令需求在稳固性的后台里运维,怎么样幸免对每条命令都做如此的操作呢?

那时最利于的点子正是 screen 了。不问可以预知,screen 提供了 ANSI/VT100
的终点模拟器,使它亦可在一个老实终端下运维多少个全屏的伪终端。screen
的参数比非常多,具有很有力的机能,大家在那仅介绍其常用成效以至简要解析一下为啥选拔screen 能够避免 HUP 随机信号的震慑。

动用 screen 很有利,有以下多少个常用选项:

  • 用screen -dmS session
    name来树立贰个介乎断开形式下的对话(并钦赐其会话名)。
  • 用screen -list 来列出富有会话。
  • 用screen -r session name来再一次连接钦赐会话。
  • 用急速键CTRL-a d 来权且断开当前对话。

screen 示例

[root@pvcent107 ~]# screen -dmS Urumchi
[root@pvcent107 ~]# screen -list
There is a screen on:
        12842.Urumchi   (Detached)
1 Socket in /tmp/screens/S-root.

[root@pvcent107 ~]# screen -r Urumchi

当我们用“-r”连接到 screen
会话后,大家就足以在此个伪终端里面为非作歹,再也不用担忧 HUP
时域信号会对我们的长河形成影响,也不用给每种命令前都加上“nohup”也许“setsid”了。那是干什么吧?让自家来看一下底下七个例子吗。

  1. 未使用 screen 时新进程的经过树

    [root@pvcent107 ~]# ping www.google.com &
    [1] 9499
    [root@pvcent107 ~]# pstree -H 9499
    init─┬─Xvnc

      ├─acpid
      ├─atd
      ├─2*[sendmail] 
      ├─sshd─┬─sshd───bash───pstree
      │       └─sshd───bash───ping
    

我们得以看出,未选取 screen 时我们所处的 bash 是 sshd 的子进度,当 ssh
断开连接时,HUP 时域信号自然会影响到它上边包车型大巴全体子进度(富含大家新确立的
ping 进度)。

  1. 运用了 screen 后新历程的历程树

    [root@pvcent107 ~]# screen -r Urumchi
    [root@pvcent107 ~]# ping www.ibm.com &
    [1] 9488
    [root@pvcent107 ~]# pstree -H 9488
    init─┬─Xvnc

      ├─acpid
      ├─atd
      ├─screen───bash───ping
      ├─2*[sendmail]
    

而使用了 screen 后就差异了,此时 bash 是 screen 的子进度,而 screen 是
init(PID为1)的子进度。那么当 ssh 断开连接时,HUP 信号自然不会耳濡目染到
screen 上边包车型客车子进度了。

2、setsid

总结

前几日三种办法已经介绍实现,大家得以依附不一致的场地来抉择分化的方案。nohup/setsid
无疑是暂时须要时最有益的法子,disown
能援助我们来以往补救当前一度在运转了的课业,而 screen
则是在大量操作时不二的采取了。

灵活运用 CT奥迪Q5L-z

disown

大家曾经清楚,就算事情发生此前在命令前增加 nohup 或许 setsid 就可以防止 HUP
信号的震慑。然而只要大家未加任什么地方理就已经提交了指令,该怎么样补救才具让它防止HUP 数字信号的震慑啊?

那会儿想加 nohup 大概 setsid 已经来不如,只好通过作业调解和 disown
来解决这几个标题了。

我们可以用如下形式来完结大家的目标。

screen 示例

图片 1

用disown -ah 来使全部的功课都忽略HUP实信号。

上面举了有的例证, 您能够本着分歧的意况采用不相同的方式来管理那个标题。

subshell 示例

咱俩早已知晓,假如事情发生前在指令前拉长 nohup 恐怕 setsid 就能够制止 HUP
确定性信号的熏陶。可是固然大家未加任哪管理就早就交给了命令,该如何补救手艺让它防止HUP 实信号的熏陶呢?

3、这里还应该有多少个有关 subshell
的小技术。大家精通,将两个或七个命名包涵在“(卡塔尔国”中就会让那个命令在子 shell
中运营中,进而扩张出累累幽默的意义,我们几近些日子要斟酌的正是里面之一。
当大家将”&”也纳入“(卡塔尔国”内现在,大家就能够发觉所付出的课业并不在作业列表中,也正是说,是心余力绌透过jobs来查看的。让大家来看看为何这样就能够躲过
HUP 时域信号的影响呢。

然则还也可以有叁个标题,这种办法的操作对象是学业,假若大家在运营命令时在最终加了”&”来使它成为叁个功课并在后台运营,那么就顺风了,大家得以因此jobs命令来博取全数作业的列表。不过即使并不曾把当前命令作为作业来运作,怎样本事博取它的作业号呢?答案就是用
CTENVISIONL-z(按住Ctrl键的还要按住z键)了!

nohup/setsid/&

可以知道,nohup 的行使是特别常有益于的,只需在要管理的指令前拉长 nohup
就可以,规范输出和正规错误缺省会被重定向到 nohup.out
文件中。常常大家可在最终加上”&”来将下令同期放入后台运转,也可用”>filename
2>&1″来退换缺省的重定向文件名。

  1. 接纳了 screen 后新历程的过程树
SETSID(8)         Linux Programmer's Manual         SETSID(8)
NAME
    setsid - run a program in a new session 
SYNOPSIS
    setsid program [ arg ... ]
DESCRIPTION
    setsid runs a program in a new session.

那会儿想加 nohup 大概 setsid 已经来不如,只可以通过作业调解和 disown
来解决那几个标题了。让大家来看一下 disown 的佑助消息:

用disown -h jobspec来使某些作业忽视HUP时域信号。

[root@pvcent107 build]# cp -r testLargeFile largeFile &
[1] 4825
[root@pvcent107 build]# jobs
[1]+ Running         cp -i -r testLargeFile largeFile &
[root@pvcent107 build]# disown -h %1
[root@pvcent107 build]# ps -ef |grep largeFile
root   4825  968 1 09:46 pts/4  00:00:00 cp -i -r testLargeFile largeFile
root   4853  968 0 09:46 pts/4  00:00:00 grep largeFile
[root@pvcent107 build]# logout

我们清楚,当用户注销(logout)或然网络断开时,终端会接到
HUP(hangup)时域信号进而关闭其全体子进度。由此,大家的化解办法就有二种门路:要么让进度忽略HUP 能量信号,要么让进程启动在新的对话里之所以成为不归于此终端的子进度。

admin

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注