2010-10-24 89 views
0

該命令是否適用於Linux?是否存在runonce命令來限制命令執行

runonce --dampen 300 echo "hello" 

該命令將採取一個命令運行和可選的標準,以限制其頻繁執行。

dampen選項等待300毫秒,然後運行該命令。此命令的任何其他執行都會合併爲一次運行。這允許您以通用方式摺疊事件併合並它們的執行。

如果您運行

runonce --dampen 300 echo "hello" 
runonce --dampen 300 echo "hello" 
runonce --dampen 300 echo "hello" 

從三個不同的子炮彈在大致相同的時間,第一個就住在300毫秒和打印打招呼。另外兩個人會立即回來,什麼都不做。

如果存在,該工具的名稱或其項目頁面的鏈接是什麼?

回答

1

一個可能的解決方案,從flock手冊頁莫名其妙地採取將是:

#!/bin/sh 
# name me 'runonce' 

timeout="$1"; shift 
command="$1"; shift 
hash=$(echo "$command" "[email protected]" | md5sum) 
(
    flock -xw0 3 || exit 
    sleep "$timeout" 
    "$command" "[email protected]" 
) 3>"/tmp/$hash" 

用法示例:

runonce 10 echo "hello" 

其中10是秒數(不是毫秒)。

編輯: 介紹散列上commad +參數

+0

這是一個很酷的解決方案。我沒有說明,但是runonce - tampen echo「goodbye」不應該被阻止,因爲它是另一個不同的命令。使用你的flock腳本解決方案,我想你可以創建一個鎖定文件,這是你的命令的散列,所以對命令的影響會有所不同。 – Ozten 2010-10-24 17:48:41

+0

我已考慮到您的建議,並進行了相應修改。 – enzotib 2010-10-24 17:59:16

0

我想你可能想看看cron,看看這符合您的要求

+0

'at'可能接近,但我不認爲它支持加入邏輯的OP請求。 – dmckee 2010-10-24 16:52:59