screen & tmux 技巧:linux后台运行程序

通俗简介:

screen 简单应用:

screen myprogram     // 通过screen启动一个程序, 或者screen -L myprogram: turns on logging to ~/screenlog.0
ctr+a 然后再按一下 d   // 使程序在后台运行,即detach
screen -ls           // 列出在screen后台运行的程序,以及ID(例如4491.pts-2.localhost)
screen -r ID         // 恢复运行程序到terminal,例如:screen -r 4491
exit //退出当前screen会话(同 ctrl+a 再按 k),有时候会打开很多screen,可以通过exit退出。

多窗口管理:

如果在某一个终端中运行了多次screen,即有嵌套的多层screen,则 ctrl+a 再按 w 可查看当前终端下的所有screen窗口,* 号 表示的是当前会话所在的窗口,然后 ctrl+a 再按 0~9 即可切换到某个对应窗口。

介绍screen的很好的文章,just read it:

http://www.ibm.com/developerworks/cn/linux/l-cn-screen/

复杂点的应用如下:


One way:

When you use screen you need to detach with CTRL+A+D before you exit ssh.

Alternatively, if you want to run a process directly with screen you can use

screen -dmSL [session name] [commands]
-d: starts a screen session and immediately detaches from it
-m: forces creating a new screen session
-S: lets you give the session a name
-L: turns on logging to ~/screenlog.0

example:

screen -dmSL myalias myscript.sh

You can then either:

resume later using screen -x myalias

or

check the log file less -r ~/screenlog.0



Another way:

Screen Command Example 1: Execute a command (or shell-script), and detach the screen

$ screen unix-command-to-be-executed
$ screen ./unix-shell-script-to-be-executed

Once you’ve used the screen command, you can detach it from the terminal using any one of the following method.

Screen Detach Method 1: Detach the screen using CTRL+A d

When the command is executing, press CTRL+A followed by d to detach the screen.

Screen Detach Method 2: Detach the screen using -d option

When the command is running in another terminal, type the command as following.

$ screen -d SCREENID

Screen Command Example 2: List all the running screen processes

You can list all the running screen processes using screen -ls command.

For example:

On terminal 1 you did the following:

$ screen ./myscript.sh

From terminal 2 you can view the list of all screen processes. You can also detach it from terminal 2 as shown below.

$ screen -ls
There is a screen on:
    4491.pts-2.localhost    (Attached)
1 Socket in /var/run/screen/S-i5.
$ screen -d 4491.pts-2.localhost
[4491.pts-2.localhost   detached.]

Screen Command Example 3: Attach the Screen when required

You can attach the screen at anytime by specifying the screen id as shown below. You can get the screen id from the “screen -ls” command output.

$ screen -r 4491.pts-2.FC547





tmux:

我们先来理解下tmux的几个元素。tmux的主要元素分为三层:

  • Session 一组窗口的集合,通常用来概括同一个任务。Session可以有自己的名字便于任务之间的切换。detach和attach都是基于Session的,通过 tmux 命令创建一个Session。
  • Window 单个可见窗口,Windows有自己的编号。在tmux的session中通过 C-b+c 来创建。
  • Pane 窗格,被划分成小块的窗口。通过在Window中 C-b+" (水平分割,左右两个Pane) 或者 C-b+% (垂直分割,上下两个Pane)。

即:

session: 会话,一个服务器可以包含多个session

window: 窗口,一个session可以包含多个window

pane: 面板,一个window可以包含多个pane

快捷键一览:

tmux    #开启tmux,新建一个session: t
tmux ls #显示已有tmux列表(C-b s)
tmux attach-session -t n #重新连接上第n个session, 即attach。或者: tmux a –t n
C-b c #创建一个新的窗口
C-b n #切换到下一个窗口
C-b p #切换到上一个窗口
C-b l #最后一个窗口,和上一个窗口的概念不一样哟,谁试谁知道
c-b w #通过上下键选择当前窗口中打开的会话
C-b n #直接跳到第n个窗口
C-b & #退出当前窗口(kill window,同时关闭所有小窗口)
C-b x #关闭当前光标处的小窗口或者如果只有一个窗口则关闭window

C-b d 临时断开会话,即dettach,类似screen的 ctrl+a+d (通过tmux ls查看Session号,例如0,然后tmux attach-session -t 0 重新attach)

C-b " 分割出来一个窗口

C-b % 分割出来一个窗口

C-b o 在小窗口中切换

C-b (方向键)

C-b ! 新建一个窗口,并将当前小窗口最大化

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2025-01-14 08:01:17

