如何将linux前台任务转后台运行

简介: 如何将linux前台任务转后台运行

学过linux的童鞋们都知道,在命令行中启动某个任务有两种方式,一种是前台,一种是后台。


一般来说,对于短时任务,我们以前台方式运行,在这种方式下,任务运行结束后用户会再次回到命令行;而对于长时任务,一般希望以后台方式运行,这样做的好处是,当用户退出命令行时并不影响任务运行。


举例来说, run.sh脚本内容如下

#!/bin/bash
while true; do
    sleep 1
    echo "hello world"




前台运行:


$ bash run.sh           
hello world
hello world
hello world
hello world




后台运行:


$ nohup bash  run.sh 2>&1 &                                                                     
[1] 31520
nohup: ignoring input and appending output to 'nohup.out'
$ tailf nohup.out 
hello world
hello world
hello world
hello world
hello world
hello world


其中31520表示作业id。如果不加nohup, 当终端退出时,run.sh对应的进程会收到SIGHUP信号,而进程对SIGHUP信号的默认处理方式是终止,这显然不是我们想要的。


而加上nohup之后,run.sh对应的进程会忽略SIGHUP信号,即终端退出并不影响进程继续运行.




前台运行转后台


很多情况下,我们并不知晓某个任务会运行多久,因此一般在前台运行该任务。如果发现该任务一时半会完成不了,能不能将它从前台运行转到后台?答案是可以,举例说明如何操作:


首先在前台运行run.sh


$ bash run.sh 
hello world
hello world
hello world



输入ctrl + z 将该前台任务挂起

^Z
[1]  + 32295 suspended  bash run.sh



运行jobs命令,查看任务号(可以看到run.sh对应的任务号是1)

$ jobs                                                                                                  
[1]  + suspended  bash run.sh



运行bg命令,将任务从前台转到后台

bg %1




后台运行转前台


既然任务可以从前台转后台,那反过来从后台转前台是否可行呢?答案是可以的 首先以后台运行run.sh


$ nohup bash  run.sh 2>&1 & 
[1] 482
nohup: ignoring input and appending output to 'nohup.out'



查看后台任务

$ jobs
[1]  + running    nohup bash run.sh 2>&1



运行fg命令,将任务从后台转到前台

$ fg %1                    
[1]  + 482 running    nohup bash run.sh 2>&1
相关文章
|
8月前
|
数据可视化 Linux 测试技术
Linux系统之部署nullboard任务管理工具
【4月更文挑战第4天】Linux系统之部署nullboard任务管理工具
127 11
|
2月前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
96 2
|
5月前
|
Linux 网络安全 Python
linux后台运行命令screen的使用
linux后台运行命令screen的使用
444 2
linux后台运行命令screen的使用
|
3月前
|
运维 Java Linux
Linux 下命令后台运行秘籍:无惧终端断开的魔法
本文详细介绍了在 Linux 系统下使命令不受终端断开影响、持续在后台运行的多种方法及其原理。包括使用 `nohup`、`setsid`、括号括起来、作业调度和 `screen` 等技巧,帮助读者提高工作效率,确保任务不被意外中断。
81 0
Linux 下命令后台运行秘籍:无惧终端断开的魔法
|
4月前
|
消息中间件 分布式计算 Java
Linux环境下 java程序提交spark任务到Yarn报错
Linux环境下 java程序提交spark任务到Yarn报错
56 5
|
5月前
|
监控 数据挖掘 Linux
Linux服务器PBS任务队列作业提交脚本的使用方法
【8月更文挑战第21天】在Linux服务器环境中,PBS任务队列能高效管理及调度计算任务。首先需理解基本概念:作业是在服务器上执行的任务;队列则是等待执行任务的列表,具有不同的资源限制与优先级;节点指分配给作业的计算资源。
847 4
|
5月前
|
监控 Linux 调度
在Linux中,如何进行调度任务?什么是 crontab 并解释 crontab 中的字段?
在Linux中,如何进行调度任务?什么是 crontab 并解释 crontab 中的字段?
|
4月前
|
Linux 调度
linux中几种任务的优先级
linux中几种任务的优先级
|
5月前
|
Linux Windows Python
最新 Windows\Linux 后台运行程序注解
本文介绍了在Windows和Linux系统后台运行程序的方法,包括Linux系统中使用nohup命令和ps命令查看进程,以及Windows系统中通过编写bat文件和使用PowerShell启动隐藏窗口的程序,确保即使退出命令行界面程序也继续在后台运行。
|
6月前
|
Java Linux Shell
Linux后台运行jar程序
【7月更文挑战第23天】
118 1