열린 터미널에서 예약된 명령 실행

열린 터미널에서 예약된 명령 실행

cron또는 (AFAIK)을 사용하여 예약된 작업/스크립트를 at실행할 수 없습니다.~에특정 터미널: (리디렉션을 통해) 작업/스크립트의 출력을 특정 터미널로만 인쇄할 수 있습니다.

대신 이미 열려 있는 터미널에서 명령을 입력한 다음 를 누르는 것처럼 명령을 실행하도록 예약하고 싶습니다 Enter.

이것이 가능한가?


저는 Ubuntu 22.04를 실행하고 있지만 해결책이 있다면 특정 Linux 버전에 의존하지 않았으면 좋겠습니다.


자세한 내용: 로그인하거나 터미널을 연 상태에서 tty파일의 현재 내용을 인쇄하는 스크립트를 실행할 수 있습니다. 따라서 터미널은 항상 사용 가능하다고 가정합니다.

작업은 내가 하고 있는 일을 무시하고 실행되어 커서가 있는 곳에 출력을 인쇄해야 합니다(내가 시각화하고 있는 것과 겹치더라도 괜찮습니다). 사용자로부터 어떤 입력도 받을 필요가 없습니다. 텍스트 출력만 있습니다.

답변1

여기에 제공된 답변 중 하나를 사용할 수 있습니다.특정 시간/날짜까지 수면. 여기에 기존 질문에 게시된 솔루션을 복제할 이유가 없습니다.

SE 웹사이트에 게시된 질문을 참조할 수도 있습니다.다음번 특정 시간까지 수면

따라서 배경에 있을 것인지 전경에 있을 것인지 두 가지 옵션이 있습니다.

전망:

[birdie@localhost tmp]$ cat > test.sh
echo 123
[birdie@localhost tmp]$ chmod +x test.sh 
[birdie@localhost tmp]$ ( sleep 10; ./test.sh ) &
[1] 3689760
[birdie@localhost tmp]$ 
[birdie@localhost tmp]$ 
[birdie@localhost tmp]$ 
[birdie@localhost tmp]$ 123

[1]+  Done                    ( sleep 10; ./test.sh )

조금 추악하지만 작동합니다. 콘솔에서 무엇이든 읽으려는 경우 입력이 없기 때문에 일시 중지됩니다.

안전을 위해 stty -tostop이러한 명령을 실행하기 전에 실행하십시오. 이것은설명하다왜 필요한가요?

또는 배경:

nohup bash -c "sleep_command; command" &

특정 sleep 명령이 여러 줄이면 이를 사용하여 스크립트나 함수를 만들 수 있습니다. nohup그렇지 않으면 프로그램이 출력을 시도하자마자 일시 중지되기 때문에 필요합니다.

관련 정보