screen & tmux 技巧:linux后台运行程序的相关文章

linux后台运行程序(secureCRT断掉或关闭后继续运行程序)

secureCRT断掉后想继续运行程序.也就是程序会在后台一直执行到结束. secureCRT通过ssh联接到client端运行程序,如果关掉窗口或者断开连接时,任务会被kill. 为了程序能够后台执行到结束: 1.可以用&: 比如 python test.py 改成 python test.py & 来调用执行. 2.另外,还有一种方式:通过ctrl+z.bg等一系列的命令,将已经在前台运行的作业放到后台执行: 如果一个作业已经在前台执行,可以通过ctrl+z将该作业放到后台并挂起.然后

linux 后台运行程序

有些时候,我们需要在终端启动一个程序,并使之运行--但是如果关闭终端,那么这个程序也就随着关闭了.那么有没有什么方法在关闭终端后,让已经从这个终端启动的程序继续运行呢? 前置知识: xterm,console,tty,pts,pty的区别 shell是直接和内核进行通信的东西 xterm是一个软件概念,可以通过这个程序连接到console从而控制主机,可以理解为cli形式的终端模拟器,而gnome-terminal,konsole就是gui形式的终端模拟器 console是主机的控制台,是一个物

linux后台运行程序

1.我们的程序只是普通程序而已,一般这种程序即使使用& 结尾,如果终端关闭,那么程序也会被关闭.为了能够后台运行,我们需要使用nohup这个命令,比如我们有个start.sh需要在后台运行,并且希望在 后台能够一直运行,那么就使用nohup:              nohup /root/start.sh & 2.jobs bg 未完待续

screen后台运行程序

用screen 在后台运行程序 我们常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,在此期间不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了.这时,我们可以用screen命令解决这个问题. screen命令可以实现当前窗口与任务分离,我们即使离线了,服务器仍在后台运行任务.当我们重新登录服务器,可以读取窗口线程,重新连接任务窗口. 一:主要功能 会话恢复 只要Screen本身没有终止,在其内部运行的会话都可以恢复.这一点对于远

让程序在linux后台运行的方法

常见用法: nohup ./Thriftc & > /dev/null & 在linux后台运行Thriftc程序,并将其输出重定向到空设备:/dev/null,也就是将程序输出全部丢弃. nohup COMMAND > out.log 2>&1 & 在linux后台运行COMMAND命令,将标准输出重定向到out.log文件,标准错误也重定向到out.log文件(标准错误重定向到标准输出,再将标准输出重定向到out.log). 上边的示例涉及到两个命令:

Linux后台运行

有两种方式: 1. command & : 后台运行,你关掉终端会停止运行2. nohup command & : 后台运行,你关掉终端也会继续运行 一. 简介 Linux/Unix 区别于微软平台最大的优点就是真正的多用户,多任务.因此在任务管理上也有别具特色的管理思想.我们知道,在 Windows 上面,我们要么让一个程序作为服务在后台一直运行,要么停止这个服务.而不能让程序在前台后台之间切换.而 Linux 提供了 fg 和bg 命令,让你轻松调度正在运行的任务.假设你发现前台运行的

linux后台运行&符号、nohup命令、输出重定向等使用方法

列出若干种情形,便于这几个命令及参数的理解: 在命令最后加上&符号,表示让这个进程到后台去执行,这样立刻返回到提示符状态,我们可以接着做下面的事.如:command & 但此时如果这个进程有输出,还是会显示出来,这又会干扰到我们的shell窗口.所以可以考虑把标准输出重定向到某个文件去,如:command >output & 现在清净了.但有时我们会发现后台运行的进程出错了,我们希望把错误信息也保存起来.那就用到了linux中默认定义两个变量:1指标准输出:2指错误输出,所以

angularJS开启服务器后台运行程序,找不到scripts/web-server.js

学习angularJS时,教程里说使用node scripts/web-server.js开启服务器后台运行程序.一直出错.后来发现原因是这是老版本里的命令.现在都是用sudo npm start就可以了 运行完sudo npm start,再开启karma测试 sudo npm test 然后再浏览器中输入http://localhost:8000/app/index.html即可访问angularJS教程里的index.html. angularJS开启服务器后台运行程序,找不到script

五、清理mac缓存和关闭后台运行程序

一.清理mac 缓存  1.用鼠标点击桌面,然后按快捷键Command+Shift+G前往文件夹 2.输入路径:~/Library/Caches/ 3.清除所有的数据,把所有的Caches文件夹得都行都删除 二.关闭后台运行程序 1.打开Launchpad中的活动监视器 2.双击可以退出,正在运行的程序