&方式:
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
相关推荐
在Linux系统中,后台执行shell命令是日常系统管理和自动化任务执行的重要组成部分。这些命令允许我们无需保持终端会话打开即可运行程序,极大地提高了工作效率。本文将深入探讨标题中提到的几种后台执行命令,包括`...
对于即时需要在后台运行的命令,可以在命令末尾加上`&`符号,如`command &`,这样命令就会立即在后台运行,用户可以继续在终端上进行其他操作,而不会被阻塞。 `nohup`命令则用于在用户退出终端后仍保持命令的运行...
该命令可以将进程放到后台运行,以便释放当前 Shell 会话,或者将后台进程调回前台继续执行。 Shell 支持作用控制,有以下命令: 1. command&:将进程放到后台运行。 2. jobs:查看当前有多少在后台运行的命令。 ...
LINUX SHELL 命令练习题 本次练习题涵盖了 LINUX SHELL commands 的多个方面,包括文件类型的确定、文件权限的修改、目录管理、文件重命名、系统初始化信息、系统启动级别的切换、后台执行程序、vi 编辑器的使用等...
Linux下Shell命令解释器,一、 实现功能: 要求实现一个简单的命令解释器,也就是linux中的shell程序,在本程序中我们将其起名为mysh,要求: 1、 能够执行外部程序命令,命令可以带参数; 2、 能够执行fg、bg、cd、...
本报告关注的是一个自定义的Shell命令解释器,它不仅实现了基本的内外部命令处理,还增加了对多重管道和后台运行的支持。在理解这个项目之前,我们首先需要了解Shell的基本概念。 **Shell简介** Shell是操作系统...
ThinkPHP5(简称TP5)是一个流行的PHP框架,它提供了一种方式来实现这种定时任务,即通过执行shell命令在命令行模式下运行PHP脚本。这个过程涉及到多个知识点,包括TP5的命令行工具、shell命令以及定时任务的设置。 ...
至于`进入shell后继续执行命令的方法.txt`,在`adb shell`中执行多条命令时,一般有两种方法:一是将所有命令写在同一行,用分号或逻辑运算符连接,如`command1; command2; command3`;二是编写一个shell脚本(如`...
- **Jobs命令**:用于显示当前正在后台运行或者已暂停的任务列表。 - 实现机制涉及维护一个链表结构,用于跟踪每个作业的状态。 - 当作业被创建或挂起时,链表中添加新的节点存储相关信息。 - 执行`jobs`命令时...
### UNIX的Shell命令使用详解 #### 一、进程与文件描述符 在UNIX系统中,每个进程都有三个标准文件描述符:标准输入(Standard Input)、标准输出(Standard Output)和标准错误(Standard Error)。这些文件描述...
在Linux系统中,后台运行命令是一项非常实用的功能,它允许用户在执行长时间运行的程序时,继续在同一个shell会话中进行其他操作。这主要通过将命令与`&`符号结合来实现。例如,要将命令`command`放到后台运行,只需...
要求在Linux/Unix上用C语言开发一个下命令解释程序,软件能在Linux/Unix平台下运行,也就是linux中的shell程序,在本程序中我们将其起名为ysh,要求: 1、能够执行外部程序命令,命令可以带参数; 2、能够执行fg、bg...
### Shell命令参考手册知识点解析 #### 一、系统性能查看 **1.1 查看CPU、内存情况** 在Linux环境中,`top`命令是监测系统性能的重要工具之一,特别是CPU和内存的使用情况。通过执行`top`命令,用户可以实时查看...
### shell命令解释器知识点概述 #### 一、功能描述 - **基本功能**: 本实验构建了一个shell命令解释器,其核心能力在于能够解析并执行用户输入的各种命令。 - **重定向**: 支持标准输入(`)与标准输出(`>` 或 `>>...
8. **故障排查**:掌握如何通过SHELL命令诊断和解决08cms后台遇到的问题,如使用ps和top检查进程状态,使用strace跟踪系统调用等。 9. **08cms特定命令**:08cms可能有自己的一套命令或者API,你需要了解这些定制的...
通常,当我们在终端中执行一个命令,该命令会在当前的shell会话中运行,如果关闭终端,程序也会随之结束。为了使Python程序能在后台独立运行,我们有几种方法: 1. **使用nohup命令**:`nohup python your_script....
通过以上介绍,我们可以看到Linux Shell命令的丰富性和灵活性,它们构成了Linux操作系统强大的功能基础,使得用户能够高效地管理和操作系统资源。掌握这些命令对于任何Linux用户来说都是至关重要的。
10. **进程管理**:`ps`显示进程状态,`kill`发送信号结束进程,`nohup`让命令在后台运行不受终端关闭影响。 这些命令在29.pdf到28.pdf的文档中可能有详细解释,包括它们的语法、选项和实际应用示例。通过深入学习...
查看当前有多少在后台运行的命令 jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated,但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识;也就是...
在网络安全领域,"不进后台拿shell"通常指的是在攻击过程中不通过常规的后门程序或者后台服务,而是采用其他手段获取目标系统的命令执行权限,从而实现远程控制。这种技术通常用于避开系统的安全检测机制,使得攻击...