http://16.157.69.125:8182/document/YXjSKQIcDl0pZkF9dCC97Q/paginate
最近在工作中需要在linux上运行一个java 程序,去download 一大堆的图片,但是每次关掉终端,任务也同时停止了,这很正常, 因为是在同一个进程里吗
在网上找了篇文档,不错,写得很透彻,分享以下
http://www.heibai.net/article/info/info.php?infoid=43389
在Linux中,如果要让进程在后台运行,一般情况下,我们在命令后面加上&即可,实际上,这样是将命令放入到一个作业队列中了:
$ ./test.sh &
[1] 17208
$ jobs -l
[1]+ 17208 Running ./test.sh &
对于已经在前台执行的命令,也可以重新放到后台执行,首先按ctrl+z暂停已经运行的进程,然后使用bg命令将停止的作业放到后台运行:
$ ./test.sh
[1]+ Stopped ./test.sh
$ bg %1
[1]+ ./test.sh &
$ jobs -l
[1]+ 22794 Running ./test.sh &
但是如上方到后台执行的进程,其父进程还是当前终端shell的进程,而一旦父进程退出,则会发送hangup信号给所有子进程,子进程收到hangup以后也会退出。如果我们要在退出shell的时候继续运行进程,则需要使用nohup忽略hangup信号,或者 setsid将将父进程设为init进程(进程号为1)
$ echo $$
21734
$ nohup ./test.sh &
[1] 29016
$ ps -ef | grep test
515 29710 21734 0 11:47 pts/12 00:00:00 /bin/sh ./test.sh
515 29713 21734 0 11:47 pts/12 00:00:00 grep test
$ setsid ./test.sh &
[1] 409
$ ps -ef | grep test
515 410 1 0 11:49 ? 00:00:00 /bin/sh ./test.sh
515 413 21734 0 11:49 pts/12 00:00:00 grep test
上面的试验演示了使用nohup/setsid加上&使进程在后台运行,同时不受当前shell退出的影响。那么对于已经在后台运行的进程,该怎么办呢?可以使用disown命令:
我本人试过,disown不起作用,
我现在是这样做的
ps -ef的到pid
然后kill pid
注:本文试验环境为Red Hat Enterprise Linux AS release 4 (Nahant Update 5),shell为/bin/bash,不同的OS和shell可能命令有些不一样。例如AIX的ksh,没有disown,但是可以使用nohup -p PID来获得disown同样的效果。
还有一种更加强大的方式是使用screen,首先创建一个断开模式的虚拟终端,然后用-r选项重新连接这个虚拟终端,在其中执行的任何命令,都能达到nohup的效果,这在有多个命令需要在后台连续执行的时候比较方便:
$ screen -dmS screen_test
$ screen -list
There is a screen on:
27963.screen_test (Detached)
1 Socket in /tmp/uscreens/S-jiangfeng.
$ screen -r screen_test
分享到:
相关推荐
关于VScode报错“终端将被任务重用,按任意键关闭”的解决方案 文章目录关于VScode报错“终端将被任务重用,按任意键关闭”的解决方案报错时候解决方案 这其实不是一种报错,有这个提示的原因是本地端口是被共享的,...
如果我们在终端中直接执行的话,关闭终端窗口,Python任务就会中断,Python进程会被杀死,程序将停止运行。可以使用如下命令运行python脚本, python apschedulerscript.py & 这样执行后及时关闭终端窗口,程序依旧...
此外,还有任务杀手或清理工具,它们可以关闭不需要的应用,释放内存资源,防止应用在后台消耗过多电量。 在实际应用中,用户还可以利用通知中心来管理任务,及时处理来自不同应用的消息和提醒。此外,很多应用支持...
然而,有些情况下,用户可能出于各种原因(如软件冲突、系统资源占用过高或误认为其影响了系统性能)想要关闭360的这一部分功能。 描述中提到的“无毒产品,看样先查病毒再使用!”这句提醒用户在进行任何操作之前...
2. **关闭软件**:确保通软终端安全管理系统V6正在运行的所有进程都已停止,以防止卸载过程中出现错误。 3. **系统权限**:执行卸载脚本通常需要管理员权限,因此,使用具有管理员权限的账户运行该脚本。 4. **后续...
休眠模式是手持终端设备的主要工作状态之一,它对设备的整体功耗有着至关重要的影响。在这种模式下,除了少数必要的组件(如实时时钟RTC)外,其他大部分组件都将被关闭以降低功耗。 - **CPU**:通过VDDalive端口...
nohup(no hang up)指令可以使命令永久执行下去,和用户终端没有关系,断开 SSH 不影响运行。例如: nohup ./test.sh > out.log 2>err.log & nohup 指令基本使用格式为:nohup Command [ Arg ... ] [ & ] 3. ...
在Linux操作系统中,终端是与系统进行交互的重要工具,它提供了命令行界面,允许用户执行各种操作,如管理系统、运行程序、编辑文件等。本文将详细介绍Linux下的终端使用技巧,特别是针对gnome-terminal的一些快捷键...
这个命令会启动Firefox,并且不会受到终端关闭的影响。需要注意的是,`nohup`命令会创建一个名为`nohup.out`的日志文件,用于记录标准输出和标准错误输出。 5. **指定程序路径** 如果程序不在环境变量PATH定义的...
值得注意的是,尽管关闭后台应用可以节省资源,但一些系统服务和推送通知类应用需要在后台运行以保证功能正常,因此不建议一概而论地全部关闭。 总的来说,理解并掌握快速关闭后台应用程序的方法,对于提高触摸式...
下载软件后,以管理员权限运行,点击“一键关闭Windows Defender”按钮,等待任务栏中的Windows Defender图标消失,表示已成功关闭。 最后,通过注册表编辑器关闭Windows Defender的自动扫描功能: 1. 右键点击...
WJ2005终端作为热网监控系统的一部分,承担着监测和调整供热网络参数的任务,例如温度、压力、流量等。这些数据对于确保供热系统的稳定运行至关重要。 文档中的《WJ2005终端主要设置项详细说明.doc》涵盖了终端的...
Windows 7操作系统中内置的“超级终端”(HyperTerminal)是一款强大的通信程序,主要用于串行通信、调制解调器连接以及远程控制等任务,它是系统管理员调试设备时的重要工具。本文将深入探讨如何在Windows 7中设置...
例如,可能有一个长时间运行的脚本或进程正在执行,不希望因为关闭SecureCRT而导致任务中断。此时,我们需要了解如何设置SecureCRT使其能够在后台保持连接。 首先,开启SecureCRT的后台模式是非常重要的。在...
1. **最小功率模式**:最小功率模式是指移动通信终端在不活动或待机状态下所采用的一种低功耗运行状态。这种模式旨在减少不必要的能量消耗,以延长电池使用寿命。在最小功率模式下,设备会关闭或降低某些组件的工作...
在Macbook上,终端是开发者和系统管理员的重要工具,它提供了命令行界面,允许用户执行各种操作系统级别的任务。为了提高工作效率并个性化工作环境,许多人选择为终端应用不同的主题。"Macbook 终端经典魔鬼主题...
总之,通用超级终端是IT行业中一个实用的通信工具,对于硬件调试、设备监控以及串口通信相关的任务,它提供了一个直观且灵活的平台,极大地简化了与串行设备交互的复杂性。正确理解和使用超级终端,能帮助用户更好地...
数据终端是一种专用于数据处理和通信的设备,广泛应用于各种行业,如物流、零售、医疗等。本使用说明书将详细介绍i60系列数据终端的操作步骤和功能特性,帮助用户更好地理解和使用这款产品。 首先,i60系列数据终端...
- **Shutdown**:违例发生后,受影响的端口会自动关闭,需手动恢复。 通过以上知识点的学习和实践,可以有效地提升网络接入的安全性,防止病毒扩散和未经授权的设备接入,确保校园网络的稳定运行。