如何将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
相关文章
|
4月前
|
数据可视化 Linux 测试技术
Linux系统之部署nullboard任务管理工具
【4月更文挑战第4天】Linux系统之部署nullboard任务管理工具
92 11
|
4月前
|
存储 前端开发 Linux
Linux系统之部署ToDoList任务管理工具
【4月更文挑战第1天】Linux系统之部署ToDoList任务管理工具
129 1
|
14天前
|
Linux 网络安全 Python
linux后台运行命令screen的使用
linux后台运行命令screen的使用
50 2
linux后台运行命令screen的使用
|
20天前
|
监控 数据挖掘 Linux
Linux服务器PBS任务队列作业提交脚本的使用方法
【8月更文挑战第21天】在Linux服务器环境中,PBS任务队列能高效管理及调度计算任务。首先需理解基本概念:作业是在服务器上执行的任务;队列则是等待执行任务的列表,具有不同的资源限制与优先级;节点指分配给作业的计算资源。
|
20天前
|
监控 Linux 调度
在Linux中,如何进行调度任务?什么是 crontab 并解释 crontab 中的字段?
在Linux中,如何进行调度任务?什么是 crontab 并解释 crontab 中的字段?
|
10天前
|
Linux 调度
linux中几种任务的优先级
linux中几种任务的优先级
|
14天前
|
Linux Windows Python
最新 Windows\Linux 后台运行程序注解
本文介绍了在Windows和Linux系统后台运行程序的方法,包括Linux系统中使用nohup命令和ps命令查看进程,以及Windows系统中通过编写bat文件和使用PowerShell启动隐藏窗口的程序,确保即使退出命令行界面程序也继续在后台运行。
|
20天前
|
Linux Perl
在Linux中,系统目前有许多正在运行的任务,在不重启机器的条件下,有什么方法可以把所有正在运行的进程移除呢?
在Linux中,系统目前有许多正在运行的任务,在不重启机器的条件下,有什么方法可以把所有正在运行的进程移除呢?
|
20天前
|
监控 安全 Linux
在Linux中,如何编写自动化脚本来执行重复性任务?
在Linux中,如何编写自动化脚本来执行重复性任务?
|
22天前
|
Linux Shell 开发工具
在Linux中,如何编写一个脚本来自动执行日常任务?
在Linux中,如何编写一个脚本来自动执行日常任务?