短时间后继续在交互式会话中重新启动应用程序

短时间后继续在交互式会话中重新启动应用程序

所以我知道这是一个有点复杂的用例,可能没有太多实际应用,所以不幸的是到目前为止我无法找到很多有用的指针。

基本上,我希望有一个仅终端会话,该会话在登录后自动运行 CLI 应用程序,并在退出时经过设定的时间(例如 1 分钟)后不断重新启动该应用程序。在应用程序退出期间,外壳应该可以正常使用。

这是我当前的设置(到目前为止效果很好):

  • 我有一个仅终端会话(没有 GUI,在本例中是 linux mint)。
  • 登录后,我会自动运行交互式 CLI 应用程序(例如,将其添加到 .bashrc 即可轻松完成)
  • 用户退出我的 CLI 应用程序后,他们会回到常规 bash 终端并能够运行命令(正如他们应该的那样)

现在是我到目前为止无法弄清楚的棘手部分:

  • 如何在短时间内自动重新启动用户终端中的应用程序,同时在达到超时之前仍保持终端可用?
  • 我们可以假设用户不会在 bash 中执行任何可能造成破坏的操作(例如启动其他 shell、退出正在运行的进程或注销)。他们必须能够运行 1-2 个其他快速完成的命令,但除此之外别无其他。

我尝试通过运行一个脚本来完成此任务,该脚本(在循环中)在运行应用程序和运行timeout应该启动新 bash 的命令之间交替,但无法正确执行。似乎无法使用超时命令启动交互式 bash 会话。因此,这可能是一种可能的方法(欢迎提供正确语法的指针),但任何其他方法或想法也完全没问题。

答案1

我在这里有与庇护所相同的想法考虑这个伪逻辑

answersRoomOneArray = {puzzleOneAnswer, puzzleTwoAnswer ... puzzleNAnswer}
# Room 1 Puzzles

puzzleOne () 
# Function to return a value
return puzzleOneAnswer

# Continue puzzles until Array is Full
...
if arrayCorrectRoomOne {} = answersRoomOne{} then
    unlockDoor ()
else
   punish ()
fi

您可以在每个房间终端中使用上述格式,并将其arrayCorrect存储在参与者无法访问的目录中的某个位置,以防他们是智能终端。使用这种模块化方法可以让您不需要“控制器脚本”而无需计时器。如果脚本需要重新启动,则清除屏幕并在punish()函数中重新启动它。如果您只想在“死亡”之前尝试这么多次,请添加一个计数器来计算punish()达到的次数,并在 X 次尝试后“杀死”参与者。

相关内容