Linux有两种命令使程序后台运行

第一种:支持后台运行,但是关闭终端的话,程序也会停止

command &

第二种:支持后台运行,关闭终端后,程序也会继续运行

nohup command &

但是,当我自己使用nohup这个命令时,会报下面这样的错。

nohup: ignoring input and appending output to ‘nohup.out’

或者这样的错。

nohup: failed to run command /etc/nginx_check.sh': Permission denied

要解决的话,我们首先先得谈一下Linux重定向。

Linux重定向

0、1和2分别表示标准输入、标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出。

我们可以直接通过输出重定向>(或>>,表示追加)将某种输出重定向到其他地方,如设备,文件。

值得一提的是,Linux下还有一个特殊的文件/dev/null,它就像一个无底洞,所有重定向到它的信息都会消失得无影无踪。这一点非常有用,当我们不需要回显程序的所有信息时,就可以将输出重定向到/dev/null。

比如说:

ls > ls.log  #标准输出重定向
ls 2> ls.log #标准错误重定向
ls > /dev/null #重定向到null设备,相当于直接忽略输出

但是,有时候,我们想把标准输出以及错误输出一起重定向某个文件,这是可以通过 2>&1 实现,也可以通过两个同时重定向到某个文件。

所以,可以这样:

ls >ls.log 2>&1 #标准输出重定向到ls.log,而错误又重定向到标准输出,这两个位置不可换
ls 2>>ls.log 1>>ls.log

但是Python会有一个缓冲,导致输出不会及时地存在log文件里,我们只需要加一个参数-u。

所以最后,我们可以这样来运行我们的程序。

nohup python -u hello.py >hello.log 2>&1 &

这样,我们把所有的输出都存在了hello.log文件中。

关闭nohup程序

关闭终端后,再次打开使用命令jobs已经无法看到后台跑的程序了。此时利用ps(进程查看命令)。

使用下面的命令来查看start.py

ps -aux | grep "start.py"

其中,上面的-aux代表三个参数,a表示显示所有程序,u表示以用户为主的格式来显示,x显示所有程序且不以终端机来区分。grep命令用来查找,后面它的参数也可以是其他的,比如说python。

执行这条命令后,就能找到我们的nohup程序的进程号。然后使用kill命令结束程序。

kill %1400

其中1400代表具体进程号。

参考

[1]python nohup linux 后台运行输出

[2]nohup, /dev/null 2>&1,输出重定向

[3]使用Linux重定向解决nohup.out无写权限问题

[4]详解linux后台运行和关闭、查看后台任务

【Linux学习】nohup后台运行程序以及输出重定向的更多相关文章

  1. nohup命令(Linux终端启动后台运行程序)

    1. nohup指令基本概念: nohup: 不挂断的运行,并没有后台运行功能,用nohup运行命令可以使命令永久执行下去,和用户终端没有关系,断开SSH不影响运行,&是后台运行. nohup ...

  2. Nohup后台运行程序

    场景:我现在需要跑脚本批量处理一些数据,但是我又不想盯着控制台看这个脚本的输出结果,想把这些输出结果记录到一个日志文件里面 方案:可以使用 Linux 的 nohup 命令,把进程挂起,后台执行 用法 ...

  3. Linux下Shell脚本运行程序不输出日志到终端

    使用: 脚本路径/脚本名 >/dev/>& 说明: 可以简单的理解/dev/null是Linux下的回收站 >默认是把标准输出重定向 2>&1是把出错输出也定向 ...

  4. Linux下使用Nohup后台运行程序

    一.不输出日志的命令 #!/bin/bash echo "starting nohup..." nohup dotnet ./mynetcoreapp.dll > /dev/ ...

  5. Linux下 nohup后台运行springboot jar 包时,使用指定的 application.yml配置

    jar 包启动时指定配置文件 application.yml nohup java -jar -Dserver.port=8080 wx-member-card-0.0.1-SNAPSHOT.war ...

  6. 【java】 linux下利用nohup后台运行jar文件包程序

    Linux 运行jar包命令如下: 方式一: java -jar XXX.jar 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? 方式二 ...

  7. Linux下使用nohup实现在后台运行程序(转)

    相比上一篇http://www.cnblogs.com/EasonJim/p/6833417.html使用screen实现后台运行程序,各有各的好处,多一种选择吧. Linux下一般比如想让某个程序在 ...

  8. 用Cygwin实现在window环境下使用Linux命令-nohup 来后台运行程序

    1.安装Cygwin 下载 cygdrive-选择64或32位   http://www.cygwin.com/ 注:可以百度搜索安装步骤 2.配置它的环境变量 添加到path路径中 3.cmd  执 ...

  9. Linux后台运行程序

    Linux后台运行程序 最近写的程序需要部署到Linux服务器上,按照以前的方式,在运行后面增加&,程序会切换为后台运行.但因为Linux一般是通过ssh远程登录的,等到退出当前session ...

随机推荐

  1. BZOJ4868:[SHOI2017]期末考试——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=4868 题目复制于洛谷:https://www.luogu.org/problemnew/show/P ...

  2. [POI2014]DOO-Around the world

    通过几年的努力,Byteasar最终拿到了飞行员驾驶证.为了庆祝这一事实,他打算买一架飞机并且绕Byteotia星球赤道飞行一圈.但不幸的是赤道非常长所以需要中途加几次油.现在已知赤道上面所有飞机场, ...

  3. rm删除破折号 - 开头的文件

    解决这个问题的一个方法就是在要删除的文件的前边加上"./" # rm ./-slow_query_130103.txt.gz To remove a file whose name ...

  4. Codeforces Round #202 (Div. 2) B,C,D,E

    贪心 B. Color the Fence time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  5. eclipse常见问题解决方案

    1.maven项目,启动报错ClassNotFoundException,原因是tomcat下\WEB-INF\classes目录中,java文件没有编译成class文件.解决方法: 在\WEB-IN ...

  6. Android LayoutInflater深度解析

    1. 题外话 相信大家对LayoutInflate都不陌生,特别在ListView的Adapter的getView方法中基本都会出现,使用inflate方法去加载一个布局,用于ListView的每个I ...

  7. ListView - SimpleAdapter 行间颜色交替(转)

    一.概述 通过扩展SimpleAdapter,来改变显示外观.因为要每行的显示颜色,首先要获得每行的View实例,然后调用setBackgroundColor函数设置. 二.实例 [效果] [代码片段 ...

  8. idea中设置springboot热部署

    在idea中设置springboot热部署,项目修改的时候不用手动重启应用 1,pom中添加依赖 <dependency> <groupId>org.springframewo ...

  9. MyBatis注解Annotation介绍及Demo

     MyBatis注解Annotation介绍及Demo 2014-04-21 17:09:55 标签:Mybatis Annotation 注解 ResultMap SqlBuilder 原创作品,允 ...

  10. 外观模式(Facde)【设计模式】

    定义:为子系统中的一组接口提供一个一致的界面,Fcade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. “外观模式(Facade pattern),是软件工程中常用的一种软件设计模式,它 ...