Linux后台执行脚本 &与nohup

摘要:
Linux后台脚本执行模式:0。脚本代码[root@VM_1_3_centosapps]#斤。php输出。txt2˃&1&[1]3550[root@VM_1_3_centosapps]#jobs[1]+Runningnohupphptest.php˃输出。txt2˃&1&[root@VM_1_3_centosapps]#此时,所有标准输出和错误输出将被重定向到输出Txt文件。因此,在使用nohup命令在后台运行该命令后,需要使用exit正常退出当前帐户,以确保该命令始终在后台运行。

Linux后台执行脚本的方式:


0、脚本代码

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


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后台执行脚本 &amp;amp;与nohup》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Thymeleaf【快速入门】PAM认证机制下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

cygwin/X XDMCP连接CentOS

cygwin/X XDMCP连接CentOS Display Manager通常有三种xdm/gdm/kdm,Display Manager的具体工作方式可以到wikipedia和Linux XDMCP HOWTO上去看,三种里头kdm最简单,所以本文就用kdm了。 CentOS默认使用Gnome/gdm的,这不奇怪,RedHat本来就是Gnome系,而其...

Redis Desktop Manager连接Redis 遇到的一系列问题

最近在做一个土地项目的后台,主要是一个信息采集调查系统,使用的框架是: * 核心框架:Spring Framework 4.2 * 日志管理:SLF4J 1.7、Log4j 1.2 * 视图框架:Spring MVC 4.2 * 服务端验证:Hibernate Validator 5.3 * 持久层框架:MyBatis 3.3 * 数据库连接池:Aliba...

Nginx启动/重启脚本详解

Nginx手动启动 停止操作 停止操作是通过向nginx进程发送信号(什么是信号请参阅linux文 章)来进行的步骤1:查询nginx主进程号ps -ef | grep nginx在进程列表里 面找master进程,它的编号就是主进程号了。步骤2:发送信号从容停止Nginx:kill -QUIT 主进程号快速停止Nginx:kill -TERM 主进程号强...

使用yum安装php72

1.执行yum search php72w查看自己的yum源有没有php72 如果自己有安装其它php版本先执行yum -y remove php* 2.没有php72执行以下命令扩展yum库,以下命令来自https://webtatic.com/packages/php72/(想看自行查看) yum install epel-release rpm -...

字节码指令简介(转)

字节码指令简介(转) 原文阅读 操作码:一个字节长度、代表某种特定操作含义的数字。 操作数:跟在操作码后面0个或多个代表此操作所需的参数。 Java虚拟机的指令 = 操作码 + 操作数。由于Java虚拟机采用面向操作数栈,所以大多指令都不包含操作数,只有一个操作码。 Java虚拟机的解释器(不考虑异常): do { 自动计算PC寄存器...

Linux 如何杀死僵尸进程

问题描述: shell > top top - 11:14:17 up 630 days, 21:23, 1 user, load average: 0.23, 0.81, 1.07 Tasks: 389 total, 1 running, 385 sleeping, 0 stopped, 3 zombie Cpu(s): 3...