이 글의 내용은 Screen을 사용하여 원격 세션을 관리하는 방법을 소개하는 것입니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
로컬에서 개발하다 보면 리눅스 서버에 원격 연결을 해야 하는 경우가 많습니다. 처음에는 여러 개의 리모컨이 있을 때 여러 개의 SSH 창을 열었습니다. 이 방법은 매우 독창적이고 직접적이지만 매번 그렇습니다. 비밀번호 없이 SSH를 사용해 로그인하더라도 매번 SSH 명령을 입력하는 것이 전혀 빠르지 않다는 느낌을 받게 될 것입니다. Linux 도구도 많이 있습니다. 오늘은 screen
도구에 대해 알아 보겠습니다. screen
工具。
在介绍screen
工具时,先讨论一下,为什么连接服务器后,当执行长时间的任务时,我们关闭远程连接窗口,这个任务就被杀掉了呢?
在Linux/Unix中,有以下几个概念:
进程组(process group):一个或多个进程的集合,每个进程组都有一个唯一的进程组ID;
会话期(session):一个或多个进程组的集合,有唯一一个会话首进程(session leader),会话期ID为首进程ID;
会话期可以有一个单独的会话终端,与控制终端连接的会话期首进程叫控制进程(controlling process),当前与终端交互的进程称为前台进程组,其余进程组称为后台进程组。
工具POSIX.1定义:
挂断信号(SIGHUP)默认的动作是终止程序;
当终端接口检测到网络连接断开,将发送SIGHUP信号给控制进程(会话期首进程);
如果会话期首进程终止,则该信号发送到该会话期前台进程组;
一个进程退出导致一个孤儿进程组产生时,如果人一个孤儿进程组进程处于STOP状态,则发送SIGHUP和SIGCONT信号到该进程组中所有进程。
因此当网络断开或窗口关闭时,控制进程收到SIGHUP信号退出,会导致该会话期内其他进程退出。
打开两个SSH终端窗口,在第一个中执行ping
命令:
再另一个终端窗口中,找到ping
的进程ID为22132,其父进程ID为21803,即登录zsh:
使用ps -xj
可以看到,登录zsh(PID 21803)和ping在同一会话期,zsh为会话期首进程,所以进程组PGID为21803,ping所在的进程组PGID为22132,为前台进程组。
这时,我们关闭第一个SSH远程窗口,在另一个窗口中看到ping进程被杀掉了:
这就发现,当我们执行一个耗时的任务时,如果关闭了这个窗口,这个任务进程也就被杀掉了,并不是我们所期望的那样在后台继续执行。
现在,也不需要多说screen
到底是干什么的了,直接说怎么使用吧。
1、直接执行screen
命令
screen
将创建一个执行shell的全屏窗口,可以看到窗口的title已经提示处于screen
程序中,在这个窗口中你可以随便执行命令,如果要退出输入exit
命令。
2、如果你想新开一个窗口执行另一个任务,可以执行:
// 方法1 按键盘Ctrl+a +c, 会心打开一个screen窗口 // 方法2 screen 需要执行的任务的命令,比如: screen ping www.baidu.com
3、多个screen
screen
도구를 소개할 때 서버에 연결한 후 장기 작업을 실행할 때 원격 연결 창을 닫고 작업이 종료되는 이유를 먼저 논의해 보겠습니다. . 무슨 일이야?
세션: 고유한 세션 리더가 있는 하나 이상의 프로세스 그룹 모음이며 세션 ID는 리더 프로세스 ID입니다.
ping
명령을 실행합니다: #🎜🎜##🎜🎜##🎜🎜##🎜🎜#다른 터미널 창에서 ping
의 프로세스 ID를 22132로 찾고 그 부모는 프로세스 ID는 21803입니다. 즉, zsh에 로그인합니다: #🎜🎜##🎜🎜##🎜🎜##🎜🎜#ps -xj
를 사용하면 zsh(PID 21803)에 로그인하는 것과 ping이 동일한 세션에 있고 zsh에 로그인하는 것을 볼 수 있습니다. 은 세션의 첫 번째 프로세스이므로 프로세스 그룹의 PGID는 21803이고, ping이 위치한 프로세스 그룹의 PGID는 포그라운드 프로세스 그룹인 22132입니다. #🎜🎜##🎜🎜##🎜🎜# #🎜🎜#이때 첫 번째 SSH 원격 창을 닫았고 다른 창에서 ping 프로세스가 종료된 것을 확인했습니다: #🎜🎜##🎜🎜##🎜🎜##🎜🎜#이것은 시간이 많이 걸리는 작업을 수행할 때, 닫을 때 이 창을 닫을 때를 보여줍니다. 열리면 작업 프로세스가 종료되고 예상한 대로 백그라운드에서 계속 실행되지 않습니다. #🎜🎜#screen
이 무엇인지에 대해 더 말할 필요는 없습니다. 단지 그것을 사용하는 방법에 대해서만 이야기해 보겠습니다. #🎜🎜##🎜🎜#1. screen
명령을 직접 실행 #🎜🎜##🎜🎜##🎜🎜##🎜🎜#screen
은 셸을 실행하는 전체 화면 창을 생성합니다. 창 제목이 screen 프로그램을 종료하려면 exit
명령을 입력하세요. #🎜🎜##🎜🎜#2. 다른 작업을 수행하기 위해 새 창을 열려면 다음을 실행하면 됩니다. #🎜🎜#方法1 键盘Ctrl+a +[0..9] 方法2 键盘Ctrl+a +n, 下一个screen窗口 键盘Ctrl+a +p, 上一个screen窗口
Screen은 여러 프로세스 간에 물리적 터미널을 다중화할 수 있는 창 관리자입니다. Screen에도 세션 개념이 있습니다. 사용자는 화면 세션에서 여러 화면 창을 만들 수 있으며, 각 화면 세션에서 화면 창을 운영하는 것과 같습니다. 실제 SSH 연결 창.
추천 관련 비디오 튜토리얼: "Linux Tutorial"
위 내용은 이 글의 전체 내용입니다. 모두의 학습에 도움이 됩니다. 더 흥미로운 내용을 보려면 PHP 중국어 웹사이트의 관련 튜토리얼 열을 주의 깊게 살펴보세요! ! !
위 내용은 Screen을 사용하여 원격 세션을 관리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!