`
wbj0110
  • 浏览: 1552517 次
  • 性别: 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 只能查看当前终端后台

    后台执行shell命令

    shell后台执行命令,如at,&,nohup等

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

    主要介绍了linux后台执行命令&和nohup的具体使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    linux nohup及tail-f用法

    描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示”and”的符号)到命令...

    详解linux后台运行和关闭、查看后台任务

    加在一个命令的最后,可以把这个命令放到后台执行,如 watch -n 10 sh test.sh & #每10s在后台执行一次test.sh脚本 二、ctrl + z 可以将一个正在前台执行的命令放到后台,并且处于暂停状态。 三、jobs 查看当前...

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

    最近在一hadoop测试集群运行一个spark streaming程序,然后使用nohup ./execute.sh & 执行让程序后台运行,才几天日志就上G了,如果有问题想要查看日志,显然打开文件是一件很麻烦的事,于是我想办法通过减小文件...

    在后台运行Linux命令的方法

    通常情况下,当你在终端运行一个命令...一个后台进程就是说一个进程/命令在终端启动后,运行在后台,并且不会和用户发生任何交互。 在这篇文章中,我们将会讨论在 Linux 中的后台进程。我们将会为你演示如何在后台启动

    shell编程和unix命令

    001_文件安全与权限 002_使用find和xargs 003_后台执行命令nohup&at;&crontab; 004_文件名置换 .... 008_grep家族 009_AWK介绍 010_sed用法介绍 ......

    Linux中jar包启动和jar包后台运行的实现方式

    Linux 运行jar包命令如下: 方式一: java -jar shareniu.jar 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 ...当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到

    python脚本后台执行方式

    在Linux中,可以使用nohup将脚本放置后台运行,如下: nohup python myscript.py params1 &gt; nohup.out 2&gt;&1 & 1 但直接使用上面代码,无法在程序运行过程中查看Python中的print “computing” 输出结果,比如在...

    redis-4.0.1.tar.gz+安装笔记

    执行命令 tar -zxvf redis-4.0.1.tar.gz 解压到当前文件夹下 进入redis文件夹下 cd redis-4.0.1 依次执行 make sudo make install 安装完成 2、后台启动服务器: nohup redis-server & 不会启用 redis.conf配置...

    BudWk企业级开源开发框架-其他

    wk-vue-admin[前端]&lt;/p&gt;&lt;p&gt;7、正常启动后访问 http://127.0.0.1:9527 用户名 superadmin 密码 1&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;代码生成器使用方法:&lt;/p&gt;&lt;p&gt;安装nodejs,执行命令 npm install apidoc -g&lt;/p&gt;&lt;p&gt;生成接口文档 apidoc...

    mysql数据库CPU高,实时抓住数据库执行中的SQL语句,shell工具(支持mysql5.7)

    #需要安装bc命令yum install bc -y 脚本需要在服务器执行,执行前主要修改数据库认证信息: 数据库脚本支持mysql-5.7系列版本。其他版本待验证。 后台持续监控可以运行语句 nohup ./top-mysql-repeat.sh &gt;/dev/...

    Linux常用操作总结

     2、执行nohup ./startWebLogic.sh(nohup的作用是让weblogic启动在后台运行),  3、使用命令tail -f 文本文件名即可监视远程文件的变动情况,例如要监视Weblogic某一域的日志输出只需要输入命令:tail -f ...

    LINUX与UNIX SHELL编程指南

    第3章 后台执行命令 22 3.1 cron和crontab 22 3.1.1 crontab的域 22 3.1.2 crontab条目举例 23 3.1.3 crontab命令选项 23 3.1.4 创建一个新的crontab文件 24 3.1.5 列出crontab文件 24 3.1.6 编辑crontab文件...

    jar畅游Linux后台

    目录jar通常方式jar后台运行方式方式一方式二查看后台运行任务查看某端口占用的线程的pidlinux 进程查看及杀死进程附录:各种信号及其用途 Linux系统运行jar包 jar通常方式 java -jar xxx.jar 特点:当前ssh窗口被...

    Django项目后台不挂断运行的方法

    方法一: 1、进入项目目录下,运行下面程序: nohup python manage.py runserver 0.0.0.0:...注意:在nohup执行成功后直接点击关闭程序按钮关闭终端,会断掉该命令对应的session,导致nohup对应的进程被通知一起shutdo

    minio的Windows安装包

    4.后台启动命令格式: nohup ./minio server ./data/ --console-address :8090 &gt; nohup.out 2&gt;&1 & 5.启动后会在data/生成一个.minio.sys的隐藏文件夹 vi ./data/.minio.sys/config/config.json access_key为...

Global site tag (gtag.js) - Google Analytics