如何让Linux的脚本关闭终端后继续执行?

如何让Linux的脚本关闭终端后继续执行?,第1张

在Linux的shell终端执行一个命令时是不能关掉终端的,否则程序也会终止。

但是有些耗时比较长的命令是无法保证一直开着终端的,费电就不说了,毕竟网络还有不稳定的时候,一掉线程序也关掉了。

解决方法是nohup命令,在程序的前面加上nohup,程序的后面加上&,这样程序就会一直执行直到结束。

比如:nohup php spider.php &

回车,然后提示一堆东西,再次回车,回到shell界面。

这就可以了。

还有一个问题:程序在执行中会输出一些信息,如果后台执行的话,这些信息是不是没法看了?(比如:程序执行出错终端,想看看报错信息之类的)。使用了nohup命令后,会在当前目录下生成一个nohup.out的日志文件,记录的就是命令的输出。

加&是不行的。

因为不管是后台还是前台,都是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/7586616.html

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

发表评论

登录后才能评论

评论列表(0条)

保存