如何在用户退出linux系统时使一个进程仍然继续执行

如何在用户退出linux系统时使一个进程仍然继续执行,第1张

一般有以下几种方法:

1)在输入命令的最前面加上nohup命令

如nohup your_command &这样命令在你退出后仍然会在后台执行

2)setsid命令

setsid your_command该命令的结果是使你所运行的命令的父进程为init,所以只有关机该进程才会停止

3)(your_command &)

就是用括号将你的命令括起来,这样做也是使命令的父进程为init

4)disown

当你在命令行下输入your_command &后命令就在后台执行了,然后执行jobs命令,该命令会列出当前正在后台执行的命令。例如输入命令“top&”

然后执行"jobs"

输出结果是

[1] + Suspended (tty output)top

注意行开头方括号内的数字,该数字叫做jobspec,是给当前后台运行的job的编号。这是你只要在命令行下输入"disown -h 1" 后台运行的top命令就不会受到hangup信号的影响了。

5)使用screen命令

命令行下输入screen命令就开启了一个screen进程,它就好像是一个全新的命令运行环境,在该环境中你可以像在正常的terminal下那样执行

命令,但是这个screen是不受其父进程的hangup信号的影响的,既然screen不受其父进程影响,当你意外掉线或者退出系统时,在screen

中仍在执行的命令仍然会继续执行。关于screen命令的使用方法你可以再去查阅相关资料。

1:在终端中执行PHP的命令为:

$php test.php

2.如果想使用control+c不终止php文件的执行的话使用命令:

$php test.php &

3.如果想退出终端以后php文件继续执行的话使用命令:

$nohup php test.php &

4.终止线程运行

$kill -9 线程id

加&是不行的。

因为不管是后台还是前台,都是terminal 的子进程。terminal一关,父进程在推出前,会杀掉所有的子进程。

Linux 里有一些工具,可以脱钩父子进程。比如screen,ubuntu/debian用apt安装。

apt-get install screen

用法:在terminal里打

screen

然后运行你的程序。

再按

ctrl +a, ctrl +d.

就脱钩了。可以关terminal了。

想挂钩,用

screen -r

如果有多个脱钩进程,比如

There are several suitable screens on:

8881.pts-0.Jordan(Detached)

8494.pts-0.Jordan(Detached)

screen -r [pid]

比如

screen -r 8881


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8274820.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存