`
喜欢蓝色的我
  • 浏览: 359964 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

后台运行shell命令

 
阅读更多
&方式:
Unix/Linux下一般想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台: 
        /usr/local/mysql/bin/mysqld_safe --user=mysql &
 
nohup方式:
 但是我们很多程序并不象mysqld一样可以做成守护进程,可能我们的程序只是普通程序而已,一般这种程序即使使用 & 结尾,如果终端关闭,那么程序也会被关闭。为了能够后台运行,我们需要使用nohup这个命令,比如我们有个start.sh需要在后台运行,并且希望在后台能够一直运行,那么就使用nohup: 
            nohup /root/start.sh & 
          在shell中回车后提示: 
          [~]$ appending output to nohup.out 
      原程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用。
 
nohup问题:
但是有时候在这一步会有问题,当把终端关闭后,进程会自动被关闭,察看nohup.out可以看到在关闭终端瞬间服务自动关闭。
有个操作终端时的细节:当shell中提示了nohup成功后还需要按终端上键盘任意键退回到shell输入命令窗口,然后通过在shell中输入exit来退出终端;而我是每次在nohup执行成功后直接点关闭程序按钮关闭终端。所以这时候会断掉该命令所对应的session,导致nohup对应的进程被通知需要一起shutdown。
这个细节有人和我一样没注意到,所以在这儿记录一下了。
 
附:nohup命令参考 
nohup 命令 
  用途:不挂断地运行命令。 
  语法:nohup Command [ Arg ... ] [ & ] 
  描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示"and"的符号)到命令的尾部。 
  无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么 Command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。 
  退出状态:该命令返回下列出口值: 
  126 可以查找但不能调用 Command 参数指定的命令。 
  127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。 
  否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。 
  nohup命令及其输出文件 
  nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( n ohang up)。 
  该命令的一般形式为:nohup command & 
  使用nohup命令提交作业 
  如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件: 
  nohup command > myout.file 2>&1 & 
  在上面的例子中,输出被重定向到myout.file文件中。 
  使用 jobs 查看任务。 
  使用 fg %n 关闭。 
  另外有两个常用的ftp工具ncftpget和ncftpput,可以实现后台的ftp上传和下载,这样就可以利用这些命令在后台上传和下载文件了。
------------------------------------------------------------------------------------------------------------------
nohup command 
或者 
nohup command & 
这之间的差别是带&的命令行,即使terminal(终端)关闭,或者电脑死机程序依然运行(前提是你把程序递交到服务器上); 
它把标准输出(STDOUT)和标准错误(STDERR)结果输出到nohup.txt文件这个看似很方便,但是当输出很大的时候,nohup.txt文件会非常大,或者多个后台命令的时候大家都会输出到nohup.txt文件,不利于查找结果和调试程序。 
所以能够重定向输出会非常方便。下面要介绍标准输出,标准输入 和标准错误了。 
其实我们一直都在用,只是没有注意到,   www.2cto.com  
比如 
>./command.sh > output 
#这其中的>就是标准输出符号,其实是 1>output 的缩写 
>./command.sh 2> output 
#这里的2>就是将标准错误输出到output文件里。 
而0< 则是标准输入了。 
下面步入正题,重定向后台命令 
>nohup ./command.sh > output 2>&1 &
------------------------------------------------------------------------------------------------------------
源:http://blog.chinaunix.net/uid-446337-id-94446.html
分享到:
评论

相关推荐

    shell 后台执行命令

    为了使这些进程能够在后台运行,也就是说不在终端屏幕上 运行,有几种选择方法可供使用。 在本章中我们将讨论: • 设置c r o n t a b文件,并用它来提交作业。 • 使用a t命令来提交作业。 • 在后台提交作业。 • ...

    Shell命令解释器

    Linux下Shell命令解释器,一、 实现功能: 要求实现一个简单的命令解释器,也就是linux中的shell程序,在本程序中我们将其起名为mysh,要求: 1、 能够执行外部程序命令,命令可以带参数; 2、 能够执行fg、bg、cd、...

    模拟shell命令解释器操作系统课程设计报告

    模拟shell命令解释器操作系统课程设计报告 在Linux/Unix上用C语言开发一个下命令解释程序,软件能在Linux/Unix平台下运行,该程序应提供一个命令提示符:如ysh&gt;,表示接收用户的输入,每次执行完成后再打印下一个...

    在后台运行Linux命令的方法

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

    shell命令解释模拟(课设)

    要求在Linux/Unix上用C语言开发一个下命令解释程序,软件能在Linux/Unix平台下运行,也就是linux中的shell程序,在本程序中我们将其起名为ysh,要求: 1、能够执行外部程序命令,命令可以带参数; 2、能够执行fg、bg...

    shell命令解释器

    本实验完成了一个shell命令解释器,实现了shell的解释命令功能,实现了重定向功能和多管道、后台运行等功能

    Logcat及adb shell命令的bat脚本实现例子

    运用bat脚本打包logcat、adb shell语句等代码,并克服了进入shell后后续代码无法执行的问题

    Shell命令解释系统设计

    Shell命令解释系统设计 编写一个Shell命令解释程序...实现一个能处理前后台运行命令的shell 问题B: 实现一个带有管道功能的shell 问题C: 实现一个能处理I/O重定向的shell 问题D: 实现一个能在一行上处理多条命令的shell

    shell命令精品教程

    基础s h e l l编程 16、shell脚本介绍 17、条件测试 18、控制流结构 19、shell 函数 20、向脚本传递参数...例子 28、运行级别脚本 29、cgi 脚本 附录常用shell命令

    shell命令解释器报告

    压缩包含shell实验报告及源代码,本解释器实现了内外部命令等基本功能,额外完成多重管道及后台运行的功能。

    Linux 操作系统内核实验-Shell命令解释系统设计

    Shell命令解释系统设计: 问题A: 实现一个能处理前后台运行命令的shell 问题B: 实现一个带有管道功能的shell 问题C: 实现一个能处理I/O重定向的shell 问题D: 实现一个能在一行上处理多条命令的shell

    node-async-exec::game_die: 使用 exec 异步运行 shell 命令

    特征异步运行 shell 命令。 在特定目录中运行 shell 命令/命令。 在后台使用和 。 可用于构建基于 CLI 和 Node.js 的工具。安装 # install the packagenpm install node-async-exec用法运行 shell 命令 const exec =...

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

    查看当前有多少在后台运行的命令 jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。也就是...

    UNIX命令及SHELL编程

    这是一套完整的Unix培训教材,包括Unix常用命令及SHELL编程基础与高级技巧,PDF格式,共30个文件。另有2个Word文档。包内文件清单如下: 01_Shell-文件安全与...30_附录常用shell命令.PDF awk教程.doc shell教程.doc

    Shell命令解释器项目源码+文档

    4、 支持前后台作业,提供作业控制功能,包括打印作业的清单,改变当前运行作业的前/后台状态,以及控制作业的挂起、中止与继续运行; 5、 使用Make工具建立工程; 6、 使用调试器gdb来调试程序;

    在Linux中查看及终止正在运行的后台程序方法

    查看当前有多少在后台运行的命令 jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated,但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识;也就是...

    使用lex和yacc编写shell

    使用lex和yacc编写shell 在Linux环境中使用C语言编写一个简单的shell命令解释器程序,程序应当具有以下基本特征: 能够执行fg、bg、cd、history、exit等内部命令。 能够执行外部程序命令,命令可以带参数。 使用输入...

    parallelshell:并行运行多个Shell命令

    这是一个超级简单的npm模块,用于并行运行shell命令。 所有进程将共享相同的stdout / stderr,并且如果退出状态为非零的任何命令退出,其余命令将停止并且退出代码继续执行。 版本兼容性说明 与v8及更高版本的Node...

    自己编写的shell程序

    本程序为一个简易的shell程序,实现在myshell.c中。功能包括:(1)后台运行命令;(2)输入输出重定向;(3)执行管道命令;(4)执行多个命令等。 另附详细设计文档、用户手册、README等。

    Linux命令学习 shell pdf格式

    第一部分 shell 第一章 文件安全与权限 第二章 使用find和xargs 第三章 后台执行命令 第四章 文件名置换 第五章 shell输入与输出 第六章 命令执行顺序 ...附录 常用shell命令 另外附有Linux命令说明(doc版,32页)

Global site tag (gtag.js) - Google Analytics