Linux轻松将任务转入后台 (linux将前台程序转入后台)

在Linux系统中,有时我们需要在后台执行某些任务,以便在终端窗口关闭后也能继续运行。这时,将任务转入后台就非常有用了。本文将介绍如何在Linux系统中将任务转入后台,以及如何查看和管理后台任务。

一、将任务转入后台

在Linux系统中,我们可以使用以下命令将任务转入后台:

1. 使用“&”符号

在终端窗口中输入命令,并在最后加上“&”符号,即可将该命令转入后台执行。例如,输入以下命令:

“`

$ nohup python3 test.py &

“`

其中,“nohup”命令可以使后台任务不受终端窗口关闭的影响,“python3 test.py”是要执行的任务,“&”符号表示将该任务转入后台执行。

2. 使用“nohup”命令

在终端窗口中输入以下命令,即可使用“nohup”命令将任务转入后台执行:

“`

$ nohup command &

“`

其中,“command”为要执行的命令。

3. 使用“ctrl + z”和“bg”命令

在终端窗口中执行命令时,可以使用“ctrl + z”暂停该命令的执行。此时,该任务会停留在前台。输入“bg”命令即可将该任务放入后台继续执行。例如,输入以下命令:

“`

$ python3 test.py

“`

按下“ctrl + z”暂停该任务的执行,然后输入“bg”命令将该任务放入后台继续执行。

二、查看后台任务

在Linux系统中,我们可以使用以下命令查看后台任务:

1. 使用“jobs”命令

输入“jobs”命令,即可查看当前所有的后台任务。例如:

“`

$ jobs

“`

2. 使用“ps”命令

输入“ps”命令,可以查看当前系统中所有的进程。使用“ps -ef”命令可以查看详细信息。其中,“-e”表示显示所有进程,“-f”表示以完整格式显示信息。我们可以通过筛选特定的关键词来查找后台任务。例如,输入以下命令:

“`

$ ps -ef | grep python

“`

可以查找所有包含“python”关键词的后台任务。

三、管理后台任务

在Linux系统中,我们可以使用以下命令管理后台任务:

1. 使用“fg”命令

输入“fg”命令加上任务编号,可以将某个后台任务切换到前台执行。例如,输入以下命令:

“`

$ fg %1

“`

将任务编号为1的后台任务切换到前台执行。

2. 使用“kill”命令

输入“kill”命令加上任务编号,可以强制终止某个后台任务。例如,输入以下命令:

“`

$ kill %1

“`

将任务编号为1的后台任务强制终止。

本文介绍了如何在Linux系统中将任务转入后台,如何查看和管理后台任务。通过将任务转入后台,我们可以让任务在终端窗口关闭后继续执行,提高了工作效率。管理后台任务时,需要谨慎操作,避免误操作导致数据丢失等问题。

相关问题拓展阅读:

shell脚本让进程在后台运行以及进程后台转前台

我们计算的程序都是周期很长的,通常要几个小时甚至一个星期。我们用的环境是用 putty 远程连接到日本 Linux 服务器。所以使程序在后台跑有以下三个好处:

1:我们这边是否关机不影响日本那边的程序运行。(不会像以前那样,我们这网络一断开,或一关机,程序就断掉或找不到数据,跑了几天的程序只能重头再来,很是烦恼)

2:不影响计算效率

3:让程序在后台跑后,不会占据终端,我们可以用终端做别的事情。

方法有很多,这里主要列举两种。假如我们有程序 pso.cpp ,通过编译后产生

可执行文件

pso ,我们要使 pso 在 linux 服务器后台执行。当客户端关机后重新登入服务器后继续查看本来在终端输出的运行结果。(假设操作都在当前目录下)

方法1在终端输入命令:

解释:将 pso 直接放在后台运行,并把终端输出存放在当前目录下的 log.file 文件中。

当客户端关机后重新登陆服务器后,直接查看 pso.file 文件就可看执行结果(命令:$ cat pso.file )。

方法2在终端输入命令:

解释: nohup 就是不挂起的意思,将 pso 直接放在后台运行,并把终端输出存放在当前

目录下的 pso.file 文件中。当客户端关机后重新登陆服务器后,直接查看 pso.file

文件就可看执行结果(命令: #cat pso.file )。

注:如果要使在前天执行任务放到后台运行,则先要用 ctrl+z 挂起该任务,然后用 bg 使之后台执行。

附:

在 Linux 中,如果要让进程在后台运行,一般情况下,我们在命令后面加上 & 即可,实际上,这样是将命令放入到一个作业队列中了:

对于已经在前台执行的命令,也可以重新放到后台执行,首先按 ctrl+z 暂停已经运行的进程,然后使用 bg 命令将停止的作业放到后台运行:

但是如上方到后台执行的进程,其父进程还是当前终端 shell 的进程,而一旦父进程退出,则会发送 hangup 信号给所有子进程,子进程收到 hangup 以后也会退出。如果我们要在退出 shell 的时候继续运行进程,则需要使用 nohup 忽略 hangup 信号,或者 setsid 将将父进程设为 init 进程(进程号为 1 )

上面的试验演示了使用 nohup/setsid 加上 & 使进程在后台运行,同时不受当前 shell 退出的影响。那么对于已经在后台运行的进程,该怎么办呢?可以使用 disown 命令:

另外还有一种方法,即使将进程在一个 subshell 中执行,其实这和 setsid 异曲同工。方法很简单,将命令用括号() 括起来即可:

注:本文试验环境为 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 的效果,这在有多个命令需要在后台连续执行的时候比较方便:

linux下怎么让一个程序在后台运行

nohup 程序名 >> output.txt &

其中,output.txt 是把程序输出重定向到文件里。

今后可以查看程序输出内容。

nohop 进程名 &

关于linux将前台程序转入后台的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » Linux轻松将任务转入后台 (linux将前台程序转入后台)