Linux 后台运行程序方法总结
在用服务器跑数据的时候经常会遇到数据量大,速度慢的情况,动不动需要用好几天甚至上十天,但电脑总不能好几天不关终端,且保证不断网吧。所以这时候我们就需要将程序放到后台运行,不依赖于终端。关于原理,我们知道当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。因此,我们的解决办法就有两种途径:一是让进程忽略 HUP 信号,二是让进程运行在新的会话里从而成为不属于此终端的子进程。
目录
nohup
disown
screen
setsid
nohup
顾名思义,nohup 的用途就是让提交的命令忽略 hangup 信号,属于第一种途径。我一般是这样子用:
nohup python -u train_au.py >trian_log 2>&1 &# 注释
# 格式:nohup command args
# > train_log 标准输出重定向到文件中
# 2>&1 标准错误也输出到文件中
# 最后一个 & 表示加到后台
disown
有时候我们程序跑起来才发现忘了放后台运行,这时候怎么办呢?当然不是看着办,而是有很好的办法解决:
# 通过以下操作即可解决ctrl+z # 将程序挂起
jobs # 查看作业号
bg job_id # 放到后台运行
disown -h %job_id
screen
这种方法是师兄教我的,Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换 。使用screen后其是是 init(PID为1)的子进程,这样也不会受到HUP信号的影响。
screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]
-A 将所有的视窗都调整为目前终端机的大小。
-d <作业名称> 将指定的screen作业离线。
-h <行数> 指定视窗的缓冲区行数。
-m 即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r <作业名称> 恢复离线的screen作业。
-R 先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s 指定建立新视窗时,所要执行的shell。
-S <作业名称> 指定screen作业的名称。
-v 显示版本信息。
-x 恢复之前离线的screen作业。
-ls或--list 显示目前所有的screen作业。
-wipe 检查目前所有的screen作业,并删除已经无法使用的screen作业。# 常见用法
screen -S name -> 新建一个叫name的session
screen -dms name ->创建一个detach的session
screen -ls -> 列出当前所有的session
screen -r name -> 回到name这个session
screen -d name -> 远程detach某个session # CTRL-a d快捷键终端当前Session
screen -d -r name -> 结束当前session并回到name这个session
setsid
属于第二种策略,进程不属于接受 HUP 信号的终端的子进程,那么自然也就不会受到 HUP 信号的影响。
setsid # set session id
Usage:
setsid [options] <program> [arguments ...]Run a program in a new session.Options:-c, --ctty set the controlling terminal to the current one-w, --wait wait program to exit, and use the same return-h, --help display this help and exit-V, --version output version information and exitsetsid python train.py
Linux 后台运行程序方法总结相关推荐
- 华为怎么关Android,华为手机怎么关闭后台运行程序 华为手机关闭后台运行程序方法...
初次使用华为手机的朋友注意了,华为手机关闭程序时,容易忘记从后台关闭.这样就会导致手机后台运行程序越来越多,手机使用变得越来越慢.那么怎么操作才能从后台上关闭程序呢? 华为手机关闭后台运行程序方法 这 ...
- linux后台运行程序命令screen
linux后台运行程序命令screen 前言 screen的简单使用 1.创建一个会话窗口 2. 查看我们screen的会话 3. 恢复会话窗口,就是继续查看我们后台运行的程序 前言 我们在服务器终端 ...
- Linux 后台运行程序 Screen 服务器
Linux后台运行python程序,断网||关机后仍能在继续在服务器上运行 常用screen参数: screen -S sess_name -> 新建一个叫sess_name的session s ...
- Linux后台运行Jar方法
在linux服务器上运行Jar文件时通常的方法是: $ java -jar test.jar 这种方式特点是ssh窗口关闭时,程序中止运行.或者是运行时没法切出去执行其他任务,有没有办法让Jar在后台 ...
- linux 后台运行程序
前言 一般为了程序后台运行,我们需要使用nohup命令. 此时需要对程序运行时所产生的输出信息记录,因此就需要使用linux的信息输出命令 START 一个例子 比如要让redis-server程序后 ...
- linux 后台运行程序命令
文章目录 一.cmd & 二.nohup command & 这篇文章记录了两种linux程序后台运行的方式,两种方式略有区别,各位根据需求使用. 一.cmd & 通过 cmd ...
- screen tmux 技巧:linux后台运行程序
通俗简介: screen 简单应用: screen myprogram // 通过screen启动一个程序, 或者screen -L myprogram 加上 -L 是为了 turns on logg ...
- golang 程序后台运行的方法 linux windows
方法1: windows 只需要在编译的时候使用一下go build - ldflags="-H windows" Linux 在运行程序的尾部加入&,或者nohup . ...
- linux程序已经在后台运行冻结了_如何使程序在Linux后台运行
经常在Linux上面运行程序都有这样的体验: 某个程序运行的时候,会产生大量的log(提示)信息,但实际上我们只想让它跑一下而已,log暂时不需要或者后面才有需要. 同时run多个相同或者不同程序的时 ...
最新文章
- php趣味小程序,php常用小程序
- python 局域网通讯_python3 实现tcp/udp局域网通信
- MAC下《暗黑世界》客户端版本编译说明!!
- shell脚本实例-判断主机存活 以及企业备份方案
- ASP.NET Web API随记汇总
- java 循环do while,Javawhile循环与do…while循环 - Java教程
- 电脑QQ能登上,网页打不开的解决办法
- aix系统下oracle之ora-00471,Oracle RAC 9.2.0.7 (AIX53,HA52)三台主机实例全down的问题
- python08--正则
- 纯css3特效实现的文字亮光
- GIT插件EGIT使用手册
- 2021-08-01创建查询关键字及数据类型
- Mybatis原理解析(四)--查询流程
- 中国移动java项目_Java Web开发-项目部分(中国移动科技综合管理系统)视频——私塾在线提供...
- win10启动修复_在win10桌面建立高级启动选项快捷方式,修复电脑故障不用愁
- nodejs服务器部署unexpected token{
- 数字图像处理复习总结
- 华为 OSPF特殊区域
- 解读:【阿里热线小蜜】实时语音对话场景下的算法实践
- ASCII与Unicode编码消息写文件浅析
热门文章
- 容器源码解析之LinkedHashSet(六)
- 02.操作系统概述.md
- Codeup-问题 A: 最大连续子序列
- 软件工程中的所有内聚类型【吐血整理,附带排名!】
- 以下关于程序设计语言的叙述中,不正确的是()【最全!最详细解释!!】
- 修改Mysql表中自增字段的初始值
- 成为进阶Linux大佬的第一步
- 2020idea创建web项目_Spring Boot + Mybatis 多模块(module)项目的完整搭建教程
- android异步线程未执行,关于多线程:当服务在后台运行时,Android异步任务无法正常运行(doInBackground未执行)...
- win7蓝牙怎么连接_台式机蓝牙怎么连接