簡體   English   中英

尾文件直到進程退出

[英]Tail file till process exits

超級用戶處完成答案。

我正在嘗試修改它以偵聽多個字符串並回顯自定義消息,例如; '你的服務器成功啟動'等

我也試圖將它添加到另一個命令即pip

wait_str() {
  local file="$1"; shift
  local search_term="Successfully installed"; shift
  local search_term2='Exception'
  local wait_time="${1:-5m}"; shift # 5 minutes as default timeout

  (timeout $wait_time tail -F -n0 "$file" &) | grep -q "$search_term" && echo 'Custom success message' && return 0 || || grep -q "$search_term2" && echo 'Custom success message' && return 0

  echo "Timeout of $wait_time reached. Unable to find '$search_term' or '$search_term2' in '$file'"
  return 1
}

我想到的用法是:

pip install -r requirements.txt > /var/log/pip/dump.log && wait_str /var/log/pip/dump.log

為了澄清,我想讓wait_str在pip退出時停止拖尾,無論是否成功。

以下是一般答案, tail可以被任何導致行流的命令所取代。

如果不同的字符串需要不同的操作,請使用以

tail -f var/log/pip/dump.log |awk '/condition1/ {action for condition-1} /condition-2/ {action for condition-2} .....' 

如果多個條件需要相同的操作,請使用OR運算符將它們分開:

tail -f var/log/pip/dump.log |awk '/condition-1/ || /condition-2/ || /condition-n/ {take this action}'

基於評論:單個awk可以做到這一點。

tail -f /path/to/file |awk '/Exception/{ print "Worked"} /compiler/{ print "worked"}'  

要么

tail -f /path/to/file | awk '/Exception/||/compiler/{ print "worked"}' 

如果找到匹配則退出

tail -f logfile |awk '/Exception/||/compiler/{ print "worked";exit}'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM