新しいターミナルウィンドウでスクリプトを実行し、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から単一のオプションとして渡されるコマンドにスペースがある場合は、プログラムがこれが3つのtimeout 5 pipi.sh個別の入力オプションではなく単一のコマンドであることを知るために、コマンドを引用符で囲む必要があります。

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

これは、コマンドラインからプログラムにコード行を渡す一般的な問題に基づく私の推測です。

答え2

この記事を見てここに載せるべきだと思いました。

https://www.tecmint.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..

視野

関連情報