在bash中创建EventHandler行为

时间:2014-01-21 17:38:56

标签: bash event-handling

我有一个流A和一个值B.流包含时间戳,值B也是时间戳。有时使用包含新时间戳的新行更新流A. B的值保持不变。

目标是在时间A大于时间B时输出系统消息。此任务应在bash中完成。

我的想法是使用dbus-monitor "some arguments" | egrep --line-buffered "Timestamp:*" |监听文件A,然后是while read -r line ; do命令。

是否可以在bash脚本中实现两个“实时”动作?例如。一个EventHandler,为了在我的条件成立时立即触发系统消息?或者我必须使用cron吗? (系统消息也可能会延迟两秒......)

1 个答案:

答案 0 :(得分:2)

我对你想要发生什么事情有点不清楚,所以这可能只是答案的一半:

当然可以在bash中并行运行命令,这是我认为你在问题的后半部分要求的。给出两个shell函数:

some_command() {
    do_something
}

another_command() {
    do_something_else
}

然后您可以运行:

some_command &
another_command &
wait

此时,some_commandanother_command都在运行 后台和wait命令会导致脚本等待 直到两个后台进程都退出。

你可以获得更多的爱好者(例如,wait可以接受pid等待 一个特定的过程,您可以使用kill来停止后台 如果您需要提前终止,等等。)