久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

命令行任務(wù)完成提醒器:輕量級(jí)監(jiān)聽(tīng)與通知方案

命令行任務(wù)完成提醒器:輕量級(jí)監(jiān)聽(tīng)與通知方案 1. 從“盯著終端發(fā)呆”到“讓終端喊我”一個(gè)提醒器的誕生背景如果你跟我一樣日常大量時(shí)間泡在命令行里用各種代碼輔助工具跑任務(wù)那你一定經(jīng)歷過(guò)這種場(chǎng)景敲下一段指令工具開(kāi)始吭哧吭哧干活你盯著屏幕等結(jié)果等了半分鐘沒(méi)動(dòng)靜于是順手切到瀏覽器刷了兩條資訊再切回來(lái)發(fā)現(xiàn)任務(wù)早就跑完了而你的注意力已經(jīng)碎了一地。更糟糕的是有些任務(wù)跑完不跑完你根本不知道只能反復(fù)切窗口去確認(rèn)這種“人肉輪詢(xún)”的方式效率低得令人發(fā)指。這個(gè)項(xiàng)目的出發(fā)點(diǎn)特別樸素讓工具在任務(wù)完成的那一刻主動(dòng)通知我而不是我像個(gè)哨兵一樣守著它。標(biāo)題里提到的“完成提醒器”本質(zhì)上就是一個(gè)輕量級(jí)的任務(wù)狀態(tài)監(jiān)聽(tīng)與通知轉(zhuǎn)發(fā)機(jī)制。它要解決的核心問(wèn)題有三個(gè)第一任務(wù)什么時(shí)候結(jié)束的我得第一時(shí)間知道第二通知方式要足夠顯眼不能是那種一閃而過(guò)、錯(cuò)過(guò)就沒(méi)了的小提示第三整個(gè)方案要足夠輕不能為了一個(gè)提醒功能引入一堆重型依賴(lài)把原本清爽的工作流搞得臃腫不堪。適合誰(shuí)來(lái)參考這篇內(nèi)容如果你日常使用命令行工具跑代碼生成、批量處理、自動(dòng)化腳本并且希望在這些任務(wù)完成時(shí)獲得一個(gè)可靠的、可定制的提醒那這篇分享就是寫(xiě)給你的。哪怕你只是偶爾跑一個(gè)耗時(shí)較長(zhǎng)的命令這套思路也能幫你省下不少無(wú)謂的等待時(shí)間。我接下來(lái)會(huì)從設(shè)計(jì)思路、技術(shù)選型、具體實(shí)現(xiàn)、踩坑記錄幾個(gè)維度把這個(gè)提醒器拆開(kāi)揉碎講清楚你可以直接照著復(fù)現(xiàn)也可以根據(jù)自己的習(xí)慣做二次改造。2. 提醒器的核心設(shè)計(jì)邏輯為什么不用現(xiàn)成的方案2.1 現(xiàn)成方案為什么不夠用市面上其實(shí)不缺通知工具操作系統(tǒng)自帶的通知中心、各種命令行下的notify-send、終端復(fù)用工具自帶的狀態(tài)欄都能在一定程度上告訴你“任務(wù)結(jié)束了”。但實(shí)際用下來(lái)它們各有各的局限。系統(tǒng)通知中心的問(wèn)題在于它太容易被忽略——尤其是當(dāng)你全屏開(kāi)著編輯器或者瀏覽器的時(shí)候一個(gè)角落里的橫幅彈出來(lái)幾秒鐘就消失了等你注意到的時(shí)候已經(jīng)錯(cuò)過(guò)了。終端狀態(tài)欄倒是常駐但它要求你始終把終端窗口放在可見(jiàn)范圍內(nèi)這又回到了“必須盯著”的老問(wèn)題上。還有一個(gè)更現(xiàn)實(shí)的痛點(diǎn)很多代碼輔助工具在執(zhí)行任務(wù)時(shí)輸出是流式的你很難通過(guò)簡(jiǎn)單的“進(jìn)程是否退出”來(lái)判斷任務(wù)是否真正完成。有些工具會(huì)在結(jié)束時(shí)輸出特定的結(jié)束標(biāo)記有些則只是安靜地停止輸出進(jìn)程卻還掛著。如果只是粗暴地監(jiān)聽(tīng)進(jìn)程退出要么誤報(bào)要么漏報(bào)。所以一個(gè)真正好用的提醒器必須能夠理解任務(wù)的生命周期而不是簡(jiǎn)單地看進(jìn)程死活。2.2 我的設(shè)計(jì)原則輕量、可組合、不侵入基于上面的分析我給自己定了三條設(shè)計(jì)原則。第一是輕量整個(gè)提醒器最好就是一個(gè)腳本或者一個(gè)小工具不依賴(lài)復(fù)雜的運(yùn)行時(shí)環(huán)境啟動(dòng)開(kāi)銷(xiāo)要小到可以忽略不計(jì)。第二是可組合提醒的觸發(fā)條件、通知的方式、通知的內(nèi)容都應(yīng)該是可以自由拼接的模塊而不是寫(xiě)死的一套邏輯。第三是不侵入它不應(yīng)該要求我改變?cè)械墓ぞ呤褂昧?xí)慣而是以“包裹”或者“旁路監(jiān)聽(tīng)”的方式工作原來(lái)的命令該怎么敲還怎么敲。這三條原則直接決定了后續(xù)的技術(shù)選型。輕量意味著我傾向于用 Shell 腳本或者單一二進(jìn)制的小工具來(lái)實(shí)現(xiàn)而不是搞一個(gè)常駐的后臺(tái)服務(wù)??山M合意味著我要把“檢測(cè)任務(wù)完成”和“發(fā)送通知”這兩件事解耦中間通過(guò)一個(gè)標(biāo)準(zhǔn)化的接口傳遞事件。不侵入則意味著我需要在命令執(zhí)行的外層做文章比如用一個(gè)包裝腳本來(lái)接管命令的執(zhí)行和結(jié)束。2.3 任務(wù)完成的判定比想象中更微妙這里要特別說(shuō)一下“任務(wù)完成”的判定邏輯因?yàn)檫@是整個(gè)提醒器最核心也最容易出問(wèn)題的地方。最直覺(jué)的做法是監(jiān)聽(tīng)子進(jìn)程的退出碼進(jìn)程退出且退出碼為 0 就認(rèn)為成功非 0 就認(rèn)為失敗。但實(shí)際場(chǎng)景遠(yuǎn)比這復(fù)雜。有些工具在任務(wù)完成后會(huì)進(jìn)入一個(gè)交互式的等待狀態(tài)進(jìn)程并沒(méi)有退出但任務(wù)其實(shí)已經(jīng)完成了。還有些工具會(huì)把實(shí)際的工作委托給一個(gè)后臺(tái)進(jìn)程前臺(tái)進(jìn)程很快就返回了但后臺(tái)任務(wù)還在跑。我的處理方式是采用“多信號(hào)融合”的判定策略。主信號(hào)是進(jìn)程退出這是最可靠的。輔助信號(hào)包括輸出流中是否出現(xiàn)了預(yù)定義的結(jié)束標(biāo)記、輸出是否在超過(guò)一定時(shí)間后不再增長(zhǎng)、以及進(jìn)程的 CPU 占用是否降到了接近零。這幾個(gè)信號(hào)通過(guò)一個(gè)簡(jiǎn)單的加權(quán)邏輯組合起來(lái)只有當(dāng)主信號(hào)或者足夠強(qiáng)的輔助信號(hào)出現(xiàn)時(shí)才判定任務(wù)完成。這樣既避免了誤報(bào)也減少了漏報(bào)。當(dāng)然這套邏輯需要針對(duì)不同的工具做微調(diào)后面我會(huì)講怎么調(diào)。3. 技術(shù)選型與實(shí)現(xiàn)路徑從 Shell 包裝到跨平臺(tái)通知3.1 為什么選擇 Shell 包裝腳本作為入口在實(shí)現(xiàn)路徑上我最終選擇了用一個(gè) Shell 包裝腳本來(lái)做入口。原因很簡(jiǎn)單Shell 是命令行的通用語(yǔ)言任何工具都可以被一個(gè) Shell 腳本包裹起來(lái)執(zhí)行不需要工具本身提供任何插件機(jī)制或者 API。包裝腳本的職責(zé)很清晰接管用戶輸入的命令在子進(jìn)程中執(zhí)行它同時(shí)監(jiān)聽(tīng)子進(jìn)程的狀態(tài)和輸出在判定任務(wù)完成后觸發(fā)通知。這個(gè)包裝腳本的核心結(jié)構(gòu)大概是這樣的首先解析用戶傳入的命令和參數(shù)然后啟動(dòng)一個(gè)子進(jìn)程來(lái)執(zhí)行這個(gè)命令同時(shí)把子進(jìn)程的標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤重定向到一個(gè)臨時(shí)的管道或者文件里主進(jìn)程則循環(huán)讀取這些輸出并做分析。當(dāng)子進(jìn)程退出或者滿足其他完成條件時(shí)包裝腳本調(diào)用通知模塊發(fā)送提醒。整個(gè)過(guò)程中用戶看到的輸出和直接執(zhí)行命令幾乎沒(méi)有區(qū)別體驗(yàn)是無(wú)感的。#!/usr/bin/env bash # 簡(jiǎn)化的包裝腳本骨架 CMD$ TMP_OUT$(mktemp) # 在后臺(tái)執(zhí)行命令輸出同時(shí)寫(xiě)入臨時(shí)文件和終端 eval $CMD 21 | tee $TMP_OUT CMD_PID$! # 等待命令結(jié)束 wait $CMD_PID EXIT_CODE$? # 觸發(fā)通知 notify_done $CMD $EXIT_CODE $TMP_OUT rm -f $TMP_OUT上面這段代碼只是一個(gè)最簡(jiǎn)化的骨架實(shí)際實(shí)現(xiàn)中還需要處理信號(hào)轉(zhuǎn)發(fā)、超時(shí)控制、輸出分析等細(xì)節(jié)。但核心思路就是這樣包裝、執(zhí)行、監(jiān)聽(tīng)、通知。3.2 通知通道的選擇終端內(nèi)提醒與系統(tǒng)級(jí)提醒的取舍通知通道的選擇上我做了分層設(shè)計(jì)。第一層是終端內(nèi)提醒這是最輕量的直接在終端里輸出一段醒目的文字配合終端標(biāo)題的變化和響鈴字符。終端標(biāo)題的變化特別有用因?yàn)楹芏嘟K端模擬器會(huì)在標(biāo)簽頁(yè)上顯示當(dāng)前標(biāo)題任務(wù)完成后把標(biāo)題改成“任務(wù)完成”你一眼就能從一堆標(biāo)簽頁(yè)里看到哪個(gè)完成了。響鈴字符則是最后的保險(xiǎn)即使你沒(méi)看屏幕聽(tīng)到聲音也會(huì)下意識(shí)地看一眼。第二層是系統(tǒng)級(jí)提醒這需要調(diào)用操作系統(tǒng)的通知接口。在 Linux 上可以用notify-send在 macOS 上可以用osascript調(diào)用通知中心在 Windows 上可以用 PowerShell 的 BurntToast 模塊或者簡(jiǎn)單的消息框。這一層的優(yōu)勢(shì)是提醒更顯眼即使終端被最小化了也能看到。但它的缺點(diǎn)是依賴(lài)具體的操作系統(tǒng)需要做平臺(tái)適配。第三層是可選的擴(kuò)展通道比如發(fā)送到某個(gè)消息隊(duì)列、寫(xiě)入日志文件、或者觸發(fā)一個(gè)自定義的鉤子腳本。這一層是為了滿足更復(fù)雜的自動(dòng)化需求比如任務(wù)完成后自動(dòng)觸發(fā)下一個(gè)流程。我把它設(shè)計(jì)成可插拔的默認(rèn)不啟用需要的時(shí)候在配置里打開(kāi)就行。通知層級(jí)實(shí)現(xiàn)方式優(yōu)點(diǎn)缺點(diǎn)終端內(nèi)提醒標(biāo)題修改、響鈴、彩色輸出零依賴(lài)、即時(shí)終端不可見(jiàn)時(shí)無(wú)效系統(tǒng)級(jí)提醒系統(tǒng)通知接口顯眼、跨窗口需平臺(tái)適配擴(kuò)展通道鉤子腳本、消息隊(duì)列靈活、可自動(dòng)化配置復(fù)雜3.3 輸出分析的實(shí)現(xiàn)細(xì)節(jié)如何識(shí)別“任務(wù)真的結(jié)束了”輸出分析這塊是整個(gè)提醒器里技術(shù)含量最高的部分。我的做法是維護(hù)一個(gè)滑動(dòng)窗口記錄最近一段時(shí)間內(nèi)的輸出行數(shù)和字節(jié)數(shù)。如果輸出在連續(xù) N 秒內(nèi)沒(méi)有增長(zhǎng)并且進(jìn)程的 CPU 占用低于某個(gè)閾值就認(rèn)為任務(wù)可能已經(jīng)完成。這個(gè) N 和閾值需要根據(jù)具體工具的行為來(lái)調(diào)。比如有些工具在生成代碼時(shí)會(huì)有一段“思考”時(shí)間期間沒(méi)有任何輸出但任務(wù)并沒(méi)有結(jié)束這時(shí)候如果把 N 設(shè)得太小就會(huì)誤報(bào)。為了減少誤報(bào)我還加入了一個(gè)“結(jié)束標(biāo)記”機(jī)制。很多工具在任務(wù)真正完成時(shí)會(huì)輸出一些特定的字符串比如“Done”、“Completed”、“Finished”之類(lèi)的。我允許用戶在配置里定義一組正則表達(dá)式當(dāng)輸出匹配到這些模式時(shí)就提高完成判定的置信度。這個(gè)機(jī)制不是必須的但配上之后準(zhǔn)確率會(huì)明顯提升。另外對(duì)于退出碼的處理也要小心有些工具即使任務(wù)成功也會(huì)返回非零退出碼所以退出碼只能作為一個(gè)參考信號(hào)不能作為唯一依據(jù)。4. 實(shí)戰(zhàn)部署把提醒器接入日常工具鏈4.1 安裝與基礎(chǔ)配置部署這個(gè)提醒器的第一步是把它放到一個(gè)方便調(diào)用的位置。我習(xí)慣在用戶目錄下建一個(gè)~/bin目錄把腳本放進(jìn)去然后確保這個(gè)目錄在PATH環(huán)境變量里。這樣在任何地方都能直接調(diào)用。腳本本身不需要編譯就是一個(gè)純文本文件給它加上可執(zhí)行權(quán)限就行。mkdir -p ~/bin cp task-notifier.sh ~/bin/task-notifier chmod x ~/bin/task-notifier # 確保 ~/bin 在 PATH 中 export PATH$HOME/bin:$PATH配置文件我放在了~/.config/task-notifier/config下采用簡(jiǎn)單的鍵值對(duì)格式方便手動(dòng)編輯也方便腳本解析。配置項(xiàng)包括通知方式終端內(nèi)、系統(tǒng)級(jí)、兩者都開(kāi)、靜默超時(shí)時(shí)間多少秒無(wú)輸出判定為可能完成、結(jié)束標(biāo)記正則、是否啟用響鈴、是否修改終端標(biāo)題等。這些配置都有合理的默認(rèn)值不配置也能直接用但調(diào)一下會(huì)更貼合自己的使用習(xí)慣。4.2 接入代碼輔助工具的幾種姿勢(shì)接入方式取決于你使用的具體工具。最通用的方式是用別名alias或者函數(shù)function來(lái)包裝原來(lái)的命令。比如你原來(lái)習(xí)慣敲codex run現(xiàn)在可以定義一個(gè)別名codex指向task-notifier codex這樣每次調(diào)用都會(huì)自動(dòng)經(jīng)過(guò)提醒器。這種方式的優(yōu)點(diǎn)是透明你不需要改變?nèi)魏尾僮髁?xí)慣。# 在 .bashrc 或 .zshrc 中添加 alias codextask-notifier codex alias claudetask-notifier claude另一種方式是在腳本或者 Makefile 里顯式調(diào)用提醒器。比如你有一個(gè)自動(dòng)化腳本里面調(diào)用了代碼輔助工具那就可以把調(diào)用命令改成task-notifier 原命令。這種方式更可控適合在 CI 或者批處理場(chǎng)景下使用。還有一種比較極端的做法是直接修改工具的啟動(dòng)腳本但我不推薦這么做因?yàn)楣ぞ呱?jí)后修改可能會(huì)丟失而且會(huì)影響所有使用場(chǎng)景不夠靈活。4.3 針對(duì)不同工具的完成判定調(diào)參不同的代碼輔助工具其輸出模式和任務(wù)生命周期差異很大所以完成判定的參數(shù)需要分別調(diào)。我拿兩個(gè)典型場(chǎng)景來(lái)說(shuō)明。第一個(gè)場(chǎng)景是那種“一次性輸出”的工具你給它一個(gè)指令它思考幾秒后一次性吐出結(jié)果然后進(jìn)程退出。這種場(chǎng)景最簡(jiǎn)單直接用進(jìn)程退出作為完成信號(hào)就行靜默超時(shí)設(shè)短一點(diǎn)也沒(méi)關(guān)系。第二個(gè)場(chǎng)景是“流式輸出”的工具它會(huì)一邊生成一邊輸出中間可能有停頓。這種場(chǎng)景下靜默超時(shí)就不能設(shè)得太短否則會(huì)把正常的思考停頓誤判為完成。我的經(jīng)驗(yàn)值是設(shè)到 15 到 30 秒具體看工具的響應(yīng)速度。同時(shí)如果工具在結(jié)束時(shí)會(huì)有明確的結(jié)束語(yǔ)一定要把那個(gè)結(jié)束語(yǔ)加到結(jié)束標(biāo)記正則里這樣判定會(huì)準(zhǔn)確得多。調(diào)參的過(guò)程其實(shí)就是觀察幾次實(shí)際運(yùn)行記錄下從“最后一次輸出”到“進(jìn)程退出”之間的時(shí)間間隔然后把這個(gè)間隔的 1.5 倍左右作為靜默超時(shí)值。提示調(diào)參時(shí)建議先把通知方式設(shè)為“僅終端內(nèi)提醒”這樣調(diào)試信息不會(huì)彈得到處都是等參數(shù)調(diào)穩(wěn)了再開(kāi)啟系統(tǒng)級(jí)通知。5. 踩坑記錄那些讓我半夜爬起來(lái)改腳本的瞬間5.1 信號(hào)轉(zhuǎn)發(fā)沒(méi)做好導(dǎo)致 CtrlC 失效這是最早踩的一個(gè)坑而且影響很大。包裝腳本啟動(dòng)子進(jìn)程后如果用戶按了 CtrlC信號(hào)默認(rèn)是發(fā)給包裝腳本本身的子進(jìn)程收不到結(jié)果就是包裝腳本退出了但子進(jìn)程還在后臺(tái)跑變成了一個(gè)孤兒進(jìn)程。更糟糕的是有時(shí)候子進(jìn)程會(huì)繼續(xù)占用終端導(dǎo)致終端狀態(tài)混亂。修復(fù)方法是在包裝腳本里捕獲信號(hào)并轉(zhuǎn)發(fā)給子進(jìn)程。trap kill -INT $CMD_PID 2/dev/null INT trap kill -TERM $CMD_PID 2/dev/null TERM加上這兩行之后CtrlC 就能正常傳遞給子進(jìn)程了。但這里還有個(gè)細(xì)節(jié)如果子進(jìn)程有自己的子進(jìn)程樹(shù)光殺直接子進(jìn)程可能不夠需要用進(jìn)程組的方式來(lái)處理。我后來(lái)的做法是用setsid讓子進(jìn)程成為新會(huì)話的組長(zhǎng)然后殺整個(gè)進(jìn)程組。這個(gè)改動(dòng)之后信號(hào)處理就穩(wěn)了。5.2 輸出重定向?qū)е碌木彌_問(wèn)題第二個(gè)坑是輸出緩沖。為了讓包裝腳本能分析輸出我把子進(jìn)程的輸出重定向到了管道。但很多程序在檢測(cè)到輸出不是終端時(shí)會(huì)啟用全緩沖模式也就是攢夠一定量的數(shù)據(jù)才真正寫(xiě)出來(lái)。這就導(dǎo)致包裝腳本看到的輸出是滯后的靜默超時(shí)的判定完全失準(zhǔn)。修復(fù)方法是給子進(jìn)程設(shè)置一個(gè)偽終端pty讓它以為自己是在終端里運(yùn)行這樣就會(huì)用行緩沖模式輸出是實(shí)時(shí)的。在 Shell 里實(shí)現(xiàn) pty 稍微麻煩一點(diǎn)可以用script命令來(lái)包一層或者用stdbuf來(lái)強(qiáng)制行緩沖。stdbuf更簡(jiǎn)單但只對(duì)使用了標(biāo)準(zhǔn) C 庫(kù)緩沖的程序有效。對(duì)于更復(fù)雜的情況還是得上 pty。我最后的方案是優(yōu)先用stdbuf如果發(fā)現(xiàn)輸出還是滯后就切到script方案。這個(gè)坑讓我意識(shí)到輸出分析的前提是能拿到實(shí)時(shí)的輸出否則一切判定都是空中樓閣。5.3 系統(tǒng)通知在特定桌面環(huán)境下的兼容性系統(tǒng)級(jí)通知這塊Linux 下的notify-send看起來(lái)簡(jiǎn)單但在不同的桌面環(huán)境下行為差異很大。有的桌面環(huán)境會(huì)正常彈出通知有的則會(huì)把通知丟進(jìn)一個(gè)不顯眼的消息中心還有的干脆不顯示。我測(cè)試了幾種常見(jiàn)的桌面環(huán)境發(fā)現(xiàn)通知的顯示效果和持久性都不一樣。最后的應(yīng)對(duì)策略是不依賴(lài)單一通知方式而是同時(shí)觸發(fā)終端內(nèi)提醒和系統(tǒng)通知并且把系統(tǒng)通知的失敗當(dāng)作非致命錯(cuò)誤處理不讓它影響主流程。另外通知的內(nèi)容也要注意。有些系統(tǒng)對(duì)通知標(biāo)題和正文的長(zhǎng)度有限制太長(zhǎng)了會(huì)被截?cái)?。我一開(kāi)始把整個(gè)命令都塞進(jìn)通知標(biāo)題里結(jié)果在某個(gè)環(huán)境下只顯示了前幾個(gè)字符完全看不出是哪個(gè)任務(wù)完成了。后來(lái)改成標(biāo)題只放“任務(wù)完成”或者“任務(wù)失敗”正文里放命令的簡(jiǎn)短摘要和執(zhí)行時(shí)長(zhǎng)這樣既清晰又不會(huì)超長(zhǎng)。5.4 長(zhǎng)時(shí)間運(yùn)行任務(wù)的資源占用問(wèn)題還有一個(gè)不太起眼但實(shí)際影響體驗(yàn)的問(wèn)題包裝腳本本身在長(zhǎng)時(shí)間運(yùn)行時(shí)的資源占用。因?yàn)橐掷m(xù)讀取輸出并做分析如果實(shí)現(xiàn)得不好CPU 占用會(huì)一直居高不下。我最初的實(shí)現(xiàn)是用一個(gè)忙等待循環(huán)去讀輸出結(jié)果跑一個(gè)幾小時(shí)的任務(wù)包裝腳本自己就吃掉了不少 CPU。后來(lái)改成了基于read的阻塞讀取沒(méi)有輸出時(shí)就阻塞在那里幾乎不占 CPU。這個(gè)改動(dòng)雖然簡(jiǎn)單但對(duì)長(zhǎng)時(shí)間任務(wù)的體驗(yàn)提升很明顯。6. 進(jìn)階玩法讓提醒器更懂你的工作流6.1 根據(jù)任務(wù)類(lèi)型定制通知內(nèi)容基礎(chǔ)的提醒器只會(huì)告訴你“任務(wù)完成了”但你可以讓它更聰明一點(diǎn)。我的做法是在包裝命令的時(shí)候額外傳入一個(gè)任務(wù)標(biāo)簽比如task-notifier --label 生成文檔 -- codex run。這樣通知里就會(huì)帶上這個(gè)標(biāo)簽?zāi)阋谎劬椭朗悄膫€(gè)任務(wù)完成了。標(biāo)簽可以手動(dòng)指定也可以根據(jù)命令內(nèi)容自動(dòng)推斷。比如檢測(cè)到命令里包含test就標(biāo)記為“測(cè)試任務(wù)”包含build就標(biāo)記為“構(gòu)建任務(wù)”。這個(gè)功能實(shí)現(xiàn)起來(lái)很簡(jiǎn)單就是在通知模塊里加一個(gè)標(biāo)簽字段但用起來(lái)體驗(yàn)提升很大。6.2 任務(wù)完成后的自動(dòng)后續(xù)動(dòng)作提醒器最有價(jià)值的擴(kuò)展方向是“任務(wù)完成后自動(dòng)做點(diǎn)什么”。比如任務(wù)成功后自動(dòng)打開(kāi)生成的文件任務(wù)失敗后自動(dòng)把錯(cuò)誤日志收集到一個(gè)固定位置或者任務(wù)完成后自動(dòng)觸發(fā)下一個(gè)流程。這些都可以通過(guò)鉤子腳本來(lái)實(shí)現(xiàn)。我在配置里加了一個(gè)on_success和on_failure兩個(gè)鉤子分別指定任務(wù)成功和失敗時(shí)要執(zhí)行的命令。鉤子腳本會(huì)接收到任務(wù)命令、退出碼、輸出文件路徑等參數(shù)可以自由發(fā)揮。# 配置示例 on_success~/bin/hooks/open-result.sh on_failure~/bin/hooks/collect-error.sh這個(gè)機(jī)制讓提醒器從一個(gè)單純的“通知工具”變成了一個(gè)“工作流節(jié)點(diǎn)”你可以用它來(lái)串聯(lián)起更復(fù)雜的自動(dòng)化流程。比如跑完代碼生成后自動(dòng)格式化格式化完成后自動(dòng)跑測(cè)試測(cè)試通過(guò)后自動(dòng)提交整個(gè)鏈條都可以用鉤子串起來(lái)。6.3 多任務(wù)并發(fā)時(shí)的通知去重與聚合當(dāng)你同時(shí)跑多個(gè)任務(wù)時(shí)通知可能會(huì)變得很吵。我遇到過(guò)同時(shí)跑五個(gè)任務(wù)結(jié)果通知一個(gè)接一個(gè)彈出來(lái)反而造成了干擾。解決思路有兩個(gè)一是去重如果同一個(gè)任務(wù)在短時(shí)間內(nèi)重復(fù)完成只通知一次二是聚合把一段時(shí)間內(nèi)完成的任務(wù)合并成一條通知比如“3 個(gè)任務(wù)已完成1 個(gè)任務(wù)失敗”。聚合的時(shí)間窗口可以配置我一般設(shè)成 10 秒這樣既不會(huì)漏掉通知也不會(huì)被刷屏。實(shí)現(xiàn)聚合需要一個(gè)簡(jiǎn)單的隊(duì)列和定時(shí)器。任務(wù)完成時(shí)把事件推入隊(duì)列然后啟動(dòng)一個(gè)定時(shí)器定時(shí)器到期后把隊(duì)列里的事件合并成一條通知發(fā)出去。如果定時(shí)器還沒(méi)到期又有新事件進(jìn)來(lái)就重置定時(shí)器。這個(gè)邏輯用 Shell 寫(xiě)稍微有點(diǎn)繞但用幾行sleep和后臺(tái)進(jìn)程也能實(shí)現(xiàn)。如果追求更精細(xì)的控制可以考慮用一個(gè)小型的腳本語(yǔ)言來(lái)寫(xiě)這部分邏輯。6.4 把提醒器做成一個(gè)可復(fù)用的命令行工具如果你覺(jué)得這套邏輯在多個(gè)場(chǎng)景下都有用可以把它進(jìn)一步封裝成一個(gè)獨(dú)立的命令行工具。我的做法是把核心邏輯抽出來(lái)做成一個(gè)接受子命令的工具比如notifier run -- 命令來(lái)執(zhí)行并監(jiān)聽(tīng)notifier config來(lái)管理配置notifier test來(lái)測(cè)試通知通道是否正常。這樣它就不再是一個(gè)依附于特定工具的腳本而是一個(gè)通用的任務(wù)監(jiān)聽(tīng)與通知工具可以用在任何需要的地方。封裝成工具之后還可以考慮發(fā)布到包管理器或者內(nèi)部共享目錄方便團(tuán)隊(duì)里其他人使用。不過(guò)要注意的是一旦要給別人用配置的默認(rèn)值和錯(cuò)誤處理就要做得更完善不能假設(shè)用戶會(huì)去讀源碼。文檔和示例配置就變得很重要了。我一般會(huì)附上一個(gè)README和一個(gè)config.example讓新用戶能在五分鐘內(nèi)跑起來(lái)。7. 一些實(shí)際使用中的體會(huì)這套提醒器我用了挺長(zhǎng)一段時(shí)間最大的感受是它改變了我跟命令行工具的相處方式。以前我總是在“等任務(wù)”和“切窗口看任務(wù)”之間反復(fù)橫跳注意力被切得很碎?,F(xiàn)在我可以放心地把任務(wù)丟出去然后去處理別的事情任務(wù)完成時(shí)自然會(huì)收到提醒。這種“異步化”的工作方式讓我的時(shí)間利用率高了不少。另一個(gè)體會(huì)是完成判定的準(zhǔn)確性比通知的炫酷程度重要得多。我一開(kāi)始花了很多時(shí)間在通知的樣式上后來(lái)發(fā)現(xiàn)真正影響體驗(yàn)的是判定邏輯。一次誤報(bào)就會(huì)讓你對(duì)提醒器失去信任之后每次收到通知都要去確認(rèn)一下那這個(gè)工具就白做了。所以如果你要自己實(shí)現(xiàn)建議把大部分精力放在完成判定的調(diào)參和驗(yàn)證上通知方式夠用就行。最后分享一個(gè)小技巧在調(diào)試完成判定邏輯的時(shí)候可以先把通知方式設(shè)成“只寫(xiě)日志文件”然后跑一批不同類(lèi)型的任務(wù)事后分析日志看看哪些任務(wù)被誤判了哪些被漏判了。根據(jù)日志來(lái)調(diào)參數(shù)比憑感覺(jué)調(diào)要靠譜得多。這個(gè)日志文件也可以長(zhǎng)期保留作為任務(wù)執(zhí)行歷史的一個(gè)記錄偶爾翻翻還挺有用的。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
91天天综合日韩欧美| 蜜桃香蕉久草精品在线| 欧美精品,四区。五区| 亚洲色图图片| 97视频在线免费看| 日韩乱伦影音先锋| 巨乳特殊服务按摩| 一二三四免费视频| 国产精品人妻无码久久久互動交流 | 东北女人操比视频| 91被操| 超碰97起碰| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 超碰人妻天天干| 欧美精品 - 91爱爱| 日日超碰亚洲| 成人无码专区精品视频| 日本欧美亚洲高清在线看| 久久精品72| 国产精品人妻熟女aⅴ| 日本久久综合| www99热| 久久超碰网| 欧美国产操逼| 激情婷婷丁香| 午夜福利一区二区影院| 亚洲精品97中文字幕| 丁香五月婷婷啪啪| 色色色色色色色色色色色色色色综合| 8050无码八戒| 色哟哟 日韩精品| 夜夜骑天天燥| 色香综合天天影视综合| 翘臀vidoes| a片 xxxx受爽视频| 这里只有97精品| 九九九九日本| 亚洲综合性感在线| 超碰碰碰碰| 26uuu国产免费观看| 国产9l 大屁股| 欧美国产一区二区三区麻豆传媒| 亚洲综合中文字幕有码| 97在线精品观看视频| 后入福利视频| 日韩精品影视| 97国产精品久久久久 | 欧美色91| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 美女在线H91| 亚洲 自拍偷拍 欧美| 欧美日韩啪啪电影| 十八禁av无码免费网站APP| 久久亚洲中文字幕视频| 97这里有精品| 男人天堂欧美| 国内偷拍精品一区二区| 日韩A优精品在线观看| 強姦亂倫a| 美女黄站| 欧美激情亚洲| 日韩日本欧美在线观看| 99亚洲精品| 奇米狠999| 九月丁香综合网| 国产精品成久久久久午夜午夜| 午夜国产成人精品视频| 日韩黄色一区二区三区| 国内毛片无码一级毛片| 日本激情免费大片| 国产精品久久久久av| 97人肏| 10000部十八禁看电影| 诱惑人妻欧美一区在线播放| 不卡六六在线91| 亚洲第一二区另类图| 日韩三级一区 | 婷婷午夜成人色中色| 美國A片| 激情av| 欧美一级A片在线看视频性色| 久久性爱视频免费看| 思思热在线视频免费| 看一级特黄a大一片| 日本中文字幕在线视频| 欧亚在线视频| 人妻插插人妻人| 国产精品毛片| 男女日B国产| 久久精品亚洲成a人天堂| 丰满人妻一区二区三区在线| 性性欧美| 亲子敌伦对白在线播放| 日韩性爱免费观看视频| 久/久精品99看9| 亚洲欧美天堂在线| 极品少妇久久久| 国产精品久久久久久久AV大片| 国语对白露脸XXXXXX| 被体育老师抱着c到高潮| 美女刺激久久国产欧美| 亚欧美色图| 精品三级在线专区| 国产四虎在线| 超碰地址久久| 美女被艹尤物视频| 欧美日韩大陆黑人少妇99| 精品在线78| 淫荡少妇免费| 色悠久久久av| 人人看人人爰人人操| 丁香激情五月天| 久久久一区二区| 五月丁香黄色网| 色婷婷丁香五月| 白嫩妹子国产骚| 日日骚网站| 婷婷午夜成人色中色| 91女网站| 亚洲欧美人妻| 久久99国产综合精品女同| …中文字幕亚洲乱,97人妻无码费视… | 香蕉黄色一级视频| 亚洲第一在线视频| 91九九| 激情综合五月天| 久久一二三四五六七八九区| 亚洲成人性爱在线观看| 97色网| 欧美成不卡网| 岛国网址国产 | 91熟女熟妇视频网站| 亚州精品人妻一二三区| 久久黄色网址| 69少妇一区二区| 亚洲 91 在线| 外站AV在线| 国产一区在线观看无码AV| 亚洲综合113页| 精品综合久久久久久五月天| 亚洲www91| 日韩国产乱子伦App| 欧美色图小说综合 | 老司机午夜精品福利视频一区二区 | 97九色人妻| 欧美色人| 精品然女一区二区| 狠狠色噜噜狠狠狠狠狠色综合久久| oumeizonghese,www| 自拍偷拍亚洲熟女妇人精品| 综合久久99亚洲人妻中文在线| 欧姜老司机| 天天操狠狠日夜夜干超碰撸com视频在线观看 | 欧美一区二区三区不卡高清视频| 在线看免费无码AV天堂的| 又黄又硬又粗又长国产视频| 懂色av色欲av蜜臀av| 天天躁狠狠躁av| 国产一区二区在线电影| 亚洲丝袜少妇在线| 丁香五月色情| 五十路六十路七十路熟婆| 欧美日动态视频| 精品一区二区亚洲国产| 超碰97中文| 欧美最婬乱婬爆婬性视频| 久久久久久久九九九九九九| 208天天久久九九九| 丁香五月天堂网| 久久久久女教师免费一区 | 久久只有精品一区二区三区| 肏逼视频日本| 97超级色碰碰| 图色综合网| 国产精品不卡一区二区三区av| 97超碰巨乳| 女人爽到高潮潮喷18禁网站| 懂色中文一区二区三区| 久久午夜神马| 日韩精彩视频| 久久男人网| 日韩黄色成人性爱| 国产极品99热在线播放69| 欧洲精品二区| 亚洲自拍青操视频| 嫩草伊人久久精品| 天天弄欧美| 欧美性爱视频免费一区一A| 欧美色999| 久久久女人| 性性久久| 97超碰天天| 色综合婷婷| 日韩黄片视频试看| 老熟女91| 婷婷激情四射| 久草这里只有精品| 日本 情色 1区2区3区| 久久嫩草国产成人一区| 一区黄二区黄| 亚洲欧美精品一区天堂久久| 午夜精品一区二区三区三上悠亚| 操逼网站视频漫画国产| 99无码视频| 激情五月天丁香社区| 多毛小伙内射老太婆| 啊啊啊啊啊啊啊啊要喷了| 精品无码少妇| 日韩影片中文字幕一区二区三区| www.男人天堂| 五毛骚逼极品美女怕怕| 欧美 亚洲 第一页| 亚洲性图91| 久久久穴999| 91美女丝袜诱惑视频| 亚洲福利中文字幕在线| 簧片免费看视频| 浪人综合网| 久久久久亚洲AV无码专区少妇| 女人天堂av在线播放| 国产精品禁久久久精品| 九九玖玖精品| 欧美亚洲20p| 91性高| 国产精品网站免费| 另类老少妇| 97精品人妻一二三四| 黑人粗大V S日韩女优视频| 97在线青| 国产久久久9999| 91xingse| 日日黄色三级网站| 亚洲有薄码区久久在线一区| 高清孕妇孕交 交孕妇| 亚洲玖玖爱| 老熟女阿 国产91| 亚洲欧美在线丝袜| 欧美自拍偷拍综合图片| 免费αⅴ在线观看| 欧美婷婷五月天| 国内毛片无码一级毛片| 懂色综合久久久| 国产老熟女| 欧美大片一区二区三区| 精品视频一区二区| 91国产操逼视频| 国产男女边吃边摸视频网站| 国产树林里野战在线看| 中文字幕在线观看丝袜| 中文有码第五页| 色天堂综合| 激情人妻另类| 久久国产精品m码| 日韩av在线精品观看| 日韩欧美午夜一区二区| 99热精品免费| 日韩人人精品| 不卡中文字幕aⅴ在线| 亚洲一卡2卡3卡4卡乱码网站 | 97亚洲中文| 黄视频免费| 国产一区二区视频在线播放| 久久99国产综合精品女同| 日韩不卡网操逼中文字幕日韩| 欧日韩一二三f区| 你懂的在线观看区国产| 亚洲性爱无码乱伦av| 91超碰人人| 殴美,日韩国产伦精品| 国产精品。| 欧美熟妇色| 18禁无码永久免费无限制| 精品久久人妻成人网| 91人妻人人妻| 亚洲第二页| 国产精品亚洲无码| 亚洲AV资源| 一级AAA片一区二区三区| 美女裸体无遮挡永久免费观看网站| 成人性爱高清视频免费看| 天天干一区二区| 限制级中的三级片中的黑粗大屌屌日人妻熟女 | 老熟女中文字幕高清| 香蕉99秘 一区精品蜜桃臀| 日韩综合无码色欲vv| 欧苏综合色综合| 精久久久| 东京热男人的天堂精品| 东北老女人的激情视频| 神马久久久久久| 五月丁香综合激情| 无码欧美有限公司| 欧美性爱第一页久久| 亚洲五月丁香花狠狠干一区二区三区 | 久久久免费懂色| 成人精品在线免费视频| 亚洲欧洲小说图片视频| 丰满人妻aA一区二区三区| a网站免费观看| 色哟哟精品1精品2| 亚洲黄网在哪免费看| 999 久久久| 亚欧性爱无码| 大乔未久88一区| 日本黄色大片一级视频免费麻豆| 91欧美综合在线| 久久久久久69国产一区二区| 男人天堂综合| 国产在线激情视频| 中文精品少妇天堂| www.婷婷五月天| 色97欧美| 国产最新AV| 91亚洲欧美| 手机av天堂久久久久| 男人在线天堂| 亚洲宗合网| 天天色综亚洲91污| 高颜值美女口爆高潮浪叫| 丁香九月婷婷| 啊啊啊在线观看| 久久综合日韩亚洲欧美| 黄片视频,下载| 无码人妻精品一区二区三区九九| 亚洲无码AV九九九| 色综合天天爱去电影网| 午夜成人福利影视| 在线观看国产黄色| 啊啊啊好想要| 久久精品99久久久久久| 先锋精品av色鲁| 乱伦熟女论坛| 久久精品国产亚洲粉嫩| 欧美最婬乱婬爆婬性视频 | 91neishe| 精品人妻av在线播放| 国产精品午夜精品| 欧美亚洲第1页| 精品人妻av在线播放| 欧美,亚洲,日韩,v,天堂,手机在线观看 | 国产网站在线播放| 日韩中文字幕国产| 超碰9 7女人| 亚洲欧美激情另类色图| 人人操人人操草草| 91久久九九精品国产综合| 啊啊啊不要嗯嗯在线观看| 国产刺激视频| 国产欧美日韩精品中文| av网站国产主播在线| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 国产精品三级视频网站| 一级性爱视频免费在线| 国产日韩中文字幕欧美| 自拍二页| 夜夜中出国产| 欧美性爱另类综合| 色色色色日本| 无码不卡亚洲成?人片| 另类专区加勒比| 国产不卡精品91| 亚洲熟女中文字幕在线| 国产美女裸体秘 永久无遮挡| 97网站在线观看| 久久精品国产99国产精品亚洲| 亚洲成人久久美女| 天天躁日日躁xxxxx| 84YTCOM性无码| AV有码在线| 中国的操老妇女| 欧美美女在线高潮999| 毛片电影一区二区三区| 风流老熟女一区二区三区l| 日韩免费在线观看不卡| 国产精品香蕉| 东京热,男人的天堂| 国产1727欧美| 亭亭在线资源| 久久久久网站-538在线视频-欧美永久乱码 | 日本123区操B视频| 日韩视频啪啪| 天堂中文日本在线观看| 一类av片在线看| 2019精品国产无码成人| JIZZJIZZ亚洲女人被躁| 日本一道在线播放高清| 久操电影| 国产精品直播在线观看直播| 精品九九九九九| 亚洲 欧美 色图| 高清无码91| 久久精品女同亚洲女同13| 欧美亚州色的图| 日韩欧美偷拍美女视频| 国外91| 亚洲综合贴图91| 一区二区视频你懂的| 91爱做| 国产精品电| 熟妇女伦乱视频视频| 国产精品 久久久精品一牛| 91综合色噜噜| .精品人妻一区二区三| 国产婷婷综合在线观看| 91精品微拍福利| 伊人丁香五月婷婷| av日韩在线观看电影| 美女黄频a美女大全免费皮| 久久性爱城| 色色热| 美女露胸露屁股| 亚洲棕合电彰| 女人18精品一区二区三区| 亚洲精品黄码久久久久| 亚洲中文字幕精品一区| 无码精品久久久天天影视| 欧美十八禁网站| www.超碰在线| 久久一区,青青青青草视频在线播放| 物尤视频一区二区| 伊人午夜福利视频| 亚洲情欲| 在线免费观看日韩一区| 日本免费亚洲欧美| 九九成人精品| 日本幼女18+| 国产日韩无码一区二区三区久久区| www.91人妻.com| 久久婷婷综合国际产色怕| 国产 日韩 欧美 人妻 熟女 中文| 欧洲射精91| 亚洲怡春院| 天堂男人网| 成年人三级黄色片视频| 欧美一区91大爱| 亚洲情色一区二区三区| 色香综合| 中文字幕jul-617人妻熟女| 日本女厕偷拍| 色欧洲| 成人午夜小视频手机在线看| 久热色情精品| 亚洲 在线| 欧美成人四级在线播放| 久久久久久久一级黄色打同平台| 夜夜操中文字幕| 久久午夜色播影院免费高清| 殴美大黄片| 鸥美精品一区二区久久婷婷| 亚洲天天操| 天天躁日日躁AAA片李宗瑞| 黄色高清久久无码依人| 91综合网在线| www.婷婷| 密臀在线视频| 日韩不卡av一二三| 操死我了啊啊啊| 伊人久久综合影院精品久久久| 97人人超| 88在线一区二区三区| 欧美伊人久久综合网| 久久五月份| 无套后入双马尾| 亚洲性爱无码乱伦av| 天美精品一区二区三区四区在线观看| 欧美极品| 亚州色图第三区| 2017天天操天天日| 久99热| 2020中文字幕在线| 91精品人妻电影| 9999亚洲电影| 午夜影美女日鸡鸡天天视频国产| 91操人| 国产探花精品在线| 亚洲男人天堂视频| 亚洲无线码一区国产欧美国| 欧亚韩国999| 岛园激情| 亚洲深夜福利| 少妇超碰在线| 97免费在线观看| 1024久久高清视频| 日韩成年人性爱视频| 在线啊啊啊啊| 无码一区免费在线不卡| 婷婷色香| 狠狠色狠狠色狠狠五月| 国产精品3| 超碰碰97| 日韩 欧美 另类 人妻| 激情情色五月天| 麻豆国产免费影片| 九九九九免费| 国产天天看| 中文字幕交换人妻| 久操国产在线| 久插综合| 色综合网1| 九九久久久| 性欧美天天| 一区二区三区视频国产免费| 加勒比综合在线| 无码9区| 免费啪啪av| 另类专区加勒比| 99热成人| 在线岛| 91久久国产精品| 91国产丝袜足交精品视频| 欧亚成人| 久久免费少妇| 97国产精品久久久久| 25国产精品免费观看| 日韩欧美福利视频看看| 欧美综合狠| 亚洲另类久操网| 东北丰满熟女国产一区| 国产精品乱码久久久久| 国产成人精品午夜福利| 欧美黄页在线| 日本www操操操| 精品少妇999| 欧美线天码中字| 殴美日韩m| 久久这里只精品99re66图| 玖玖爱在线视频免费观看| 欧美日韩亚洲国产中文永久天天看| 性爱av在线免费观看| 人妻天堂网| 蜜臀99999| 免费观看的av| 黄色大香焦1级‘′‘| 精品人妻一区二区三区日产| 天天日骚逼熟女| 欧亚久久偷拍视频| 亚洲图片 91| 日本123区操B视频| 国产操偷| 天堂а√在线最新版在线| 激情欧美97| 黑人综合色| 欧美日韩一干二干| 国产嫩草精品A88AV在线| 天天干少妇| 国产成人在线观看综合| 午夜欧美女人操逼| 日韩无码黄色片| 乱抡国产91| 久久久久夜夜夜夜| 亚洲图片91| 久久精品国产97欧美精品亚洲 | 91天堂色男人的天堂| 五十路六十路七十路熟婆| 中文字幕99999| 四虎在线视频| 综合五月天| 美女爽到高潮91| 玖玖资源视频一区二区三区| 日韩专区久久久| 校园春色综合香蕉| 风月影院男女十八禁| 亚洲日产专区婷婷| 内射卯月麻衣| 久操av在线| 破处bbq| 欧美极品少妇| 91男人综合| 亚洲中文字幕久久无码精品| 精品丰满熟妇人妻一区| 东京热,男人的天堂| 欧美色图99| 欧美性爱超碰97| 99re黄| 日韩av影片在线观看| 人干人人人操人人摸| 无码av永久免费专区网站| 国产精品一区二区三区,亚洲综合 性开放中文AV高清无码免费看 | 久久99国产精品| 欧美中文综合| 欧美视频一| 欧美偷拍区| 免费观看的黄色的网站| 精品婷婷| 日本不卡三级网在线播放| 97硬碰| 91精产一区二区三区| 好色美女九七第一页| 欧美色97| 国产精品久久久久久久无码AV| 秋霞免费无码视频日韩A片| 一区不卡在线观看av| 99re公开精品免费视频| 久久97| 97久久超碰国产网站| 91国精产品| 人妻精品一区二区| 亚洲精品国产熟女| 99热最新| 久久久久久久久久久999| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 久久天堂网| 亚洲天天操| 无码国产Av| 97久久视频| 日日夜夜青青草母狗| 久久9免费视频| 日本不卡一区| 成人乱人伦一区二区| xxxx网站亚洲精品| 淫妻综合网| 97操在线| 明星性猛交ⅹxxx乱大交| 国产乱人伦AVA麻豆软件.| 亚洲无套久久嗯嗯| 国产九九九九九九| 丰满美女一级毛片在线播放| 深田咏美亚洲精品福利社| 欧美三级一级| 国产精品丝袜在线| 欧美另类精品xxxx| www.操| 伊人性在线视频| 中国一级操逼视频| 久久人妻四季| 天天天干977| 欧美黄色大片在线观看| 综合久草| 中文字幕视频二区| 无码聚合| 69人妻精品丰满熟女区| 视频不卡中文字幕| 色色色综合网| 欧美色图片色哟哟| 少妇xx精品| 欧美少妇内射| 草草草视频在线免费看| 欧洲色色| 欧美激情亚洲| 国内毛片婷婷六月色| 九月激情婷婷| 日韩欧美亚洲自拍偷拍| 国产欧美日韩一区二区三区| 中文字幕天天天天天| 天天做天天爱| 99精品无码| 亚洲丨在线| 午夜理论片在线观看免费| 色色综合97| 久久久久亚洲三级电影| 九九天堂| 思思久热在线精品66| 91男女啊啊啊| 操碰97| 97天天爽| 91色综合| 欧美 青青草| 亚洲无码国产探花在线观看| 欧美爆操91| 亚洲欧美色图小说| 欧洲精品在线播放| 无码精品久久久天天影视| 都市激情人妻一区二区青青操视频| 自拍偷拍第26| 精品无码久久久久| n1038 一二三区| av毛片aaaaa免费看| 欧美成人亚洲精品| 国产网红精品| 成人AV在线网站| 婷婷导航| 99久久久无码国产精品性啊聊 | 久久久久久中文| 丁香五月性| 91九九| 欧亚久久偷拍视频| 激情小说成人日本无码一| 日韩青久久| 午夜精品一区二区三区三上悠亚| 欧美性爱一区二区| 级品肉射| 亚洲色综合| 国产操逼网站亚洲一级黄色| 精品国产乱码久久久兰草影视| 黄色性爱网网| 五月婷亚洲精品天堂| 日韩情色AV| www.国产高潮精品| 亚洲中文字幕在现观看| 激情文学 亚洲图片| 欧美日韩99| 日本孕妇一区二区视频操逼免费看 | 1级午夜影院费免区| 加勒比色综合| 欧美色图亚洲色图成人在在线| 日本1区2区不卡视频| 人人操人人精品影片| 久久久久骚| 天堂中文资源在线bt| 国产农村妇女精品| 超碰精品人妻狠狠干| 天天看天天综合成人网| 日本视频在线观看污污污| 亚洲高清自拍| 天天综合网亚洲综合网| 中文久久一区| 五月婷婷六月丁香| 成人亚欧免费视频| 91精品国产91久久青草| 密臀成人视频久久久| 超碰97最新人妻| 97爱爱爱综合| 久久露脸国产老熟女| 人人操我人人干| 美女网站91| 四虎免费视频| 人妻在线大香蕉| 神马久久久久眼| 99操碰| 两性色网| 黄色片,com| 亚洲āv网址在线观看| 97超碰精品图片| 中文字幕人乱码中文字的预防方法 | 人妻人妻天天碰| 国产suv精品一区二区四区999| HEYZO高无码国产精品227| 精品国产乱码| 日韩啊V| 91综合熟女| 9久久久久久| 色哟哟AV| 日日干夜夜骑| 综合激情一一91| 天美传媒Av在线| 国产天天看| 国产精品亚洲四五区在线观看| 91久久久久免| 嗯嗯啊中文字幕| 九月婷婷| 91大学精品激情戏| 亚洲人妻一区二区三区| 色色操| 91碰碰| 五月天精品| 26uuu欧美| 国产少妇肉丝在线观看| 中文字幕日韩综合| 天天摸天天插天天日| 精品区9| 天天色综合图片| 97爱免费插| 99re8超碰| 亚洲美女色图| 日韩 欧美 国产 麻豆| 午夜精品久久久久久久99| 四虎精品一区| 亚洲天天自拍| 欧美综合另类| 男人女人18禁片免费看网站| 久久 国产 无码| 这里只有精品视频在线观看麻豆| 在线观看成人性爱免费小视频| 国产按摩一区二区三区| 午夜免费视频1000| 欧美激情视频一区二区三区不卡| 一区二区首页| 欧美亚洲宗合色性图| 亚洲se电影| 大奶的诱惑| 成人小说另类在线| 日韩欧美中文| www.夜夜| 国产超碰在线一区| 91精品少妇搡搡搡| 日夜伊人网| 精品国产乱码| 精品国产肉丝袜在线拍国语| 嗯嗯啊啊视频在线看| 嗯嗯啊啊用力视频免费| ai欧美亚洲小说| 亚洲丝袜在线观看| 自拍偷拍第26| 黄网色一区二区三区四区精品| 可以看的av| 啊啊啊不要啊啊受不了了视频在线| 狠狠干妹子| 久久婷婷电影网| 操高情无码| 亚洲影视综合网| 蜜桃丰满熟妇av无码区不卡| 久9九综合在线| 二男一女成人A片| 五月婷色| 人妻丝袜肏逼| 国产性爱强奸乱伦大全| 国产 热久久久久国产精品| 天堂岛av| 一级黄碟| 欧美操人视频| 丁香五月激情五月| 亚洲欧美日韩电影网站一区 | 韩国一级婬片A片AAAAA| 国产又大又粗又长视频在线| 97亚洲综合在线| 国产精品成人久久一区二区三区| 色婷视频| 97精品97久久| 日韩性爱一级片| 91性高潮久久久久久久久| 日韩ab网 | 欧洲免费一区二| 91欧美www| 思思热久久成人| 九九久久久久久爱| 中国少妇啪啪视频| 亚洲美女自拍偷拍视频| 日本999精品视频| 91高潮| 亚洲精品日日夜夜52| 330dv亚洲成年视频网| 九九九久久久| 亚洲综合小说另类图欧美视频激情小说色五月天 | 人人妻人人爽 97人人看碰人免费公开视频| 99综合| 夜夜骑日日| 嫩草一区二区在线观看| 97色色国产视频| 国产视频人人网| 大奶啊啊好爽| 超碰色图| 五月婷婷综合在线| 综合五月天| 97综合在线| 日日骚av| 久久久18| 久久黄人人爽视频| 涩五月婷婷| sewuyueav| 综合色久| 香蕉99秘 一区精品蜜桃臀| 色色五月天婷婷| 五月天婷婷社区| 五月天综合网| 国产精品操| 日韩97视频!在线| 婷婷色综合欧美日韩| 中文字幕一区二区三区蜜臀| 啪啪视频免费在线观看| 黄色成品网站| 男人女人18禁片免费看网站| 啊啊啊啊二区好大| 黄片免费看的| 97精品视频在线播放| 日本日逼视频网| 欧美 亚洲 在线| 中文字幕91综合| 欧美大波激情xxxx| 久草男人天堂| 婷婷AV一区二区三区| 欧美性色欧美| 97 亚洲 日韩 欧美 在线| 午夜亚洲WWW湿好大| 青青草色插素人| 国产日本久久免费精品| 大香蕉伊人75| 少妇被玩视频二三区| 少妇人妻好深太紧了vr91| 青青草狠狠撸| 久热婷婷| 国产精品福利资源在线尤物| 亚洲熟久久| 国产激情视频在线观看| 搡老女人老91妇女老熟女| 欧美性爱一区二区三区四区| 欧美成人性爱视频大全| 亚洲欧美日韩精品久久久一区二区 | 欧美白嫩女HD| 国产三级中文有码在线视频| 亚洲中文字幕一区二区| 九九久久首页| 日本一级二级三级网站| 国产久久久久久| 国产美女激情| 亚洲精品视频在线| www.色吧5.com| 熟女久久久| 99啪| 久久无码电影| 亚洲一区二区在线观看91| 老司机午夜福利视频一区二区| 狠狠干,狠狠操| 免费啪啪av| 另类欧美色| 色眯眯av| 德国一二三不卡| 99热99色| 欧美大香蕉同搞| 人妻少妇精品久久久久久久| 久久成人午夜狠狠| 蜜桃在线观看一区二区三区 | 亚洲风情在线观看| 亚欧洲一区二区视频| 一区=区三区视频| 久久久97| 操操逼操操逼操操逼逼| 激情五月天中文字幕色| 欧美97av| 日本新免费二区三区| 久久久久性熟视频| 青青草天天亲夜夜操网| 久久亚洲欧美中文字幕国语| 亚洲国产综合图区中文字幕| 天天综合~91| 97网址97| 人妻 欧美 中文| 欧美最婬乱婬爆婬性视频 | 9久久美女首页| 96精品在线| 久久99视频| 欧美日韩香蕉| jazzjazz国产精品麻豆| 中文字幕av片| 三上制服丝AV| 国产按摩一区二区三区| 色色激情五月天| 99日精品欧美国产| 欧美专区日本专区| 岛国片国产成人亚洲播放| 亚洲天天操| 超碰九7| 亚洲丝袜少妇在线| 亚洲高潮影院| 人妻丰满熟妇av无码区蜜桃| 久久久久深夜无码| 99福利社| 国产自偷| 国产嫩草精品A88AV| 骚熟女AV网| 精品丰满熟妇人妻一区| 欧美肥臀在线| 啊啊啊轻点在线观看| KK色在线影院| 亚洲美女高潮喷水视频| 97伊人超碰| 久操视频这里只有精品| 澳门色噜噜色噜噜色噜噜色噜噜色噜噜| 亚洲有薄码区久久在线一区| 精品一区二区2| 欧美自拍网| 超碰97COm中文| 蜜臀久久99精品久久久电影| 亚洲阿v天堂在线| 无码久久国产| 小日子操bb在线看| 91c色| 大香蕉综合| 大香蕉亚洲中文| 九九九综合精品| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 婷婷丁香激情| 亚洲国产一区二区日韩专区| 操操操日本的逼| 激情五月天丁香社区| 屌色在线97视频| 日本不卡码黄色| 久久九精品| 性感美女91影视| 狠狠91| 园内精品自拍视频在线播放| 中国亚洲呦女专区| AV中文在线可看| 99天天超碰| 四虎免费视频| 亚洲图片欧美色| 色色网91| www超碰| 亚洲色性情三级| 人澡逼| V A在线| 亚洲成人美女无吗| 久久欧美按摩999| 久久99精品国产| 亚洲男人在线观看天堂| 欧美精品第3页| 亚射在线| 国产精品一区在线播放| 秋霞Av理论一级在线| 国产白嫩漂亮KTV在线| 97精品国产97久久久久久| 美女AV一区二区| 欧美偷拍| 亚洲一级性爱视频免费看| 久热这里| 成人欧美日超碰| 欧美精品宗合| 亚洲色图殴美色图激情乱伦| 婷婷情色综合网| 情色五月天就去干| 国模无码人体一区二区三| 人妻精品视频一区二区| 神马午夜久久久| 欧美国产婷婷久久| 久久无码电影| 精品乱子一区二区三区99| 中出20p| 久久精品国产亚洲AV高清演员表| 婷婷视频网| 强奸熟女一区二区三区| 亚洲精品九九九| 日韩少妇一区二区三区| 天天摸天天碰天天添青青| 国产精品农村妇女| 亚洲成人久久一区二区| 丝袜制服字幕在线| 欧美色蜜桃97| 亚洲精品aa久久伊人| 天天舔九色婷婷| 男人的天堂va| 丁香五月婷婷基地| 激情综合网一盗摄| 精品久久久久久AV无码| 95精品在线| 青草精品视频一日本久久久久网站| 亚洲精品人妻在线| 天天综合影院91| 99re免费| 亚洲性爱高潮影院| 青草精品视频一日本久久久久网站| 老司机深夜影院18未满| 色香在线| 激情五月天插| 久久內射| 999精品国产高清一区二区| 99久久无色码| 999久久久| 97精品国产97久久久| 男人天堂东京热| 色色婷| 欧美色91| 亚洲色久| 97国产|免费| 欧美在线干| 91亚洲黄色网| 欧美日韩性爱精品| 97精品一区二区视频在线观看| 亚洲成人久久一区二区| 天美传媒av一区二区| 欧亚乱色熟女一区二区| 91网站在线播放| 亚洲国产欧美中文永久| 欧美色亚洲色| 日日操天天操| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 秋霞鲁丝午夜无码一区二区三| 成人免费看吃奶视频网站| 欧美熟妇亚洲版| 成人福利视频网| 九九热只有精品| 粉嫩国产精品久久粉嫩| 国产91福利小视频在线观看| 青青操在线亚洲视频观看欧美在线| 74成人在线| 97热视频在线观看| 色爱国产| 日本一区二区三区四区五区六区七区八区九区 | 神马影院午夜福利久久久| 操逼操网| 人人妻人人澡人人爽久久av| 精品99999久久久久久| 一区二区免费电影久久| 亚洲青青草| 青青草日韩无码| 日韩极品无码B| 欧美性视频二区三区| 婷婷丁香五月综合| 国产精品人妻无码久久久老鸭窝 | 黄片免费视频2019| 伊人久久亚洲色欲综合网站| 亚洲综合五月天| 欧美A片中文字幕| 久艹视频在线| 三级片大波波| 亚洲欧美国产成人综合不卡| 性一级黄色录像片网站导航| 久久综合女优| 99操视频| 伊人黄色片| 久久久久久十| 日本不卡二三区| 久久婷五月| 国产精品成人无码a v毛片| 欧日韩一二三f区| 啊啊啊啊啊啊好湿好爽视频| 日本国产成人亚洲精品无码| 一二三区操逼国产91| 国产熟女自拍| 熟妇人妻一区二区| 第一高清av中文字幕| 在线观看亚洲成人精品| 欧美日韩小说| 国产精品天干天干综合网麻豆 | 综合 亚洲 欧美| 亚洲自拍欧美色综合| 三级三级三级日本99| 亚洲精品官网在线观看| 精品无码久久久久久久久果冻糖心| 啊啊啊啊好大好硬啊啊啊啊啊| 欧美少妇大量自拍视频在线观看| 久久九九国产精品| 日韩免费在线观看不卡| 久热这里只有精品9| 中出后入| 一及黄久一点| 曰韩精品九九无码| 国产 日韩 另类 视频一区爱| 欧美自拍偷拍综合图片| 日韩小电影| 亚洲风情综合网| 亚av顶级裸体一区二区三区四区五区 | 午夜亚洲WWW湿好大| 99夜夜操| 久久久久久久久女黄| 亚洲精品1区| 国产精品久久久蜜臀| 欧美综合自拍成人自拍第二十页| 亚洲怡春院| 人人搞人人插人人操| 亚洲激情久久久伊人综合| 九九九九九九九九九九精品视频| 夜夜夜久久| 又大又白奶子| 亚洲激情av| 亚洲欧洲网站免费观看| 色成人Www精品永久观看| 国产a片操逼| 日韩有码 一区二区三区| 久久久久国产精品久久久| 亚洲黄色| 亚州欧美在线| 舔人妻中文免费视频| 色五月AV在线| 蜜桃精品视频一区二区三区| 色综和网| 狠狠躁天天躁日日躁| 神马久久久久久久久久| 无码人妻丰满熟妇奶水区毛片| 草b在线 | 欧美最婬乱婬爆婬性视频| 天美国产精品| 台湾佬激情综合| 久久久久骚| 日产国产精品中文久久婷婷| 9久久9综合| 久久久穴999| 熟妇精品juliaannAV| 人妻内射一区二区在线视频| 天天躁狠狠躁av| 人妻喷水| 欧美碰碰综合色|