링크 ux 앞 배경 전환
2、Jobs 명령 하 다. 이 명령 은 현재 배경 에서 실행 중인 명령 이 얼마나 되 는 지 볼 수 있 습 니 다. jobs 현재 셸 환경 에서 시 작 된 작업 상 태 를 보 여 줍 니 다. jobsid 가 지정 되 지 않 으 면 모든 작업 상태 정 보 를 표시 합 니 다.
3、fg 명령 하 다. 이 명령 은 배경 에서 실행 되 는 프로 세 스 를 프론트 로 옮 겨 실행 합 니 다. 구체 적 인 용법: fg %n.여기 N. jobs 보 이 는 jobnumber.
4、ctrl + z 조합 키 이 명령 은 프론트 데스크 에서 실행 중인 명령 을 백 스테이지 에 놓 고 일시 정지 합 니 다.
5. bg 명령 (background) 이 명령 은 배경 에서 실행 을 중단 하 는 명령 을 배경 에서 계속 실행 하 는 명령 으로 바 꿉 니 다.용법: bg% n. N jobs 명령 으로 보 이 는 jobnumber 입 니 다.
1. nohup
nohup 은 의심 할 여지없이 우리 가 먼저 생각 한 방법 이다.말 그대로 nohup 의 용 도 는 제출 한 명령 이 hangup 신 호 를 무시 하 게 하 는 것 이다.nohup 의 도움 정 보 를 먼저 살 펴 보 겠 습 니 다.
NOHUP(1) User Commands NOHUP(1)
NAME
nohup - run a command immune to hangups, with output to a non-tty
SYNOPSIS
nohup COMMAND [ARG]...
nohup OPTION
DESCRIPTION
Run COMMAND, ignoring hangup signals.
--help display this help and exit
--version
output version information and exit
이 를 통 해 알 수 있 듯 이 nohup 의 사용 은 매우 편리 합 니 다. 처리 할 명령 전에 nohup 을 추가 하면 됩 니 다. 표준 출력 과 표준 오류 가 부족 하면 nohup. out 파일 로 재 설정 합 니 다.일반적으로 우 리 는 끝 에 '&' 를 추가 하여 명령 을 동시에 배경 에 넣 고 실행 할 수 있 으 며, 결 성 된 리 셋 파일 이름 을 변경 할 수도 있 습 니 다.
nohup 예제
[root@pvcent107 ~]# nohup ping www.ibm.com &
[1] 3059
nohup: appending output to `nohup.out'
[root@pvcent107 ~]# ps -ef |grep 3059
root 3059 984 0 21:06 pts/3 00:00:00 ping www.ibm.com
root 3067 984 0 21:06 pts/3 00:00:00 grep 3059
[root@pvcent107 ~]#
2.setsid
nohup 은 HUP 신 호 를 무시 함으로써 프로 세 스 가 중간 에 중단 되 는 것 을 피 할 수 있 습 니 다. 그러나 우리 가 각 도 를 바 꾸 어 생각하면 HUP 신 호 를 받 는 터미널 의 하위 프로 세 스 에 속 하지 않 는 다 면 자 연 스 럽 게 HUP 신호 에 영향 을 받 지 않 을 것 입 니 다.setsid 는 우리 가 이 점 을 할 수 있 도록 도와 줄 수 있다.setsid 의 도움말 정 보 를 먼저 살 펴 보 겠 습 니 다.
SETSID(8) Linux Programmer’s Manual SETSID(8)
NAME
setsid - run a program in a new session
SYNOPSIS
setsid program [ arg ... ]
DESCRIPTION
setsid runs a program in a new session.
이 를 통 해 알 수 있 듯 이 setsid 의 사용 도 매우 편리 하고 처리 할 명령 전에 setsid 를 추가 하면 됩 니 다.
setsid 예제
[root@pvcent107 ~]# setsid ping www.ibm.com
[root@pvcent107 ~]# ps -ef |grep www.ibm.com
root 31094 1 0 07:28 ? 00:00:00 ping www.ibm.com
root 31102 29217 0 07:29 pts/4 00:00:00 grep www.ibm.com
[root@pvcent107 ~]#
주의해 야 할 것 은, 이전 예 에서 우리 의 프로 세 스 ID (PID) 는 31094 이 고, 부모 ID (PPID) 는 1 (즉 init 프로 세 스 ID) 이 며, 현재 터미널 의 프로 세 스 ID 가 아 닙 니 다.이 예 를 nohup 예 에서 부모 ID 와 비교 하 십시오.
3.&
여기에 subshell 에 관 한 작은 기교 가 하나 더 있다.하나 이상 의 이름 을 '()' 에 포함 시 키 면 이 명령 들 이 하위 셸 에서 실 행 될 수 있 고 재 미 있 는 기능 을 많이 확장 할 수 있다 는 것 을 알 고 있 습 니 다. 우리 가 지금 토론 하고 자 하 는 것 은 그 중의 하나 입 니 다.
우리 가 '&' 도 '()' 에 넣 으 면 제출 한 숙제 가 작업 목록 에 있 지 않다 는 것 을 알 게 될 것 이다. 즉,
">filename 2>&1"
을 통 해 볼 수 없다 는 것 이다.왜 이렇게 하면 HUP 신호 의 영향 을 피 할 수 있 는 지 살 펴 보 자.subshell 예제
[root@pvcent107 ~]# (ping www.ibm.com &)
[root@pvcent107 ~]# ps -ef |grep www.ibm.com
root 16270 1 0 14:13 pts/4 00:00:00 ping www.ibm.com
root 16278 15362 0 14:13 pts/4 00:00:00 grep www.ibm.com
[root@pvcent107 ~]#
상례 에서 알 수 있 듯 이 새로 제출 한 프로 세 스 의 부모 ID (PPID) 는 1 (init 프로 세 스 의 PID) 이지 현재 터미널 의 프로 세 스 ID 가 아 닙 니 다.따라서 현재 터미널 의 하위 프로 세 스에 속 하지 않 기 때문에 현재 터미널 의 HUP 신호 에 영향 을 받 지 않 습 니 다.
disown
필드:
명령 전에 nohup 이나 setsid 를 미리 추가 하면 HUP 신호 의 영향 을 피 할 수 있다 는 것 을 이미 알 고 있 습 니 다.그러나 우리 가 아무런 처리 도 하지 않 고 명령 을 내 렸 다 면 어떻게 보완 해 야 HUP 신호 의 영향 을 피 할 수 있 을 까?
해결 방법:
이 때 는 nohup 이나 setsid 를 추가 하려 면 이미 늦 었 고 작업 스케줄 과 disown 을 통 해 이 문 제 를 해결 할 수 밖 에 없습니다.disown 의 도움 정 보 를 살 펴 보 겠 습 니 다.
disown [-ar] [-h] [jobspec ...]
Without options, each jobspec is removed from the table of
active jobs. If the -h option is given, each jobspec is not
removed from the table, but is marked so that SIGHUP is not
sent to the job if the shell receives a SIGHUP. If no jobspec
is present, and neither the -a nor the -r option is supplied,
the current job is used. If no jobspec is supplied, the -a
option means to remove or mark all jobs; the -r option without
a jobspec argument restricts operation to running jobs. The
return value is 0 unless a jobspec does not specify a valid
job.
우 리 는 다음 과 같은 방식 으로 우리 의 목적 을 달성 할 수 있 음 을 알 수 있다.
CTRL - z 활용
우리 의 일상적인 작업 에서, 우 리 는 CTRL - z 로 현재 프로 세 스 를 백 엔 드 에 걸 어 놓 고 실행 을 멈 추고, 다른 작업 을 실행 한 다음, fg 로 걸 려 있 는 프로 세 스 를 백 엔 드 에 다시 놓 을 수 있 습 니 다. (bg 로 걸 려 있 는 프로 세 스 를 백 엔 드 에 놓 을 수도 있 습 니 다.) 계속 실행 할 수 있 습 니 다.이렇게 하면 우 리 는 한 단말기 에서 여러 작업 을 유연 하 게 전환 하여 실행 할 수 있다 는 점 은 디 버 깅 코드 를 실행 할 때 특히 유용 하 다.코드 편집 기 를 배경 에 걸 고 다시 놓 을 때 커서 포 지 셔 닝 은 지난번 에 걸 었 을 때의 위치 에 머 물 러 다시 찾 는 번 거 로 움 을 피 할 수 있 기 때문이다.
jobs
사용 합 니 다.disown -h jobspec
사용 합 니 다.disown -ah
사용 합 니 다.주의해 야 할 것 은 disown 을 사용 한 후에 목표 작업 을 작업 목록 에서 제거 합 니 다. 우 리 는 더 이상
disown -rh
을 사용 하여 볼 수 없 지만 jobs
으로 찾 을 수 있 습 니 다.그러나 또 하나의 문제 가 있다. 이런 방법의 조작 대상 은 작업 이다. 만약 우리 가 명령 을 실행 할 때 끝 에 '&' 를 추가 하여 그것 을 작업 으로 만 들 고 배경 에서 운행 한다 면 만사 가 다 잘 될 것 이다. 우 리 는
ps -ef
명령 을 통 해 모든 작업 의 목록 을 얻 을 수 있다.그러나 현재 명령 을 작업 으로 실행 하지 않 았 다 면 어떻게 해야만 작업 번 호 를 얻 을 수 있 습 니까?정 답 은 CTRL - z 로!CTRL - z 의 용 도 는 현재 프로 세 스 를 걸 고 (Suspend) 명령 으로 작업 번 호 를 조회 한 다음
jobs
으로 배경 에 넣 고 계속 실행 할 수 있 습 니 다.현재 프로 세 스 의 실행 결과 에 영향 을 줄 수 있 으 니 주의해 야 할 것 은 이 방법 을 사용 하 십시오.disown 예제 1 (명령 을 제출 할 때 '&' 로 명령 을 배경 에 넣 고 실행 했다 면 'disown' 을 직접 사용 할 수 있 습 니 다)
[root@pvcent107 build]# cp -r testLargeFile largeFile &
[1] 4825
[root@pvcent107 build]# jobs
[1]+ Running cp -i -r testLargeFile largeFile &
[root@pvcent107 build]# disown -h %1
[root@pvcent107 build]# ps -ef |grep largeFile
root 4825 968 1 09:46 pts/4 00:00:00 cp -i -r testLargeFile largeFile
root 4853 968 0 09:46 pts/4 00:00:00 grep largeFile
[root@pvcent107 build]# logout
disown 예제 2 (명령 을 제출 할 때 "&"를 사용 하지 않 고 명령 을 배경 에 넣 고 실행 하면 CTRL - z 와 "bg"를 사용 하여 배경 에 넣 고 "disown"을 사용 할 수 있 습 니 다)
[root@pvcent107 build]# cp -r testLargeFile largeFile2
[1]+ Stopped cp -i -r testLargeFile largeFile2
[root@pvcent107 build]# bg %1
[1]+ cp -i -r testLargeFile largeFile2 &
[root@pvcent107 build]# jobs
[1]+ Running cp -i -r testLargeFile largeFile2 &
[root@pvcent107 build]# disown -h %1
[root@pvcent107 build]# ps -ef |grep largeFile2
root 5790 5577 1 10:04 pts/3 00:00:00 cp -i -r testLargeFile largeFile2
root 5824 5577 0 10:05 pts/3 00:00:00 grep largeFile2
[root@pvcent107 build]#
screen
필드:
우 리 는 프로 세 스 가 HUP 신호 의 영향 을 받 지 않도록 하 는 방법 을 이미 알 고 있 습 니 다. 그러나 이러한 명령 이 안정 적 인 배경 에서 실행 되 어야 한다 면 모든 명령 에 대해 이러한 조작 을 피 할 수 있 습 니까?
해결 방법:
이때 가장 편리 한 방법 은 screen 이다.쉽게 말 하면 screen 은 ANSI/VT 100 의 터미널 시 뮬 레이 터 를 제공 하여 실제 터미널 에서 여러 개의 전체 화면의 가짜 단말 기 를 실행 할 수 있 도록 합 니 다.screen 의 매개 변수 가 매우 많 고 강력 한 기능 을 가지 고 있 습 니 다. 저 희 는 자주 사용 하 는 기능 과 screen 을 사용 하면 HUP 신호 의 영향 을 피 할 수 있 는 이 유 를 간략하게 분석 하 겠 습 니 다.먼저 screen 의 도움말 정 보 를 살 펴 보 겠 습 니 다.
SCREEN(1) SCREEN(1)
NAME
screen - screen manager with VT100/ANSI terminal emulation
SYNOPSIS
screen [ -options ] [ cmd [ args ] ]
screen -r [[pid.]tty[.host]]
screen -r sessionowner/[[pid.]tty[.host]]
DESCRIPTION
Screen is a full-screen window manager that multiplexes a physical
terminal between several processes (typically interactive shells).
Each virtual terminal provides the functions of a DEC VT100 terminal
and, in addition, several control functions from the ISO 6429 (ECMA
48, ANSI X3.64) and ISO 2022 standards (e.g. insert/delete line and
support for multiple character sets). There is a scrollback history
buffer for each virtual terminal and a copy-and-paste mechanism that
allows moving text regions between windows.
screen 을 사용 하 는 것 이 편리 합 니 다. 다음 과 같은 몇 가지 일반적인 옵션 이 있 습 니 다.
jobs
으로 만 듭 니 다.bg jobspec
로 표시 합 니 다.screen -dmS session name
로 다시 연결 합 니 다.screen -list
로 잠시 중단 합 니 다.화면 예제
[root@pvcent107 ~]# screen -dmS Urumchi
[root@pvcent107 ~]# screen -list
There is a screen on:
12842.Urumchi (Detached)
1 Socket in /tmp/screens/S-root.
[root@pvcent107 ~]# screen -r Urumchi
"- r"로 screen 세 션 에 연결 하면 이 가짜 터미널 에서 하고 싶 은 대로 할 수 있 습 니 다. HUP 신호 가 프로 세 스에 영향 을 미 칠 까 봐 걱정 하지 않 아 도 됩 니 다. 명령 마다 "nohup"이나 "setsid"를 추가 하지 않 아 도 됩 니 다.왜 그 럴 까요?다음 두 가지 예 를 보 겠 습 니 다.
1. screen 을 사용 하지 않 은 새 프로 세 스 트 리
[root@pvcent107 ~]# ping www.google.com &
[1] 9499
[root@pvcent107 ~]# pstree -H 9499
init─┬─Xvnc
├─acpid
├─atd
├─2*[sendmail]
├─sshd─┬─sshd───bash───pstree
│ └─sshd───bash───ping
screen 을 사용 하지 않 았 을 때 우리 가 처 한 bash 는 sshd 의 하위 프로 세 스 임 을 알 수 있 습 니 다. ssh 가 연결 을 끊 었 을 때 HUP 신 호 는 아래 의 모든 하위 프로 세 스 (우리 가 새로 만 든 ping 프로 세 스 포함) 에 영향 을 줄 수 있 습 니 다.
2. screen 을 사용 한 후 새 프로 세 스 의 프로 세 스 트 리
[root@pvcent107 ~]# screen -r Urumchi
[root@pvcent107 ~]# ping www.ibm.com &
[1] 9488
[root@pvcent107 ~]# pstree -H 9488
init─┬─Xvnc
├─acpid
├─atd ├─screen───bash───ping
├─2*[sendmail]
screen 을 사용 하면 달라 집 니 다. 이때 bash 는 screen 의 하위 프로 세 스 이 고 screen 은 init (PID 는 1) 의 하위 프로 세 스 입 니 다.그러면 ssh 가 연결 을 끊 었 을 때 HUP 신 호 는 당연히 screen 아래 의 하위 프로 세 스에 영향 을 주지 않 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
링크 ux 앞 배경 전환1、& 기호. 명령 뒤에 하 나 를 더 하 다. & 기호 이 명령 은 배경 에서 실행 되 는 프로 세 스 를 프론트 로 옮 겨 실행 합 니 다. 5. bg 명령 (background) 이 명령 은 배경 에서 실행 을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.