`
wbj0110
  • 浏览: 1603925 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

后台执行命令 -- &和nohup

阅读更多

当 我们在终端或控制台工作时,可能不希望由于运行一个作业而占住了屏幕,因为可能还有更重要的事情要做,比如阅读电子邮件。对于密集访问磁盘的进程,你可能 希望它能够在每天的非负荷高峰时间段运行。为了使这些进程能够在后台运行,也就是说不在终端屏幕上运行,有几种选择方法可供使用。

 

在本文中将讨论:

设置crontab文件,并用它来提交作业。

使用a t命令来提交作业。

在后台提交作业。

使用nohup命令提交作业。

 

名词解释:

<!--[if !supportLists]-->1、  <!--[endif]-->cron,系统调度进程,可以使用它在每天的非高峰负荷时间段运行作业,或在一周或一月中的不同时段运行。

<!--[if !supportLists]-->2、  <!--[endif]-->at命令,使用它在一个特定的时间运行一些特殊的作业,或在晚一些的非负荷高峰时间段或高峰负荷时间段运行。

<!--[if !supportLists]-->3、  <!--[endif]-->&,使用它在后台运行一个占用时间不长的进程。

<!--[if !supportLists]-->4、  <!--[endif]-->nohup 使用它在后台运行一个命令,即使在用户退出时也不受影响。

 

&命令

当在前台运行某个作业时,终端被该作业占据;而在后台运行作业时,它不会占据终端。

可以使用&命令把作业放到后台执行。

该命令的一般形式为:命令&

为什么要在后台执行命令?因为当在后台执行命令时,可以继续使用你的终端做其他事情。适合在后台运行的命令有f i n d、费时的打印作业、费时的排序及一些s h e l l脚本。在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。不过,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中:

command  >  out.file  2>&1  &

在上面的例子中,所有的标准输出和错误输出都将被重定向到一个叫做out.file 的文件中。当你成功地提交进程以后,就会显示出一个进程号,可以用它来监控该进程,或杀死它。

 

向后台提交命令:

现在我们运行一个find命令,查找名为“srm.conf”的文件,并把所有标准输出和错误输出重定向到一个叫find.dt的文件中:

find srm.conf > find.dt 2>&1 &

在上面的例子中,在我们成功提交该命令之后,系统给出了它的进程号27015。当该作业完成时,按任意键(一般是回车键)就会出现一个提示。

 

ps命令查看进程

当一个命令在后台执行的时候,可以用提交命令时所得到的进程号来监控它的运行。在前面的例子中,我们可以按照提交ps1时得到的进程号,用p s命令和g r e p命令列出这个进程:ps –ef | grep ps1,记住,在用p s命令列出进程时,它无法确定该进程是运行在前台还是后台。

 

杀死后台进程

如果想杀死后台进程可以使用kill命令。当一个进程被放到后台运行时,shell会给出一个进程号,我们可以根据这个进程号,用k i l l命令杀死该进程。该命令的基本形式为:kill -signal [process_number];现在暂且不要考虑其中的各种不同信号;在杀进程的时候,执行下面的命令(你的进程号可能会不同)kill  29563并按回车键。系统将会给出相

应的信息告诉用户进程已经被杀死。

如果系统没有给出任何信息,告诉你进程已经被杀死,那么不妨等一会儿,也许系统正在杀该进程,如果还没有回应,就再执行另外一个k i l l命令,这次带上一个信号选项:15如果用上述方法提交了一个后台进程,那么在退出时该进程将会被终止。为了使后台进程能够在退出后继续运行,可以使用nohup命令,下面我们就介绍这一命令。

 

nohup命令

如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令,该命令可以在你退出帐户之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。该命令的一般形式为:nohup command &

 

使用nohup命令提交作业

如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:nohup command > myout.file 2>&1

 

一次提交几个作业

如果希望一次提交几个命令,最好能够把它们写入到一个shell脚本文件中,并用nohup命令来执行它。

 

小结

本 文中所讨论的工具主要是有关后台运行作业的。有时我们必须要对大文件进行大量更改,或执行一些复杂的查找,这些工作最好能够在系统负荷较低时执行。创建一 个定时清理日志文件或完成其他特殊工作的脚本,这样只要提交一次,就可以每天晚上运行,而且无需你干预,只要看看相应的脚本日志就可以了。crond和其他工具可以使系统管理任务变得更轻松。

分享到:
评论

相关推荐

    Linux nohup实现后台运行程序及查看(nohup与&)

    1. 后台执行 一般运行linux上的程序都是执行 .sh 文件(./sh文件...加载一个命令的最后面,表示这个命令放在后台执行 2. 查看后台运行的命令 有两个命令可以来查看,ps 和 jobs。区别在于 jobs 只能查看当前终端后台

    linux后台执行命令&和nohup的具体使用方法

    本文主要讲解两种常见的后台执行命令:`&` 和 `nohup`。 首先,`&` 符号用于将命令放入后台执行。当你在命令末尾添加 `&` 时,程序将不会阻塞终端,而是立即返回命令提示符,允许你继续进行其他操作。例如,如果你...

    shell 后台执行命令

    在Linux和Unix操作系统中,`shell`后台执行命令是一个重要的功能,它允许用户在不阻塞终端的情况下运行程序。这通常适用于那些长时间运行或者需要在特定时间执行的任务,以便用户可以继续其他工作。 首先,`cron`是...

    后台执行shell命令

    本文将深入探讨标题中提到的几种后台执行命令,包括`at`、`&`以及`nohup`。 首先,`at`命令是一个定时任务调度器,它允许你在指定的时间执行一次性任务。例如,如果你需要在晚上10点运行一个脚本,你可以输入以下...

    解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题

    # 执行命令 def command(ssh_config, cmd, result_print=None, nohup=False): ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(hostname=ssh_config....

    nohup命令详解.txt

    - **场景一:后台运行任务** - 当需要执行一个耗时较长的任务,但又不希望该任务因为终端关闭而停止时,可以使用`nohup`命令。 - **场景二:避免SIGHUP信号** - 默认情况下,当一个终端会话结束时,所有由该会话启动...

    一文明白使用nohup将服务器训练程序后台运行不关闭+随时通过查看训练情况输出与visdom可视化

    使用nohup将训练程序后台不间断运行+随时查看训练情况输出与可视化使用服务器进行远程训练nohup指令和查看输出缺省输出文件的写法指定输出文件的写法和CUDA一起用实时查看out配合visdom使用 使用服务器进行远程训练 ...

    linux nohup及tail-f用法

    这里的`command`是你希望在后台运行的命令,`参数`是命令所需的具体参数,`&`表示将命令放入后台执行。运行`nohup`命令后,其输出信息默认会被重定向到`nohup.out`文件中,如果想指定其他输出文件,可以这样操作: `...

    nohup使用方法LINUX|CENTOS

    使用 nohup 命令可以让命令在后台执行,例如: nohup python /home/yyh/server/start.py & 这条命令将 python 脚本 `/home/yyh/server/start.py` 在后台执行,并且将输出重定向到当前文件夹下的 `start.log` 文件...

    Linux后台运行命令

    本文将重点介绍几种常用的Linux后台运行命令,包括快捷键方式以及`cron`和`crontab`命令的详细使用方法。这两种命令主要用于设定定时任务,涉及到进程调度与管理。 #### 二、快捷键方式启动后台任务 对于简单的...

    linux下nohup日志输出过大问题的解决方法

    Linux 是一个功能强大且广泛使用的操作系统,nohup 命令是 Linux 中的一个常用命令,用于在后台运行程序并将输出重定向到文件中。但是在使用 nohup 命令时,经常会遇到日志输出文件过大的问题,导致日志文件变得非常...

    详解linux下nohup日志输出过大问题解决方案

    在Linux系统中,`nohup`命令是一个非常实用的工具,它允许用户在退出终端后继续执行命令或脚本,通常用于运行长时间运行的任务。然而,当使用`nohup`时,日志输出可能会迅速增加,导致日志文件过大,这不仅占用大量...

    解决python nohup linux 后台运行输出的问题

    这里,`-u`参数告诉Python不要使用缓冲,`&gt;`用于重定向标准输出到`flush.log`文件,`2&gt;&1`表示将标准错误流(2)重定向到与标准输出(1)相同的地方,也就是同样写入`flush.log`,最后的`&`让命令在后台执行。...

    linux命令学习-新手入门

    Linux命令是Linux操作系统中进行系统管理、文件操作和任务执行的主要工具。对于新手而言,掌握基本的Linux命令是进入这个领域的第一步。以下是一些关键的Linux命令和概念的详细解释: 1. **more 和 less 命令**: ...

    常用 linux 命令手册

    - `&`:让命令在后台执行,如`command &`。 - `;`:连接两个命令,无论前一个命令成功或失败都会执行下一个。 - `&&`和`||`:条件执行,前一个命令成功后执行`&&`后的命令,前一个命令失败则执行`||`后的命令。 ...

    通过python 执行 nohup 不生效的解决

    在使用Python进行远程服务器操作时,我们经常遇到需要在服务器后台执行持续运行的命令,比如`nohup`。`nohup`命令允许我们在退出终端后仍然保持进程的运行状态,不受SIGHUP信号的影响。然而,在使用Python的paramiko...

    Unix常用命令

    - 当终端关闭后,使用`nohup`命令可以确保后台程序继续运行: ```sh nohup find . -name "abc" -print &gt; myfind & ``` #### 二、特殊按键 - **Ctrl+d**: 结束输入或退出当前Shell。 - **Del**: 中断当前操作,...

Global site tag (gtag.js) - Google Analytics