Linux后台执行脚本的方式:

0、脚本代码

[root@VM_1_3_centos apps]# cat test.php
<?php
sleep(5);
echo "hello world!\n";

1、& 符号
当在前台运行某个作业时,终端被该作业占据;可以在命令后面加上& 实现后台运行。
示例1、

[root@VM_1_3_centos apps]# php test.php &
[1] 28376 //进程ID
[root@VM_1_3_centos apps]# jobs
[1]+ Running php test.php &
//5s后,脚本内容输出到控制台上
[root@VM_1_3_centos apps]# hello world! [1]+ Done php test.php
[root@VM_1_3_centos apps]#

以上方式在命令产生输出时,会将脚本输出内容显示在控制台上,可能会影响控制台的操作。

示例2、结果输出到指定文件

[root@VM_1_3_centos apps]# php test.php >out.txt 2>&1 &
[1] 29637
[root@VM_1_3_centos apps]# jobs
[1]+ Running php test.php > out.txt 2>&1 &
//当脚本执行完毕后,Enter控制台,就会输出Done脚本进程
[root@VM_1_3_centos apps]#
[1]+ Done php test.php > out.txt 2>&1
[root@VM_1_3_centos apps]#

此时所有的标准输出和错误输出都将被重定向到out.txt文件中。

2、nohup
使用&命令时,关闭当前控制台窗口或退出当前帐户时,作业就会停止运行。
nohup命令则可以在退出帐户或关闭窗口后继续运行进程。
nohup即no hang up[不挂起]。

示例1、

[root@VM_1_3_centos apps]# nohup php test.php &
[1] 1013
[root@VM_1_3_centos apps]# nohup: ignoring input and appending output to `nohup.out' [root@VM_1_3_centos apps]# jobs
[1]+ Running nohup php test.php &
[root@VM_1_3_centos apps]# vim nohup.out

默认情况下,nohup的进程脚本输出会被重定向到nohup.out的文件中。

示例2、结果输出到指定文件

[root@VM_1_3_centos apps]# nohup php test.php >out.txt 2>&1 &
[1] 3550
[root@VM_1_3_centos apps]# jobs
[1]+ Running nohup php test.php > out.txt 2>&1 &
[root@VM_1_3_centos apps]#

此时所有的标准输出和错误输出都将被重定向到out.txt文件中。

许多人使用了nohup之后,就不再管了,其实这样有可能在当前账户非正常退出或者结束的时候,命令还是自己结束了。
所以在使用nohup命令后台运行命令之后,需要使用exit正常退出当前账户,这样才能保证命令一直在后台运行。

Note:解析以下命令

php test.php >out.txt 2>&1 &

php test.php >out.txt 表示将脚本的标准输出重定向到 out.txt 文件,不打印在屏幕上。
2>&1 表示将标准出错重定向到标准输出,由于我们的标准输出已经重定向到了 out.txt 文件,所以标准出错也会输出到 out.txt 文件中。
最后一个 & 符号, 是让该命令在后台执行。
那么2>1呢?
2 与 > 结合代表错误重定向,而 1 则代表错误重定向到一个文件1,而不代表标准输出;
换成2>&1,&与1结合就代表标准输出了,就变成错误重定向到标准输出.

Linux后台执行脚本 &与nohup的更多相关文章

  1. Linux后台执行脚本文件,nohup

    看运维人员执行nohup命令后,把程序放在后台执行,很高大上,就研究了一下,这个命令. nohup命令及其输出文件 nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么 ...

  2. 在linux后台执行脚本

    1. 使用&符号在后台执行命令 你可以在Linux命令或者脚本后面增加&符号,从而使命令或脚本在后台执行,例如:. $ ./my-shell-script.sh & 2. 使用 ...

  3. Linux后台执行命令:&和nohup nohup和&后台运行,进程查看及终止

    nohup和&后台运行,进程查看及终止   阅读目录 nohup和&后台运行,进程查看及终止 1.nohup 2.& 3.nohup和&的区别 &:是指在后台运 ...

  4. linux-ssh远程后台执行脚本-放置后台执行问题(转)

    写了一个监控负载的小脚本(死循环,测试结束后再kill对应进程),因需要监控多台服务器,所以在一台服务器上使用ssh统一执行脚本遇到问题:使用ssh root@172.16.146.20 '/usr/ ...

  5. Linux后台执行的方法 - 关闭、退出不影响

    =============================================================================================nohup c ...

  6. 使用php作linux自动执行脚本

    使用php作linux自动执行脚本 [来源] 达内    [编辑] 达内   [时间]2013-03-21 在作社区时, 时常需要统计上线人数等数据. 一般做法是, 把这段代码放在用户 login或者 ...

  7. linux后台执行命令:&和nohup

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

  8. 【liunx】linux后台执行命令:&和nohup

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

  9. Linux后台执行

    在Linux中有时你须要将脚本(test.sh)和可运行程序(exe)后台运行,请使用例如以下方式: nohup ./test.sh & nohup ./exe & 这样执行的程序能够 ...

随机推荐

  1. Linear Regression and Gradient Descent

    随着所学算法的增多,加之使用次数的增多,不时对之前所学的算法有新的理解.这篇博文是在2018年4月17日再次编辑,将之前的3篇博文合并为一篇. 1.Problem and Loss Function ...

  2. HeightCharts柱状图和饼状图

    HTML: <div id="container1"  style="height:350px; " ></div>    <di ...

  3. emacs配置&博客界面源代码

    emacs配置 如果想要考场简单配置也可以去下面看,需要别的考场配置可以自己在下面比较全的里面找 考试备忘录(有新的就会更的...) By Junlier (global-set-key [f9] ' ...

  4. adb shell常用命令总结

    一.文件操作相关命令 1.文件操作命令 子命令 参数 说明 cd 无 进入目录 cat [-beflnstuv] [-B bsize] [file...] 查看文件内容-n:显示行号-b:显示行号,但 ...

  5. Java解析Groovy和Shell的代码

    一.使用场景 在整个系统中,通用型的代码基本没什么变化,需要变动的仅仅是业务相关的代码.那么我们就会把一些业务代码简单编码一下放在数据库中.通过数据库的配置,可以直接从数据库中查找出来编码处理一下,来 ...

  6. k3 cloud中数值以百分比的形式展示

    显示格式化字符串:P去掉区域设置的勾选

  7. k3 cloud移动审批提示实体类型BD_TaxRate中不存在名为AmountDigits属性

    原因是由于字段没有正确绑定币别,找到对应的字段并修改绑定币别

  8. win10开机出现两个系统

    1.cmd(Ctrl+R) 2.输入msconfig 3.选引导 4.删除多余的系统(切记不能删错)

  9. CMS(1)

    一周后,终于可以学习到可爱的渗透了哈哈哈.除了大哥给的CMS(其实可以算是只是在文件上传的时候了解一下),但是对于一个CMS完整的渗透思路,我还是不懂.首先感谢章老师给我的CMS源码哈哈哈,在我的日记 ...

  10. Oracle数据库同义词

    一.定义 同义词顾名思义,是数据库方案对象的一个别名.这里的数据库方案对象指表.视图.序列.存储过程.包等. 二.同义词的好处 1.不占内存空间,节省大量的数据库空间 2.简化了数据库对象的访问 3. ...