以前分享过Linux程序的前台和后台执行,但是前后台执行有一个缺陷,即关闭shell窗口(比如logout)后,程序也会被关闭,而且程序的打印会不断在shell中显示出来。而nohup命令(no hang up)可以解决在关闭shell后,程序依然执行,就相当于以系统服务的方式执行程序。

一般执行nohup名的方式:

nohup command > outinfo.txt &

命令后面的&,表示一开始就后台执行,否则就要手动使用Ctrl+z,然后bg N。

> outinfo.txt 试讲程序的打印输出到这个文件,方便查看。

如果是python程序的打印,最好配合使用python的-u命令,禁止打印缓存,这样才能及时看到程序的打印输出。比如:

$nohup python3 -u test.py > outinfo.txt &

还有几个问题:

1, 在程序执行过程中,如果把outinfo.txt删除,就再也无法看到打印了,如果在自建此文件,程序依然不会写入,此问题何解?

(1)不太好的方法:定期手动重启这个程序。

(2)?

2, 重新login之后,jobs命令是无效的,不过因为nohup,程序进程还在,但是如果有多个python程序需要这样运行,只能通过记住pid的方式,有其它更好的方式吗?

可以考虑将python程序编译成可执行文件,nohup执行这个可执行文件,然后即可通过文件名称来区分不同的程序。但是,编译成可执行文件后,python -u的效果还有吗?(pyinstaller没有安装成功....还没测试)

通过ps -ax命令解决,可以查看进程执行的那个py文件。

nohup的原理:

当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。因此,我们的解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让进程运行在新的会话里从而成为不属于此终端的子进程。

hangup 名称的来由

在 Unix 的早期版本中,每个终端都会通过 modem 和系统通讯。当用户 logout 时,modem 就会挂断(hang up)电话。 同理,当 modem 断开连接时,就会给系统发送 hangup 信号来通知其关闭所有子进程。

关闭shell让进程继续执行,还可以使用

shell在指定目录下执行nohup_nohup:关闭shell程序依然执行相关推荐

  1. shell统计指定目录下所有文件类型及数量

    #!/bin/bash #Synopsis:用于统计脚本当前所在目录或者用户指定目录下的所有文件类型及数量 #若直接运行脚本而不接任何命令行参数,则默认会统计脚本所在目录下的文件 #Date:2016 ...

  2. php定时删除目录,shell定时删除指定目录下的文件

    contab -e 10 */12 * * * sh /usr/local/apache2/htdocs/cakephp/ebook/webroot/php/delete_big_log.sh 代码: ...

  3. shell访问php文件夹,Shell获取某目录下所有文件夹的名称

    Shell获取某目录下所有文件夹的名称以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Shell获取某目录下所有文件夹的 ...

  4. Linux 命令之 ls -- 列出指定目录下的内容

    文章目录 一.命令介绍 二.语法格式 三.常用选项 四.参考示例 (一)显示工作目录下(当前目录)所有的文件和目录 (二)显示工作目录下所有的文件和目录 (三)显示文件的详细信息,且显示文件的修改时间 ...

  5. linux同步某台服务器,linux 两台服务器之间开机自动同步指定目录下的文件

    linux 两台服务器之间开机自动同步指定目录下的文件 服务器B(172.17.166.11)上开机或者重启会自动拉取服务器A(172.17.166.10)上指定目录下所有文件 1.创建服务器B到服务 ...

  6. bat 批量提取指定目录下的文件

    如下是批量获取指定目录下的文件名. @echo off echo text inputset input= set /p input=: echo %input% is input cd %input ...

  7. Linux学习:读取目录内容 (目录名和类型)和递归统计指定目录下普通文件个数练习

    一.读取目录内容 #include <stdio.h> #include <unistd.h> #include <dirent.h> #include <s ...

  8. VBA实战技巧精粹012:查找指定目录下的指定文件及Dir函数用法

    问题:有处理学生评语,限于网络条件,往往学生提交的都是单个文件,这就需要将其一一提取出来,然后进行判断.导出等操作,但首先要解决的就是查找所有文件如何操作,这里需要用到Dir函数,当然创建一个文件搜索 ...

  9. Windows 系统下通过命令将本地文件上传至远程 Linux 主机的指定目录下

    这里是借助文件传输客户端 putty 的命令来上传文件. 第一步:下载安装 putty 第二步:通过命令终端进入 putty 的主目录下,即进入 D:\puggy 目录下,该目录下含有多个可执行文件( ...

最新文章

  1. 如何使用jMeter发送两个逻辑上相关的HTTP请求
  2. 【原】页面跳转以及表单提交中有中文的解决办法
  3. pads中如何设置等长_期货如何设置止损止盈避免交易中被套-期货学习
  4. 2017蓝桥杯省赛---java---C---2(兴趣小组)
  5. 为什么说RESTful对程序员如此重要
  6. tp5 使用PHPAnalysis提取关键字中文分词
  7. curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused
  8. python极简讲义 pdf_Python极简讲义:一本书入门数据分析与机器学习
  9. 2020阿里巴巴实习笔试题一
  10. Linux操作系统安全防护指导手册(详细截图)
  11. 英语知识(与字面意思 相反的) Corner office
  12. 推断车祸事件论文matlab,预测模型论文,关于基于优化GM(1,1)模型的水上交通事故预测相关参考文献资料-免费论文范文...
  13. 农业银行查询开户支行的方法
  14. c++语言程序中,要调用的函数必须在main()函数中定义,惠州学院C++考试复习题
  15. VMware虚拟机安装及Linux系统的配置
  16. Gerrit 2.11.5 发布,代码评审工具
  17. 北京的房租到底有多高?
  18. Ubuntu 16.04通过Trickle限制某个软件的下载/上传速度
  19. 1.试述数据、数据库、数据库系统、数据库管理系统的概念。
  20. vol.173 乱炖 · 公司基因论靠不靠谱?

热门文章

  1. 从新手到高手,Java初学者要经历哪些阶段?
  2. for of 的用法区别_ES6语法:var、let、const的区别详解
  3. wxWidgets:wxGridEditorCreatedEvent类用法
  4. wxWidgets:wxFileDialog类用法
  5. wxWidgets:将带有语法高亮和折叠的自定义词法分析器添加到 WxStyledTextCtrl
  6. boost::range::for_each相关的测试程序
  7. boost::mp11::tuple_apply相关用法的测试程序
  8. boost::intrusive::derivation_value_traits用法的测试程序
  9. boost::hana::negate用法的测试程序
  10. boost::dijkstra_shortest_paths用法的测试程序