如何在不按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 步,您没有看到可见的提示,但 shell 仍在耐心等待您的命令。


或者,也许您实际上正在谈论如何退出crontab命令。在本例中,Ctrl/D 用于表示输入结束。

设想

  1. crontab
  2. 你输入行*/1 * * * * bash some_shell_script.sh | wall
  3. 您按 Ctrl/D 结束crontab命令的数据输入

请注意,步骤 3 中的 Ctrl/D 与 无关wall。此外,此条目将每分钟crontab重复您的命令。wall这真的是你想要的吗?

答案2

您可以使用 GNU screen 来隔离后台进程而不退出。

  1. 为您的发行版安装 GNU Screen
  2. screen -R wall
  3. wall $(bash some_shell_script.sh)
  4. Ctrl-A、Ctrl-D

相关内容