linux怎么前台运行进程,Linux中如何让进程(或正在运行的程序)到后台运行?

  • Post author:
  • Post category:linux


在Linux中,如果要让进程在后台运行,一般情况下,我们在命令后面加上&即可,实际上,这样是将命令放入到一个作业队列中了:

1

$ ./test.sh &

2

[1] 17208

3

4

$ jobs -l

5

[1]+ 17208 Running                 ./test.sh &

对于已经在前台执行的命令,也可以重新放到后台执行,首先按ctrl+z暂停已经运行的进程,然后使用bg命令将停止的作业放到后台运行:

1

$ ./test.sh

2

[1]+  Stopped                 ./test.sh

3

4

$bg

%1

5

[1]+ ./test.sh &

6

7

$ jobs -l

8

[1]+ 22794 Running                 ./test.sh &

但是如上方到后台执行的进程,其父进程还是当前终端shell的进程,而一旦父进程退出,则会发送hangup信号给所有子进程,子进程收到hangup以后也会退出。如果我们要在退出shell的时候继续运行进程,则需要使用nohup忽略hangup信号,或者setsid将将父进程设为init进程(进程号为1)

1

$echo

$$

2

21734

3

4

$nohup

./test.sh &

5

[1] 29016

6

7

$ps

-ef |grep test

8

515      29710 21734  0 11:47 pts/12   00:00:00 /bin/sh ./test.sh

9

515      29713 21734  0 11:47 pts/12   00:00:00grep test

1

$ setsid ./test.sh &

2

[1] 409

3

4

$ps