"at" 명령은 모든 종류의 쉘 스크립트를 실행할 수 있습니까?

"at" 명령은 모든 종류의 쉘 스크립트를 실행할 수 있습니까?

메시지 대화 상자를 표시하는 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

관련 정보