![echo 명령을 at 명령과 함께 사용할 수 없는 이유는 무엇입니까?](https://linux55.com/image/61979/echo%20%EB%AA%85%EB%A0%B9%EC%9D%84%20at%20%EB%AA%85%EB%A0%B9%EA%B3%BC%20%ED%95%A8%EA%BB%98%20%EC%82%AC%EC%9A%A9%ED%95%A0%20%EC%88%98%20%EC%97%86%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
내가 입력할 때:
at now + 1 min
at>play /usr/share/sounds/startrek.wav
at>ctrl+d
작동하므로 1분 후에 실제로 소리가 재생됩니다.
그러나 내가 입력할 때:
at now + 1 min
at>echo "Teresa the green vegetable lover"
at>ctrl+d
셸에서 오류 응답을 받지 못하지만 1분 후에도 텍스트가 표시되지 않습니다.
답변1
at에 의해 실행되는 명령은 해당 명령이 등록된 터미널에서 실행되지 않습니다. 일반적으로 이는 의미가 없습니다. 터미널이 더 이상 존재하지 않거나 다른 사용자가 사용할 수 있습니다. 명령이 실행되는 동안 로그아웃될 수도 있습니다.
at 명령의 출력이 이메일로 전송됩니다. 이는 일부 이메일 프로그램에서 설정한 외부 POP 또는 IMAP 계정이 아닌 로컬 Unix 이메일입니다. 로컬 이메일이 설정되지 않으면 이 명령의 출력이 손실됩니다. 로컬 이메일이 설정되지 않은 경우,이 가이드도움이 될 수도 있습니다.
at 명령이 터미널과 상호 작용하도록 하려면 명시적인 리디렉션을 사용해야 합니다. 예를 들어:
echo "echo hello >$TTY" | at now + 1 min
이 코드 조각에서 변수는 TTY
셸에 의해 확장되므로 입력은 다음 at
과 같습니다 echo hello >/dev/pts/42
.