메시지 대화 상자를 표시하는 Java 프로그램을 만들었습니다. 확인을 눌러 닫으면 프로그램 실행이 종료됩니다.
alarm.sh
그런 다음 프로그램을 실행하는 쉘 스크립트를 만들었습니다 . 나는 그것을 테스트했고 작동합니다 :
$ alarm.sh "-i It's time to ring up the revenue service"
하지만 실행하면:
$ echo "alarm.sh \"-i It's time to ring up the revenue service\"" | at 15:00
작업이 예정되어 있었지만 15시에 메시지 대화 상자가 나타나지 않았습니다. 왜? "at"은 쉘 스크립트를 어떻게 실행하며 그 제한 사항은 무엇입니까?
답변1
아니요, at
비대화형 스크립트만 실행할 수 있습니다.
at
이러한 스크립트는 명령이 시작된 터미널 에 연결되지 않고 실행됩니다 . 프로그램이 자체 stdout
및/또는 stderr
프로세스에서 무언가를 출력하는 경우 해당 출력이 이메일로 전송됩니다.
특히 스크립트를 시작할 때 일부 변수는 유지되지 않으므로 DISPLAY
시도가 실패합니다. 이메일을 확인하여 오류가 보고되었는지 확인할 수 있습니다. 그렇지 않거나 sendmail
유사한 경우 설치/구성되지 않을 수 있습니다.
명령이 실행될 때 현재 X11 디스플레이를 사용하려면 다음과 같이 설정할 수 있습니다.
echo "DISPLAY=$DISPLAY alarm.sh \"-i It's time to ring up the revenue service\"" | at 15:00
답변2
at
현재 작업 디렉터리가 없을 수 있습니다.그것은작업 목록. 전체 경로를 지정하십시오 alarm.sh
.
echo "/path/to/alarm.sh '-i There is no alarm; only Zuul'" | at 15:00