后台执行命令:&和nohup command & 以及关闭、查看后台任务

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

1、&

当在前台运行某个作业时,终端被该作业占据;可以在命令后面加上& 实现后台运行。例如:sh test.sh &

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

command  >  out.file  2>&1  &

这样,所有的标准输出和错误输出都将被重定向到一个叫做out.file 的文件中。

注意:当你成功地提交进程以后,就会显示出一个进程号,可以用它来监控该进程,或杀死它。(ps -ef | grep 进程号     或者   kill -9 进程号)

2、nohup命令:

使用&命令后,作业被提交到后台运行,当前控制台没有被占用,但是一但把当前控制台关掉(退出帐户时),作业就会停止运行。nohup命令可以在你退出帐户之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。该命令的一般形式为: nohup command &

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

nohup command > myout.file 2>&1

【实例】

nohup.sh

i=1
while [ $i -le 100000 ]
do
echo $i >> result.txt
i=` expr $i + 1 `
done

1)使用sh  nohup.sh 执行,当前命令行就会hang住,如图:

2)使用sh  nohup.sh  & 执行,就会把作业提交到后台,释放当前命令行,同时显示了进程号;但是如果帮当前命令窗口关闭,整个作业就停止了;

注:可以使用ps  -ef | grep nohup.sh 来查看后台作业运行情况。

3)使用nohup  sh  nohup.sh > log 2>1& &  ,同样把作业提交到后台,释放当前窗口;而且即使把当前命令窗口关闭,作业仍然运行。

注:使用nohup执行命令,不会返回当前进程号,要跟踪后台作业,可以使用jobs命令查看;或者使用 ps  -ef | grep nohup.sh 来查看

3、ctrl + z

可以将一个正在前台执行的命令放到后台,并且处于暂停状态。

4、Ctrl+c

终止前台命令。

5、jobs

查看当前有多少在后台运行的命令。

jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。

6、bg

将一个在后台暂停的命令,变成在后台继续执行。如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出。

如图,先前台运行一个脚本,然后转到后台,查看后台作业情况

7、fg

将后台中的命令调至前台继续运行。如果后台中有多个命令,可以用fg %jobnumber(是命令编号,不是进程号)将选中的命令调出。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-25 07:58:48

后台执行命令:&和nohup command & 以及关闭、查看后台任务的相关文章

inux学习笔记三 后台执行命令

1.cron 系统调度进程.是SHELL一个LUNX下的定时执行工具,在无需人工干预下进行作业. $/sbin/service crond start --启动crontab服务 $/sbin/service crond stop --停止crontab服务 $/sbin/service crond restart --重新启动服务 $/sbin/service crond reload --重新加载配置 linux中,默认不会开启cron服务,在启动cron服务后,才能享受该服务. cron

linux后台执行命令:&和nohup

本文摘自https://www.cnblogs.com/zzyoucan/p/7764590.html 当我们在终端或控制台工作时,可能不希望由于运行一个作业而占住了屏幕,因为可能还有更重要的事情要做,比如阅读电子邮件.对于密集访问磁盘的进程,我们更希望它能够在每天的非负荷高峰时间段运行(例如凌晨).为了使这些进程能够在后台运行,也就是说不在终端屏幕上运行,有几种选择方法可供使用. & 当在前台运行某个作业时,终端被该作业占据:可以在命令后面加上& 实现后台运行.例如:sh test.sh

linux后台执行命令:&与nohup的用法

& 这种方法很简单,就是在命令之后加个“&”符号就可以了,如下: ./test & 这样一来,test程序就在后台运行了.但是,这样处理还不够,因为这样做虽然程序是在后台运行了,但log依然不停的输出到当前终端.因此,要让终端彻底的清静,还应将log重定向到指定的文件: ./test >> out.txt 2>&1 & 2>&1是指将标准错误重定向到标准输出,于是标准错误和标准输出都重定向到指定的out.txt文件中,从此终端彻底清静

Linux后台执行脚本文件,nohup

看运维人员执行nohup命令后,把程序放在后台执行,很高大上,就研究了一下,这个命令. nohup命令及其输出文件 nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令.该命令可以在你退出帐户/关闭终端之后继续运行相应的进程.nohup就是不挂起的意思( n ohang up). 该命令的一般形式为:nohup command & 使用nohup命令提交作业 如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为

Linux的后台执行进程之nohup

nohup 用途:LINUX命令用法,不挂断地运行命令.  语法:nohup Command [ Arg ... ] [ & ]  描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号.在注销后使用 nohup 命令运行后台中的程序.要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部.  如果不将 nohup 命令的输出重定向,输出将附加到当前目录的 nohup.out 文件中.如果当前目录

Mac系统终端命令行不执行命令 总出现command not found解决方法

配置过安卓开发环境,改过bash_profile这个文件,最后不知怎么的只有cd命令能执行,我猜测可能修改bash_profile文件后没有保存 导致的     保存命令是:  source .bash_profile 说下我的解决方法: 1,在命令行中输入: export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin 这样可以保证命令行命令暂时可以使用.命令执行完之后先不要关闭终端. 2,输入 cd ~/ 进入当前用户的home目录. 3,

[转] Mac系统终端命令行不执行命令 总出现command not found解决方法

配置过安卓开发环境,改过bash_profile这个文件,最后不知怎么的只有cd命令能执行,我猜测可能修改bash_profile文件后没有保存 导致的     保存命令是: source .bash_profile 说下我的解决方法: 1,在命令行中输入: [cpp] view plain copy print? export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin 这样可以保证命令行命令暂时可以使用.命令执行完之后先不要关闭终端.

xshell等终端后台执行命令

在xshell或者其他终端软件执行命令,使用nohup commond & 关闭xshell窗口的时候命令照样被关闭了,这种情况可以使用命令screen,或者tmux命令 screen,tmux的功能很强大,可以进入新的bash,打开新的窗口,还可以分屏等等 也可以使用screen或者tmux 加命令,直接在screen或者tmux开启的shell中执行命令.

Linux在后台执行命令或脚本

在日常的工作中,我们会遇到执行备份.恢复数据等执行过程时间很长的命令或者脚本程序运行,此时,我们为防止执行过程被打断,需要将命令或脚本在后台执行.1)方法1nohup sh reload.sh &2)方法2(推荐使用)使用screen命令临时在后台开辟一个新的窗口,将命令或脚本放到窗口内执行,这样执行过程就不会被断了.具体实现方法如下:(前提是已经安装了screen包)screen -S yangchunliriot 新建一个yangchunliriot的screenscreen -ls 列出所