Control+ Z키보드 키 대신 명령줄을 통해 작업하는 방법은 무엇입니까? (리눅스에서)
실행 중인 모든 터미널을 중지하고 나중에 다시 시작해야 합니다.
답변1
Control+ 포그라운드에 있는 모든 프로세스 터미널에 신호 (Linux amd64에서는 20, Solaris amd64에서는 24, FreeBSD amd64에서는 18... 신호를 숫자로 참조하는 것은 피하는 것이 가장 좋습니다)를 받는 Z제어 문자를 씁니다. 프로세스 그룹.susp
SIGTSTP
-명령을 사용하여 명령줄에서 신호를 보내 프로세스를 중지할 수 있습니다 kill
.
kill -s STOP <pid>
( <pid>
일시 중지하려는 프로세스의 ID는 어디에 있습니까?) 또는 특정 이름을 사용하여 프로그램의 모든 프로세스를 지정하려는 경우(기술적으로 이름이 주어진 확장 정규 표현식과 일치하는 모든 프로세스):
pkill -STOP xterm
( xterm
예제 이름은 어디에 있습니까?)
프로세스를 재개해야 할 경우에도 SIGCONT
동일한 방식으로 신호가 전송됩니다.
답변2
제어 터미널인 모든 프로세스(해당 터미널과 셸에서 실행 중인 모든 포그라운드 및 백그라운드 작업 포함)를 중지하려면 /dev/pts/12
다음을 수행할 수 있습니다.
pkill -STOP -t pts/12
이로 인해 회의 리더도 일시 중지됩니다. 어떤 경우에는 프로세스가 자동으로 재개될 수 있습니다. 예를 들어, GNU는 screen
일시 중단되었음을 감지하자마자 세션 리더를 즉시 재개합니다.
해당 터미널의 전경 프로세스 그룹에 SIGTSTP 신호를 보내려면 ^Z
다음을 수행합니다.
kill -s TSTP -- "-$pgid"
여기서는 $pgid
포그라운드 프로세스 그룹의 프로세스 그룹 ID입니다. 목록에 있는 Linux 및 BSD에서는 ps -o tpgid= -p "$pid"
해당 터미널을 제어 터미널로 사용하는 프로세스의 ID를 실행하여 찾을 수 있습니다. $pid
대부분의 시스템에서 이러한 프로세스는 tcgetpgrp()
.
두 경우 모두 SIGSTOP/SIGTSTP 대신 SIGCONT 신호를 전송하여 이러한 프로세스를 재개할 수 있습니다.
답변3
STOP
일시 중단하려는 프로세스에 신호를 보냅니다.
CONT
정지된 프로세스를 취소하기 위해 나중에 신호를 보낼 수 있습니다 .
예를 들어:
pkill -STOP terminal
그러면 모든 terminal
프로세스가 중단됩니다.
pkill -CONT terminal
그러면 이름이 지정된 모든 프로세스가 일시중단 해제됩니다 terminal
.