LandryBean 2019-10-23
本文仅供自己日常参考
linux 后台运行任务
# 在某一个命令运行当中, 如在vim编辑中, 使用 Ctrl + Z , 将当前任务切换到后台, 此时该任务处于暂停状态. Stopped #如果想让任务在后台继续运行, 需要输入: bg %[上文显示的任务id] # 如果不知道任务id, 使用jobs命令列出全部后台任务 jobs -l # 后后台任务切换到前台 fg # 把 jobs 列出的带 "+" 号的任务切换到前台, 这个任务也是最后一个放入后台任务 fg %[任务id] # 把特定id的任务切换到前台, 注意%号 # 让一个命令直接在后台运行, 在命令最后加上 & [command] &
nohup, 不挂起地运行任务
比如说当我们从客户端ssh到服务器, 如果因为客户端这边的网络或者其他原因, 导致ssh意外中断, 那服务器上正在运行的任务可能就被迫中断了, nohup就是为了解决这类需求, 当终端关闭后, 任务仍能继续运行
参考了这篇博客
# 基本命令 nohup [command] & # 举例 nohup python test.py > out.txt 2>&1 & # 对上述命令说明: # > 用于输出重定向, > out.txt 即为把python程序的输出内容输出到out.txt中 # 2>&1 指将标准出错重定向到标准输出 # & 让命令在后台运行
screen, screen是一个类似nohup的第三方命令, 比nohup更强大和好用, 从名字上来看, 有点类似一个虚拟屏幕的意思, 可以让任务在一个虚拟的终端中继续运行
下列命令参考了这篇文章
# 安装 screen sudo apt-get install screen # 创建新回话 screen -S [name] # 查看当前的全部会话 screen -ls # ~~会话有两种常见状态, Detached (分离的) 可以理解为在后台的(从这个单词解释来看, 就是这个会话不是当前的任务), Attached (附加的) 可以理解为在前台的(从这个单词解释来看, 就是这个会话是当前的任务), 两种状态和git里面的Attached/Attached有类似的意思 ~~ # 重新连接回话, 或者说切换到某个回话 screen -r [name] # 在某个回话中退出并删除会话, 快捷键 Ctrl+D # 清除一系列Dead的会话 screen -wipe
screen 还支持窗口管理操作
screen 的命令模式以 Ctrl + A 开始,
Ctrl + A 再 C: 新建窗口并切换过去
Ctrl + A 再 N: 切换到下一个窗口
Ctrl + A 再 K: 关闭当前窗口
Ctrl + A 再 Shift + S: 上下分屏
Ctrl + A 再 Tab: 切换屏幕