터미널( T1
)에서 실행 중인 프로세스가 5개 있습니다. 이 모든 작업은 백그라운드에서 실행되지만 많은 출력이 생성됩니다.
이제 다른 터미널( T2
)에서 명령을 사용하여 그 중 하나를 종료하고 싶습니다 KILL pid
. 그런 다음 몇 초 후에 60
동일한 프로세스를 다시 시작하려고 합니다(분명히 다른 PID를 얻게 됩니다).
내 스크립트는 다음과 같습니다
KILL 1524
sleep 60
myProcess
문제는 이 이후에도 T2
프로세스 출력으로 인해 터미널을 사용할 수 없게 된다는 것입니다. 동일한 작업을 다시 수행하려면 다른 터미널을 실행해야 합니다. 프로세스를 강제로 시작하는 것이 가능합니까 T1
?
답변1
그래서 당신은할 수 있는출력이 다른 터미널에 나타나도록 하십시오 - 비록 당신이 정말로 그렇게 하고 싶은지는 의심스럽습니다. 이를 위해:
출력하려는 터미널의 tty를 찾는 가장 쉬운 방법은 를 실행하는 것입니다
tty
. 다음과 같이 인쇄되어야 합니다:/dev/pts/42
.다른 터미널에서 다음을 실행하세요
command > /dev/pts/42 &
. stderr과 stdout을 모두 수행하려면 다음을 수행하십시오.command > /dev/pts/42 2>&1 &
이는 권한으로 인해 동일한 사용자에게만 작동하며 입력을 리디렉션하지 않습니다. 입력을 리디렉션하는 것은 쉘과 싸우기 때문에 실제로 작동하지 않습니다.
더 나은 해결책은 출력을 파일( )로 리디렉션한 다음 등을 command > outfile
사용하여 볼 수 있는 것입니다 less
. tail
또는 터미널 내에서 여러 세션을 사용 screen
/ 실행합니다.tmux