때때로 작업을 수행하는 백그라운드(터미널 창이나 TTY 없이)에서 실행되는 스크립트가 있습니다.
이제 Gnome 터미널 창을 열고 2개의 명령을 실행하는 다른 작업을 수행하는 동안 한 가지 작업을 수행하고 싶습니다. 실제로는 1개의 명령만 실행하면 되는데 명령의 출력을 볼 수 있도록 터미널 창을 열어두고 싶습니다. 명령은 stdout 및 stderr에 인쇄되며 시간이 지남에 따라 출력이 변경되므로 파일에 쓰고 일종의 알림을 보내는 것만으로는 작업이 제대로 수행되지 않습니다.
Gnome Terminal을 사용하여 창을 열고 1개의 명령을 실행할 수 있습니다.
gnome-terminal -e "sleep 10"
sleep
단순화를 위해 장기 실행 명령을 선택했습니다 . 그러나 다른 명령을 추가하면 터미널 창이 열리지 않습니다.
gnome-terminal -e "echo test; sleep 10"
이 문제에 대한 해결책은 무엇입니까?
답변1
gnome-terminal
따옴표 안의 모든 내용은 하나의 명령으로 처리되므로 많은 명령을 연속적으로 실행하려면 인터프리터(일반적으로 셸)를 시작하고 그 안에서 다음과 같은 작업을 수행해야 합니다.
gnome-terminal -e 'sh -c "echo test; sleep 10"'
그런데 명령이 작업을 완료한 후에도 창을 열어두기를 원할 수 있습니다. 이 경우 새 셸을 시작하거나 현재 셸을 새 셸로 바꾸면 됩니다.
gnome-terminal -e 'sh -c "echo test; sleep 10; exec bash"'
답변2
2020년 1월 현재 이 -e
옵션을 gnome-terminal
계속 사용할 수 있지만 경고가 발생합니다.
# '-e' 옵션은 더 이상 사용되지 않으며 이후 버전의 gnome-terminal에서 제거될 수 있습니다.
# 옵션을 종료하려면 "--"를 사용하고 그 뒤에 실행할 명령줄을 배치합니다.
경고 없이 이 두 명령을 실행할 수 있습니다.
gnome-terminal -- /bin/sh -c 'echo test; sleep 10'
그리고, 에서 언급했듯이이 답변, 나중에 창을 계속 열어 두려면 다음을 수행하십시오.
gnome-terminal -- /bin/sh -c 'echo test; sleep 10; exec bash'
답변3
명령을 외부 스크립트에 넣고 두 번째 그놈 터미널 기반 스크립트에서 실행하는 것이 더 좋았습니다.
스크립트 1: command.sh
#bin/bash
precommand
app
postcommand
그런 다음 gnome-terminal runscript.sh에서 이러한 스크립트를 실행하는 스크립트:
gnome-terminal --full-screen --hide-menubar -- /bin/sh commands.sh