Linux使用screen执行长时间运行的任务
2018-09-07
3,577 views
0 min read
当我们用SSH或者telent登录到远程服务器后,在执行例如websocket之类的需要长时间运行任务的时候,如果此时断开链接,正在进行的任务也会被强制终止。
在Linux/Unix中,有这样几个概念:
- 进程组(process group):一个或多个进程的集合,每一个进程组有唯一一个进程组ID,即进程组长进程的ID。
- 会话期(session):一个或多个进程组的集合,有唯一一个会话期首进程(session leader)。会话期ID为首进程的ID。
- 会话期可以有一个单独的控制终端(controlling terminal)。与控制终端连接的会话期首进程叫做控制进程(controlling process)。当前与终端交互的进程称为前台进程组。其余进程组称为后台进程组。
也就是说,连接上远程服务器后,会产生一个会话期,此时进行的任务进程会处于该会话期内,如果断开链接,服务器就会终止该会话期内的所有进程。
使用screen
命令可以创建一个新的窗口,在里面进行的任务不会随着远程会话的中断而结束。
常用的命令
screen -S window
创建一个名为window的窗口
screen -ls
列出所有窗口
screen -r window
切换到名为window的窗口
screen -d window
关闭名为window的窗口
在每个screen session 下,所有命令都以 ctrl+a(C-a) 开始。
更多screen详细的命令点击下方可以查看
Previous Post
使用pako.js解压服务端传来的gzip文件(火币api)
Next Post
Mysql插入数据无默认值用0代替
Or you can contact me by Email