如何在新终端窗口中运行脚本并在 30 秒后关闭

如何在新终端窗口中运行脚本并在 30 秒后关闭

我写了一个脚本,我正在运行 xmonad 和默认终端白蚁;只是说它是否重要:),也许 xmonad 中有一个解决方案。

, ((altMask, xK_x),
     spawn "termite --hold -e /home/emre/pipix.sh")

当我在终端输入时

timeout 30 script.sh

看起来有效。但是当我输入时

termite --hold -e timeout 5 pipi.sh

我收到此警告消息

Try 'timeout --help' for more information.

我做错了什么或者我怎样才能让它发挥作用?

答案1

通常,如果在 CLI 上作为单个选项传递的命令中有空格,我们通常需要将命令用引号引起来,以便程序知道这是timeout 5 pipi.sh单个命令,而不是三个单独的输入选项。

termite --hold -e "timeout 5 pipi.sh"

请注意,这是我的猜测,基于在命令行上将一行代码传递给程序的常见问题。

答案2

我看到这篇文章,我想将其发布在这里。

https://www.howtoing.com/run-linux-command-with-time-limit-and-timeout/

任何需要给命令设置时间限制的人都需要安装“时间限制”并在命令之前使用

我的在 xmonad.hs 中如下;

  , ((altMask, xK_c),
     spawn "timelimit -t25 termite --hold -e /home/emre/pipi.sh")

答案3

以下内容经过测试并按预期工作。

#!/bin/sh
temp=$$

(sleep 30; kill $temp; exit) &

echo "Hello. Testing timeout with ed."
# Your never ending code goes here instead. 
# Because ed is a new process you will have to kill it.
# killall ed would be replaced with the program name. killall XXX
(sleep 30; killall ed; exit) &

# run ed and put it in append mode and add a few characters.
# ed is never given the . and q! commands so it waits. 
ed

a

1234

echo "Should not get here"
# Should get a Terminated message and script exits in 30 seconds.
# And the process for  ed  is killed is in 30 seconds..

相关内容