Ctrl+D를 누르지 않고 "벽"을 종료하는 방법은 무엇입니까? [폐쇄]

Ctrl+D를 누르지 않고 "벽"을 종료하는 방법은 무엇입니까? [폐쇄]

저는 crontab을 사용하여 모든 사용자에게 메시지를 보내고 있습니다.

나는 썼다

*/1 * * * * wall $(bash some_shell_script.sh) 

Ctrl+D그런데 문제는 메시지를 끝내려면 항상 버튼을 눌러야 한다는 것입니다 .

이 문제를 어떻게 해결할 수 있나요?

답변1

명령 wall은 의 컨텍스트에서 실행됩니다 cron. 그것은 그 일을 하고 종료됩니다.

수신 디스플레이 장치(단말기)에서는 에서 알림을 받게 됩니다 wall. 이 알림은 터미널에서 수행하는 작업과 무관하므로 알림 메시지가 전송되는 동안 명령줄 프롬프트에 조용히 앉아 있으면 프롬프트를 덮어쓰지 않습니다. 프롬프트를 다시 보내려면 Enter 키를 눌러야 한다는 것을 알 수 있지만 실제로는 이것이 필요하지 않습니다. ​​일반적으로 명령을 입력하면 됩니다.

장면 타임라인

  1. 로그인되어 명령 프롬프트에 앉아 있습니다.
  2. 단말기로 알림이 wall전송되었습니다
  3. 입력 ls하고(클릭합니다.입력하다)

3단계에서는 눈에 띄는 프롬프트가 표시되지 않지만 셸은 여전히 ​​사용자 명령을 기다리고 있습니다.


crontab아니면 실제로 명령을 종료하는 방법에 대해 이야기하고 있을 수도 있습니다 . 이 예에서는 Ctrl/D를 사용하여 입력이 끝났음을 나타냅니다.

상상하다

  1. crontab
  2. 당신은 줄을 입력*/1 * * * * bash some_shell_script.sh | wall
  3. Ctrl/D를 눌러 crontab명령에 대한 데이터 입력을 종료합니다.

3단계의 Ctrl/D는 이와 아무 관련이 없습니다 wall. 또한 이 항목은 crontab1분마다 명령을 반복합니다. wall이것이 정말로 당신이 원하는 것인가요?

답변2

GNU 화면을 사용하면 종료하지 않고 백그라운드 프로세스를 격리할 수 있습니다.

  1. 배포판에 GNU Screen 설치
  2. screen -R wall
  3. wall $(bash some_shell_script.sh)
  4. Ctrl-A, Ctrl-D

관련 정보