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. 如何免费注册codepen

    点击注册以后,发现是要美刀的.靠,没钱.可是要用怎么办...... 如果不注意可以没有看到free.....看着free是个文本.其实是个链接啊啊啊啊啊 重点来了: 进入到注册页面,显示recaptc ...

  2. String.prototype.includes

    if (!String.prototype.includes) {   String.prototype.includes = function(search, start) {     'use s ...

  3. vs code配置C/C++开发环境

    第一步:下载 Vs Code 点击链接下载Vs Code 下载版本  并安装 https://code.visualstudio.com/ 点击 Download for Windwos 安装时  如 ...

  4. 【五一qbxt】day5 图论

    图论 学好图论的基础: 必须意识到图论hendanteng xuehuifangqi(雾 图 G = (V,E) 一般来说,图的存储难度主要在记录边的信息 无向图的存储中,只需要将一条无向边拆成两条即 ...

  5. BZOJ 1912(树的直径+LCA)

    题面 传送门 分析 显然,如果不加边,每条边都要走2次,总答案为2(n-1) 考虑k=1的朴素情况: 加一条边(a,b),这条边和树上a->b的路径形成一个环,这个环上的边只需要走一遍,所以答案 ...

  6. P4929 【模板】舞蹈链(DLX)

    题目背景 本题是舞蹈链模板——精确覆盖问题 题目描述 给定一个N行M列的矩阵,矩阵中每个元素要么是1,要么是0 你需要在矩阵中挑选出若干行,使得对于矩阵的每一列j,在你挑选的这些行中,有且仅有一行的第 ...

  7. 学习servlet时出现的一些问题

    此篇用来记录学习servlet时遇到的一些问题,谨防以后再犯. 问题1.导入的web项目,servlet中导入的包名报错. (1)缺少相关包,推荐一个网站下载jar包很方便http://mvnrepo ...

  8. Vue打包后访问静态资源路径问题

    Vue介绍中static文件夹里放的是静态资源目录,如图片.字体等. 我们发现运行npm run start后本地图片路径是没问题的,但是打包上传后会怎么样呢? 我们知道,执行npm run buil ...

  9. python-内置常量

    引言 Python的内置常量不多,只有6个,分别是True.False.None.NotImplemented.Ellipsis.__debug__ 一.True 1.True是bool类型用来表示的 ...

  10. git 报错

    -bash: git: command not found export PATH=$PATH:/usr/local/git/bin 使用git clone出现 fatal: unable to ac ...