Linux中长时间运行程序的方法

一、场景:

如果临时有一个命令需要长时间运行,比如 python hello.py ,什么方法能最简便的保证它在后台稳定运行呢?
解决方法:
      当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。
因此,我们的解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让进程运行在新的会话里从而成为不属于此终端的子进程。

二、nohup

nohup 无疑是我们首先想到的办法。顾名思义,nohup 的用途就是让提交的命令忽略 hangup 信号。
只需在要处理的命令前加上 nohup 即可,标准输出和标准错误缺省会被重定向到 nohup.out 文件中。一般我们可在结尾加上"&"来将
命令同时放入后台运行

nohup python hello.py &

原文地址:https://www.cnblogs.com/zongfa/p/11333589.html

时间: 2024-10-13 11:24:07

Linux中长时间运行程序的方法的相关文章

如何在Linux实现自动运行程序

1.开机启动时 Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init. init根据配置文件继续引导过程,启动其它进程.通常情况下,修改放置在 /etc/rc或 /etc/rc.d ( /etc/rc?.d) 目录下的脚本文件,可以使init自动启动其它程序. /etc/rc:This file is responsible for starting/stopping services when the runlevel changes 例如: 编辑 /etc/rc.d/r

linux系统和应用程序升级方法

当我们使用linux一段时间以后,自然不会满足总是在没有任何变化的系统中工作,而是渴望能象在windows系统中一样,不断对自己的linux进行升级.另一方面,linux本身就是一个开放的系统,每天都会有新的软件出现,linux发行套件和内核也在不断更新.在这样的情况下,学会对linux (包括系统本身和各种软件)进行升级就显得非常迫切了. 在Linux环境下,升级的对象可以是一般的软件,可以是编译器,也可以是系统的内核,甚至是系统本身.下面,虫虫就分别讲讲对不同对象的升级的方法. 1. 升级一

/etc/rc.local 与 /etc/init.d Linux 开机自动运行程序

1. /etc/rc.local 这是使用者自订开机启动程序,把需要开机自动运行的程序写在这个脚本里 --------引用---------------------- 在完成 run level 3 的服务启动后,如果我还有其他的动作想要完成时,举例来说, 我还想要寄一封 mail 给某个系统管理帐号,通知他,系统刚刚重新开机完毕,那么, 是否应该要制作一个 shell script 放置在 /etc/rc.d/init.d/ 里面,然后再以连结方式连结到 /etc/rc.d/rc3.d/ 里面

用VC2010以上版本编译可以在低版本XP和2003的运行程序的方法

2013-09-17   作者:佚名   来源:本站整理   浏览:2001   评论:1 一直以来倍受此事困拢,vc2010以上版本编译出的exe或dll总是会引用kernel32.dll的EncodePointer和DecodePointer两个api,这两个api在xp sp2以下版本上找不到,虽然这种版本用户较少,但总有人在用,微软这贱人又不考虑这种低端用,无奈之下,我用过3种方法,记录如下. 1.使用vc2008的库,用2010的编译器.这种方法需要先找一份vc2008的库,而且在工程

linux下查找运行程序中的死循环

早上到公司后发现服务器的CPU占用率竟然达到百分之百了. 猜测是触发了问题代码进入死循环了. 用PS命令查看了一下情况. 发现罪魁祸首是某个游戏服务器程序. CPU占用率超高. 用 top -H -p PID 查看问题到底出现在那个线程, 记录下threadID. 用 gdb ProcessName PID 附近到目标进程. 用 info threads 列出线程状态. 用 thread Num. 查看问题线程信息 用 bt 查看堆栈调用顺利找到问题代码位置. 最后记得 gdb dettach

1、pip不是内部运行程序 解决方法

一.方式一 1.切换到pip所在路径: shit+ 右键. 再此处打开运行窗口 2.执行 pip install pytest 脚本即可. 二.方式二,添加环境变量 1.将pip所在的文件路径 添加到 path 即可. 原文地址:https://www.cnblogs.com/little-little-bai/p/11290274.html

Linux指定用户运行程序

可以参考文章: https://www.cnblogs.com/jmliao/p/11823209.html 具体事例: #在root用户下,直接用以下命令来执行程序,程序执行后,程序隶属于用户git su - git -c "nohup /home/git/gogs/gogs web >/dev/null 2>&1 &" 原文地址:https://www.cnblogs.com/faberbeta/p/linux-shell024.html

Delphi 禁止重复运行程序的方法

第一种方法,使用“过程调用” procedure Del; // 自定义过程 var Mutex: THandle; begin Mutex := CreateMutex(nil, True, PChar(Application.Title)); if GetLastError = ERROR_ALREADY_EXISTS then begin Application.MessageBox('重复登录!','系统提示', MB_ICONERROR); ReleaseMutex(Mutex); {

Linux 技巧:让进程在后台运行的可靠方法

原文链接:http://www.ibm.com/developerworks/cn/linux/l-cn-nohup/ 想让进程在断开连接后依然保持运行?如果该进程已经开始运行了该如何补救? 如果有大量这类需求如何简化操作? 我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败.如何让命令提交后不受本地关闭终端窗口/网络断开连接的干扰呢?下面举了一些例子, 您可以针对不同的场景选择不同的方式来处理