"at"(일괄) 작업 + 대화 상자 = 없음

"at"(일괄) 작업 + 대화 상자 = 없음

목표: 일정 시간이 지난 후 터미널에서 "메시지 상자"를 열 수 있도록 하는 것입니다. (Debian 기반 Linux 상자에서) 하지만:

> at now + 3 min
dialog --infobox "Time to attend to matters\!" 6 33

출력이 생성되지 않습니다. "터미널 열기 오류: 알 수 없음"이라는 시스템 이메일이 표시됩니다. 따라서 과거에는 작동했던 대화 상자의 일부 환경 변수 앞에 접두사를 붙였고 "at" 뒤의 명령은 이제 다음과 같습니다.

TERM=linux DISPLAY=":0.0" dialog --infobox "Seek ye the truth\!" 6 33

이제 생성된 유일한 것은 이스케이프 시퀀스로 가득 찬 시스템 이메일입니다. 아마도 대화 상자 자체의 출력인 것 같습니다. 대화에서 "at"을 잘 사용하려면 어떻게 해야 하나요? (감사해요!)

답변1

at무인으로 명령을 실행하기 위한 도구 입니다 cron. 사용자 세션이 존재하지 않거나 사용자가 다른 터미널에 로그인되어 있을 때 예약된 명령을 실행하여 atd데몬이 명령의 표준 출력을 읽고 이를 사용자에게 이메일로 보낼 수 있습니다. 사용자가 다른 작업을 수행하려면 표준 출력을 리디렉션해야 합니다. 그러나 명령이 어떻게든 터미널을 식별해야 하기 때문에 사용자 터미널로 리디렉션하는 것은 다소 까다롭습니다.

지연 후에 무언가를 표시하려면 다음과 같이 시도하십시오.

(sleep 10 && /bin/echo "game over") &

답변2

프로세스와 연결된 터미널(tty)이 dialog없기 때문에 사용된 명령이 작동하지 않습니다. 와 at마찬가지로 비대화형 환경을 의도했습니다. 상호작용할 터미널이 없으므로 설정이 도움이 되지 않습니다.cronatdialogTERM

만약 로그인되어 있고 X를 실행하고 있다면,할 수 있는dialog별도의 터미널에 나타나도록 하세요 . 예를 들어:

at now -f foo

foo어디서

xterm -display :0 -e dialog --msgbox "Seek ye the truth!" 6 33 &

충분히 잘 작동합니다:

at-script에서 대화 상자 실행

그러나 몇 가지 변경 사항이 추가되었습니다.

  • 하나정보화면에 깜박인 후 빠르게 사라집니다. 사용하다메세지 박스대신에
  • at/batch 작업이 완료될 때까지 기다리지 마세요. "&"를 사용하세요.

응답이 필요한 경우 dialog일반적으로 텍스트 인터페이스를 표준 출력에 쓰고 응답을 표준 오류에 쓴다는 점을 기억해야 합니다. 이 --stdout옵션을 사용하여 되돌릴 수 있습니다(스크립트를 더 간단하게 만듭니다). (zenity는 이 옵션을 지원하지 않으므로 스크립트 해결 방법을 통해 이를 조정해야 할 수도 있습니다).

추가 자료:

관련 정보