国产成人欧美一区二区三区vr_久久国产精品人人爽人人爽_国产精品永久免费播放_肉欲啪啪a∨无码精品一区二区_国产超短裙jk丝袜在线_亚洲AV片高清资源在线观看_国模无码一区二区三区久久_国产成年人未进视频_中文字幕无码精品夜_一区二区三区在线视频免费看_亚洲成AV人片在线观看网址_日本激情视频高清综合久久_亚洲午夜视频福利_国内大量揄拍人妻精品視_久久国产精品福利二区三区

ARTICLE DETAIL

資訊詳情

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

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

命令行任務(wù)完成提醒器:輕量級(jí)監(jiān)聽與通知方案 1. 從“盯著終端發(fā)呆”到“讓終端喊我”一個(gè)提醒器的誕生背景如果你跟我一樣日常大量時(shí)間泡在命令行里用各種代碼輔助工具跑任務(wù)那你一定經(jīng)歷過這種場(chǎng)景敲下一段指令工具開始吭哧吭哧干活你盯著屏幕等結(jié)果等了半分鐘沒動(dòng)靜于是順手切到瀏覽器刷了兩條資訊再切回來發(fā)現(xiàn)任務(wù)早就跑完了而你的注意力已經(jīng)碎了一地。更糟糕的是有些任務(wù)跑完不跑完你根本不知道只能反復(fù)切窗口去確認(rèn)這種“人肉輪詢”的方式效率低得令人發(fā)指。這個(gè)項(xiàng)目的出發(fā)點(diǎn)特別樸素讓工具在任務(wù)完成的那一刻主動(dòng)通知我而不是我像個(gè)哨兵一樣守著它。標(biāo)題里提到的“完成提醒器”本質(zhì)上就是一個(gè)輕量級(jí)的任務(wù)狀態(tài)監(jiān)聽與通知轉(zhuǎn)發(fā)機(jī)制。它要解決的核心問題有三個(gè)第一任務(wù)什么時(shí)候結(jié)束的我得第一時(shí)間知道第二通知方式要足夠顯眼不能是那種一閃而過、錯(cuò)過就沒了的小提示第三整個(gè)方案要足夠輕不能為了一個(gè)提醒功能引入一堆重型依賴把原本清爽的工作流搞得臃腫不堪。適合誰來參考這篇內(nèi)容如果你日常使用命令行工具跑代碼生成、批量處理、自動(dòng)化腳本并且希望在這些任務(wù)完成時(shí)獲得一個(gè)可靠的、可定制的提醒那這篇分享就是寫給你的。哪怕你只是偶爾跑一個(gè)耗時(shí)較長(zhǎng)的命令這套思路也能幫你省下不少無謂的等待時(shí)間。我接下來會(huì)從設(shè)計(jì)思路、技術(shù)選型、具體實(shí)現(xiàn)、踩坑記錄幾個(gè)維度把這個(gè)提醒器拆開揉碎講清楚你可以直接照著復(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í)際用下來它們各有各的局限。系統(tǒng)通知中心的問題在于它太容易被忽略——尤其是當(dāng)你全屏開著編輯器或者瀏覽器的時(shí)候一個(gè)角落里的橫幅彈出來幾秒鐘就消失了等你注意到的時(shí)候已經(jīng)錯(cuò)過了。終端狀態(tài)欄倒是常駐但它要求你始終把終端窗口放在可見范圍內(nèi)這又回到了“必須盯著”的老問題上。還有一個(gè)更現(xiàn)實(shí)的痛點(diǎn)很多代碼輔助工具在執(zhí)行任務(wù)時(shí)輸出是流式的你很難通過簡(jiǎn)單的“進(jìn)程是否退出”來判斷任務(wù)是否真正完成。有些工具會(huì)在結(jié)束時(shí)輸出特定的結(jié)束標(biāo)記有些則只是安靜地停止輸出進(jìn)程卻還掛著。如果只是粗暴地監(jiān)聽進(jìn)程退出要么誤報(bào)要么漏報(bào)。所以一個(gè)真正好用的提醒器必須能夠理解任務(wù)的生命周期而不是簡(jiǎn)單地看進(jìn)程死活。2.2 我的設(shè)計(jì)原則輕量、可組合、不侵入基于上面的分析我給自己定了三條設(shè)計(jì)原則。第一是輕量整個(gè)提醒器最好就是一個(gè)腳本或者一個(gè)小工具不依賴復(fù)雜的運(yùn)行時(shí)環(huán)境啟動(dòng)開銷要小到可以忽略不計(jì)。第二是可組合提醒的觸發(fā)條件、通知的方式、通知的內(nèi)容都應(yīng)該是可以自由拼接的模塊而不是寫死的一套邏輯。第三是不侵入它不應(yīng)該要求我改變?cè)械墓ぞ呤褂昧?xí)慣而是以“包裹”或者“旁路監(jiān)聽”的方式工作原來的命令該怎么敲還怎么敲。這三條原則直接決定了后續(xù)的技術(shù)選型。輕量意味著我傾向于用 Shell 腳本或者單一二進(jìn)制的小工具來實(shí)現(xiàn)而不是搞一個(gè)常駐的后臺(tái)服務(wù)。可組合意味著我要把“檢測(cè)任務(wù)完成”和“發(fā)送通知”這兩件事解耦中間通過一個(gè)標(biāo)準(zhǔn)化的接口傳遞事件。不侵入則意味著我需要在命令執(zhí)行的外層做文章比如用一個(gè)包裝腳本來接管命令的執(zhí)行和結(jié)束。2.3 任務(wù)完成的判定比想象中更微妙這里要特別說一下“任務(wù)完成”的判定邏輯因?yàn)檫@是整個(gè)提醒器最核心也最容易出問題的地方。最直覺的做法是監(jiān)聽子進(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)程并沒有退出但任務(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)記、輸出是否在超過一定時(shí)間后不再增長(zhǎng)、以及進(jìn)程的 CPU 占用是否降到了接近零。這幾個(gè)信號(hào)通過一個(gè)簡(jiǎn)單的加權(quán)邏輯組合起來只有當(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 包裝腳本來做入口。原因很簡(jiǎn)單Shell 是命令行的通用語言任何工具都可以被一個(gè) Shell 腳本包裹起來執(zhí)行不需要工具本身提供任何插件機(jī)制或者 API。包裝腳本的職責(zé)很清晰接管用戶輸入的命令在子進(jìn)程中執(zhí)行它同時(shí)監(jiān)聽子進(jìn)程的狀態(tài)和輸出在判定任務(wù)完成后觸發(fā)通知。這個(gè)包裝腳本的核心結(jié)構(gòu)大概是這樣的首先解析用戶傳入的命令和參數(shù)然后啟動(dòng)一個(gè)子進(jìn)程來執(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è)過程中用戶看到的輸出和直接執(zhí)行命令幾乎沒有區(qū)別體驗(yàn)是無感的。#!/usr/bin/env bash # 簡(jiǎn)化的包裝腳本骨架 CMD$ TMP_OUT$(mktemp) # 在后臺(tái)執(zhí)行命令輸出同時(shí)寫入臨時(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)聽、通知。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)即使你沒看屏幕聽到聲音也會(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)是依賴具體的操作系統(tǒng)需要做平臺(tái)適配。第三層是可選的擴(kuò)展通道比如發(fā)送到某個(gè)消息隊(duì)列、寫入日志文件、或者觸發(fā)一個(gè)自定義的鉤子腳本。這一層是為了滿足更復(fù)雜的自動(dòng)化需求比如任務(wù)完成后自動(dòng)觸發(fā)下一個(gè)流程。我把它設(shè)計(jì)成可插拔的默認(rèn)不啟用需要的時(shí)候在配置里打開就行。通知層級(jí)實(shí)現(xiàn)方式優(yōu)點(diǎn)缺點(diǎn)終端內(nèi)提醒標(biāo)題修改、響鈴、彩色輸出零依賴、即時(shí)終端不可見時(shí)無效系統(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)沒有增長(zhǎng)并且進(jìn)程的 CPU 占用低于某個(gè)閾值就認(rèn)為任務(wù)可能已經(jīng)完成。這個(gè) N 和閾值需要根據(jù)具體工具的行為來調(diào)。比如有些工具在生成代碼時(shí)會(huì)有一段“思考”時(shí)間期間沒有任何輸出但任務(wù)并沒有結(jié)束這時(shí)候如果把 N 設(shè)得太小就會(huì)誤報(bào)。為了減少誤報(bào)我還加入了一個(gè)“結(jié)束標(biāo)記”機(jī)制。很多工具在任務(wù)真正完成時(shí)會(huì)輸出一些特定的字符串比如“Done”、“Completed”、“Finished”之類的。我允許用戶在配置里定義一組正則表達(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í)、兩者都開、靜默超時(shí)時(shí)間多少秒無輸出判定為可能完成、結(jié)束標(biāo)記正則、是否啟用響鈴、是否修改終端標(biāo)題等。這些配置都有合理的默認(rèn)值不配置也能直接用但調(diào)一下會(huì)更貼合自己的使用習(xí)慣。4.2 接入代碼輔助工具的幾種姿勢(shì)接入方式取決于你使用的具體工具。最通用的方式是用別名alias或者函數(shù)function來包裝原來的命令。比如你原來習(xí)慣敲codex run現(xiàn)在可以定義一個(gè)別名codex指向task-notifier codex這樣每次調(diào)用都會(huì)自動(dòng)經(jīng)過提醒器。這種方式的優(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)景來說明。第一個(gè)場(chǎng)景是那種“一次性輸出”的工具你給它一個(gè)指令它思考幾秒后一次性吐出結(jié)果然后進(jìn)程退出。這種場(chǎng)景最簡(jiǎn)單直接用進(jìn)程退出作為完成信號(hào)就行靜默超時(shí)設(shè)短一點(diǎn)也沒關(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é)束語一定要把那個(gè)結(jié)束語加到結(jié)束標(biāo)記正則里這樣判定會(huì)準(zhǔn)確得多。調(diào)參的過程其實(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)了再開啟系統(tǒng)級(jí)通知。5. 踩坑記錄那些讓我半夜爬起來改腳本的瞬間5.1 信號(hào)轉(zhuǎn)發(fā)沒做好導(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)程樹光殺直接子進(jìn)程可能不夠需要用進(jìn)程組的方式來處理。我后來的做法是用setsid讓子進(jìn)程成為新會(huì)話的組長(zhǎng)然后殺整個(gè)進(jìn)程組。這個(gè)改動(dòng)之后信號(hào)處理就穩(wěn)了。5.2 輸出重定向?qū)е碌木彌_問題第二個(gè)坑是輸出緩沖。為了讓包裝腳本能分析輸出我把子進(jìn)程的輸出重定向到了管道。但很多程序在檢測(cè)到輸出不是終端時(shí)會(huì)啟用全緩沖模式也就是攢夠一定量的數(shù)據(jù)才真正寫出來。這就導(dǎo)致包裝腳本看到的輸出是滯后的靜默超時(shí)的判定完全失準(zhǔn)。修復(fù)方法是給子進(jìn)程設(shè)置一個(gè)偽終端pty讓它以為自己是在終端里運(yùn)行這樣就會(huì)用行緩沖模式輸出是實(shí)時(shí)的。在 Shell 里實(shí)現(xiàn) pty 稍微麻煩一點(diǎn)可以用script命令來包一層或者用stdbuf來強(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看起來簡(jiǎn)單但在不同的桌面環(huán)境下行為差異很大。有的桌面環(huán)境會(huì)正常彈出通知有的則會(huì)把通知丟進(jìn)一個(gè)不顯眼的消息中心還有的干脆不顯示。我測(cè)試了幾種常見的桌面環(huán)境發(fā)現(xiàn)通知的顯示效果和持久性都不一樣。最后的應(yīng)對(duì)策略是不依賴單一通知方式而是同時(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)?。我一開始把整個(gè)命令都塞進(jìn)通知標(biāo)題里結(jié)果在某個(gè)環(huán)境下只顯示了前幾個(gè)字符完全看不出是哪個(gè)任務(wù)完成了。后來改成標(biāo)題只放“任務(wù)完成”或者“任務(wù)失敗”正文里放命令的簡(jiǎn)短摘要和執(zhí)行時(shí)長(zhǎng)這樣既清晰又不會(huì)超長(zhǎng)。5.4 長(zhǎng)時(shí)間運(yùn)行任務(wù)的資源占用問題還有一個(gè)不太起眼但實(shí)際影響體驗(yà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。后來改成了基于read的阻塞讀取沒有輸出時(shí)就阻塞在那里幾乎不占 CPU。這個(gè)改動(dòng)雖然簡(jiǎn)單但對(duì)長(zhǎng)時(shí)間任務(wù)的體驗(yàn)提升很明顯。6. 進(jìn)階玩法讓提醒器更懂你的工作流6.1 根據(jù)任務(wù)類型定制通知內(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)起來很簡(jiǎn)單就是在通知模塊里加一個(gè)標(biāo)簽字段但用起來體驗(yàn)提升很大。6.2 任務(wù)完成后的自動(dòng)后續(xù)動(dòng)作提醒器最有價(jià)值的擴(kuò)展方向是“任務(wù)完成后自動(dòng)做點(diǎn)什么”。比如任務(wù)成功后自動(dòng)打開生成的文件任務(wù)失敗后自動(dòng)把錯(cuò)誤日志收集到一個(gè)固定位置或者任務(wù)完成后自動(dòng)觸發(fā)下一個(gè)流程。這些都可以通過鉤子腳本來實(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)”你可以用它來串聯(lián)起更復(fù)雜的自動(dòng)化流程。比如跑完代碼生成后自動(dòng)格式化格式化完成后自動(dòng)跑測(cè)試測(cè)試通過后自動(dòng)提交整個(gè)鏈條都可以用鉤子串起來。6.3 多任務(wù)并發(fā)時(shí)的通知去重與聚合當(dāng)你同時(shí)跑多個(gè)任務(wù)時(shí)通知可能會(huì)變得很吵。我遇到過同時(shí)跑五個(gè)任務(wù)結(jié)果通知一個(gè)接一個(gè)彈出來反而造成了干擾。解決思路有兩個(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í)器還沒到期又有新事件進(jìn)來就重置定時(shí)器。這個(gè)邏輯用 Shell 寫稍微有點(diǎn)繞但用幾行sleep和后臺(tái)進(jìn)程也能實(shí)現(xiàn)。如果追求更精細(xì)的控制可以考慮用一個(gè)小型的腳本語言來寫這部分邏輯。6.4 把提醒器做成一個(gè)可復(fù)用的命令行工具如果你覺得這套邏輯在多個(gè)場(chǎng)景下都有用可以把它進(jìn)一步封裝成一個(gè)獨(dú)立的命令行工具。我的做法是把核心邏輯抽出來做成一個(gè)接受子命令的工具比如notifier run -- 命令來執(zhí)行并監(jiān)聽notifier config來管理配置notifier test來測(cè)試通知通道是否正常。這樣它就不再是一個(gè)依附于特定工具的腳本而是一個(gè)通用的任務(wù)監(jiān)聽與通知工具可以用在任何需要的地方。封裝成工具之后還可以考慮發(fā)布到包管理器或者內(nèi)部共享目錄方便團(tuán)隊(duì)里其他人使用。不過要注意的是一旦要給別人用配置的默認(rèn)值和錯(cuò)誤處理就要做得更完善不能假設(shè)用戶會(huì)去讀源碼。文檔和示例配置就變得很重要了。我一般會(huì)附上一個(gè)README和一個(gè)config.example讓新用戶能在五分鐘內(nèi)跑起來。7. 一些實(shí)際使用中的體會(huì)這套提醒器我用了挺長(zhǎng)一段時(shí)間最大的感受是它改變了我跟命令行工具的相處方式。以前我總是在“等任務(wù)”和“切窗口看任務(wù)”之間反復(fù)橫跳注意力被切得很碎?,F(xiàn)在我可以放心地把任務(wù)丟出去然后去處理別的事情任務(wù)完成時(shí)自然會(huì)收到提醒。這種“異步化”的工作方式讓我的時(shí)間利用率高了不少。另一個(gè)體會(huì)是完成判定的準(zhǔn)確性比通知的炫酷程度重要得多。我一開始花了很多時(shí)間在通知的樣式上后來發(fā)現(xiàn)真正影響體驗(yàn)的是判定邏輯。一次誤報(bào)就會(huì)讓你對(duì)提醒器失去信任之后每次收到通知都要去確認(rèn)一下那這個(gè)工具就白做了。所以如果你要自己實(shí)現(xiàn)建議把大部分精力放在完成判定的調(diào)參和驗(yàn)證上通知方式夠用就行。最后分享一個(gè)小技巧在調(diào)試完成判定邏輯的時(shí)候可以先把通知方式設(shè)成“只寫日志文件”然后跑一批不同類型的任務(wù)事后分析日志看看哪些任務(wù)被誤判了哪些被漏判了。根據(jù)日志來調(diào)參數(shù)比憑感覺調(diào)要靠譜得多。這個(gè)日志文件也可以長(zhǎng)期保留作為任務(wù)執(zhí)行歷史的一個(gè)記錄偶爾翻翻還挺有用的。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美啪啪天堂| 乱伦图av| 99re在线视频| 久久久久久久久久久人妻| 成人精品一区二区91毛片不卡| 天天夜躁日日躁狠狠2002| 精品福利| 91宗合网| 亚洲中文sv| 欧美亚洲厕所精品偷拍91| 一起草av| 在线观看视频91| 亚洲av淫乱| 涩综合导航| 麻豆成人影音在线| 好湿好紧视频| 91天天美女| 青青欧洲黑| 九九英色视频| 亚洲限制级在线| 成人情色一区二区| 99视频只有精品| 大奶啊啊好爽 | 国产精品婬乱一级毛片彝族| 精品久久久久久AV无码| 中字乱伦AV| 天堂中文日本在线观看| 国产网站在线播放| 国产无马视频| 色五月综合| 日韩午夜啪啪视频| 思思热在线| 国产激情久久| 欧美日韩操逼嗦吊| 蜜桃传媒一区二区亚洲| 亚洲日韩乱码中文无码蜜桃臀网站| 一区中文字幕二区日韩| 内射黑丝袜| 日韩欧亚中文在线| 久久久久久久综合,国产| 久久久久密臀一区二区| 亚码人妻| 色噜噜人妻av中文字幕| 夜色综合| 日韩无码视频黄色| 亚洲伊人a线观看视频| 日韩性爱啪啪视频| 超碰成人公开| 动漫爆乳3D奶水一区在线观看| 国产树林里野战在线看| 91亚洲青青草原精品1区| 青青草在线成人视频| 亚洲天堂女优在线| 亚洲影视综合| 亚洲色图亚洲无码强奸乱伦| 五月丁香六月激情| 中文字幕久久亚州无码| 综合av影片| 亚洲骚男同com| 四虎影视精品| 超碰精品日韩欧美国产| 国产高清MV操逼视频| 26uuu国产成人综合| 欧美日韩国产中文精品字幕自在自线| 国产97色在线| 天天摸夜夜操视频| 少妇蹲下露出大唇5| 国产91亚洲精品一区二区三区| 大香蕉黄色一级片免费看| 国产乱人伦AVA麻豆软件.| 影音先锋国产精品| 香蕉免费一区二区三区不读 | 亚洲 日本 不卡| 男人综合网| 在线色导航| 一区二区三区蜜桃成人撸久久东京热 | 色偷综合| 97精品一区二区视频在线观看| 91操熟女视频| 国产日韩在线播放av| 强奸乱亚洲| 亚洲av热热色| 少妇精品| 激情久久久| 2025亚洲男人天堂| 久久婷婷电影网| 国产精品无码在线| 东北女人操比视频| 亚洲精品一区二区精品| 99精品在线播放| 久久鲁夜| 人妻啪| 手机av天堂久久久久| 亚洲男人天堂视频| 人妻中文字幕精品无码| 亚洲日韩青青草色月| 亚洲高清91| 国产1769在线| 亚洲丰满很很操| 强奸乱伦AV网址| 97超碰jingpin| 91九色丰满高潮| 蜜乳中文字幕a在线| 五月丁香色色网| 欧美色自拍| 亚洲欧洲综合成人av一区| 青娱乐av在线| 日韩一级久久毛片| yazhousetuoumei| 中文字幕乱妇免费视频| 中文字幕在线观看网页| 三级AV入口| 九九玖玖精品| 国产无马视频| 欧美爱国产综合、| 极品极品色影院| 免费看国产大AB| 中国zzijzzijzzwww精品| 精品久久久久9999| 亚洲成人av电影在线| 91处女视频在线观看| 日本东京热久久久电影| 久久天天躁日日躁狠狠躁| 美日韩男女操屄视频| 白丝1区2区3区| 超碰欧美| 传媒免费一区二区三区| 特污免视频| 美女啊啊啊啊啊啊| 少妇毛片久久| 在线欧美69V免费观看视频| 青青草日本中文字幕| 日韩黄片影院| 综合天天。| 激情五月天社区| 亚洲中文字幕av| 日韩性色b| 婷婷操逼| 亚洲欧洲自拍图片专区满春格| www.婷婷六月天| 久久久一区二区三区麻豆| 久久一区二区三区入口| 国产精品一区二区三区在线| 大香蕉宗合网在线| AV污污污污| 国产精品伦理| 久久亚码| 久久欧美按摩999| 三级日韩一区二区三区| 日产成人久久| 人人爱夜夜爱| 人妻熟女字幕一区二区| 福利操逼| 特色a在线上| 91在线丝袜视频| 日本肏逼视频在线观看| 日本乱人伦片中文三区| 欧美综合色图片| 久操视频免费在线观看| 手机不卡视频不卡在线一二三区| 精品国产乱码| 欧美日韩中文视频播放| 日本淫穴在线| 久久久久免费少妇| 欧美日韩日产免费网站看| 久久久精品久久| 黄污污污污| 亚洲国产精品无码AV在线| 久久黄黄黄| 美女的肌被草喷水视频| 97天天摸天天碰| 能在线播放的国产三级| 97啪啪| 99福利社| 天天操美美| 欧美v日韩欧亚洲电影天堂色诱,国产传媒| 亚洲AV成人在线| 一级做a爰片性色毛片久久| 97免费视频在线观看视频| 天天日天天插| 亚洲91射| 爱啪精品一区| 欧美日韩精品久久| 超碰国产情侣自拍网| a男人的天堂久久一级A毛片| 熟妇无码视频三区| 97在线观视频免费观看| 欧美狠狠弄| 操逼视频亚洲| 中字幕人妻一区二区三区| 99少妇| 久神马| 久久国色天香香蕉| 丁香五月激情网| 无码乱人伦中文视频| 欧美一区二区三区互相| 国产粉嫩蜜臀av一区二区三区| 熟女久久| 久久鲁干| 欧美A片中文字幕| 亚洲色图图片| 欧美后入| 无遮挡一级毛片视频免费的| 91精品人| 亚洲一区二区三区中文字幕| 国产精品 久久久精品一牛| 加勒比在线视频| 超碰在线香蕉| 91人妻做a观看视频| 无码人妻精品一区二区中文| 日本三级一区二区 在线| 日本操逼视频不卡直接放| 日产欧美电影一区二区三区| 色婷婷六月丁香七月婷婷| 成人一道本免费视频| 久草精品一区 | 一级黄色性爱裸体视频| 久久这里只精品免费福利| 级做a爱无码性色永久免费| 91精品国产91综合久久蜜臀| 1769国内精品视频| 日韩精品碰碰| 嫩草影院性色| 欧美色偷拍| 一区二区三区国产精产| 国产肏屁眼视频| 色www精品视频在线观看| 久久久专区| 麻豆精品三区视频| 蜜臀久久99精品久久久久久酒店 | 亚洲天堂中文字幕无码男同| 91国产美女丝袜足交精品视频 | 国产亚洲精品美女久久久久久2021| 日日操丁香五月天| 黄色小说亚洲| 九九九网站| av三级电影在线播放| www.亚洲黄色| 国产11页| 久草久日| 国产精品熟女九色九色蜜臀| 九九色图| 国产人妻精品一区二区三区秋霞 | 日本一区视频在线观看| 久久性爱免费送| www.91色综合| 在线情色电影 91大| www.人人摸在线视频| 成人五月天丁香激情综合| 国产91乱伦| 久久国产三区| 欧美第五页| 牛牛aV| 六月激情婷婷| 天美麻豆黄色录像| 人人操人人爽人人操人人| 亚洲成人性爱在线观看| 久久久久9999妇女| 亚洲国产精品无石码久久| 天天干人人干天天日97| 成人一区二区三区四区| 超碰在线欧美性爱激情| 91久久婷婷| 精品人妻一区二区乱码一区二区| 啊啊啊好想要| 色九月婷婷| 91激情综合| 日本操逼无码| 97网址www| 色97国产69香蕉| 人人看人人爰人人操| 天天影视网综合少妇| 久久偷偷色综合蜜桃| 超碰免费在线| 蜜臀99久久精品久久久懂爱| 国产三区免费在线观看| 综合欧美日韩在线| 欧美日韩*字幕一区| 亚洲激情网| 久久成人精品| 中文字幕成人理论在线| 韩国国产欧美情侣视频在线| 黑人精品一区二区在线播放| 大香蕉在线视频15| 激情天天视频| 美女淫穴| 性videos欧美熟妇hdx| 亚洲日产专区| 天天亚洲| 性色高清在线| 国产最新小视频在线播放下载| 9/A片| 欧色网址| 97精品一二区| 国产一级137片内射麻豆| 老熟妇综合| 老熟女乱伦一区| 激情亚洲天堂| 亚洲av综合色区无码一| 一本色道久久综合狠狠操| 黄片免费久久久久久久| 国产97/欧美| 不卡免费av在线播放| 中文字幕在线第二页| 多乙久久久久久| 日本大香蕉综合网红本杳社区| 日本黄 R色 成 人网站| 色综合91好| 97天天爽| 高清国产性猛交xxxx乱大交| 一本色道久久综合狠狠操| 色综合久久88色综合久久天天| 五十路人妻在线| 欧美性爱1080p| 97在线日韩中文字幕| 无卡一区=区| 国产sv美女内射| 亚洲AV成人无码一区二区三区在线观看| asc国产精品| 牛牛aV| 加勒比aⅴ| 欧美嗯啊……在线观看视频免费| 黄片视频观看| com 首页 18岁 禁区 女优 免费 精选 同城| 强奸乱伦αv片| 老女人综合网| 日本免费一区二区不卡| 91色s| 国产黄色 A 片免费看| 超碰在线综合97| 91精品久久久久久77777| 欧洲亚洲人妻无码中字久久三区四区 | 成人 日韩欧美一区| 99999精品| 欧洲亚洲天堂精品| 日韩欧亚太美不卡| 大屁股xxxxx| 免费精品无码一级毛片牛牛影视| 美女黄码视频午夜| 色噜噜综合在线| 福利视频一区二区微拍| 91青青草| 91天堂| 精品一区二区三区四区女| 九九探花视频在线观看| 丝袜人妻av一区二区| 久久久久久久六六| 少妇69中文| 欧美日韩999| 乱伦一区二区三区‘| 精品久久久久久久| 久久久免费高清中文视频| 色九九九| 麻豆60秒| 丁香五月性爱| 自拍大香蕉乱插| а√天堂资源官网在线资源| 国产精品成人午夜福利| 另类图片五月天| 欧美 牲| 区一在线观看| 天天操女人| 欧美九9 9 9| 亚洲国产成人精品无码专区| 日本一区二区三区午夜观看| 日韩视频中文字幕| 精品视频一二三中文| 欧美肥臀在线| 亚洲色天堂九9| 91性| 国产97综合| 亚洲综合69| 91久久18禁| 中文字幕色AV| 久久日本熟女精品一区| 中文字日本乱码| 神马久久久久眼| 一区二区三区国产精产| 欧美永久激情一区二区| 爽爽爽免费视频| 日韩一区二区熟女| 精品久久久久黄少妇| 91xingse| 亚洲欧美天堂在线| 久久少妇视频| 精品久久九| 日本中文字幕熟妇| 麻花传媒免费网站在线观看| 免费看一级a性色生活片久久无| 国产精品一区av在线| 人妻献身系列第54部| 少妇一区二区三区高速| 日本午夜久久电影| 69人妻精品一区二区绯色| 五月天婷婷色| 中文字幕一区二区三区人妻少妇在线| 97人人中文网| 少妇专区一二三四五| AV色五月天| 国产国产亚洲一二三久久| 北野未奈加勒比av| 天天天肏屄肏屄肏屄欧美欧美| 久操电影网| 亚洲97在线| 青青操网| α√在线| 天天日天天色| 东北老女人的激情视频| …中文字幕亚洲乱,97人妻无码费视…| 九九九综合精品| 人妻久久一区二区三区 | 大鸡巴久久| 97超碰人人模人人拍人人| 国产精品久久久久久久电影渣男| 约操熟妇| 精品99999久久久久久| 亚洲成人精品久久久| 加勒比性爱成人在线| 外国免费性情大片| 乳欲人妻办公室奶水| 五月丁香成人网| 五月天伊人| 精品在线78| 久久黄片国产一区二区| 九九色热| 粉嫩久久久久| 日本操逼aaaaa| 嫖老熟女A片一二三区| 久热69九色熟妇97| 精品欧美日韩在线观看| 欧美精品久久96人妻无码| 日本操BAV| 日本99一区二区| 99视频自拍区| 免费作爱一级视频| 白丝jkav| 天天澡天天爽日日AV| 日本一本道A级黄色毛片试看60分钟| 内射白嫩美女| 欧美97在线欧| 影音先锋国产精品| 很很很很操| 欧美日韩国产成人高清| 色优久久| 新91视频.cmp| 一区二区三区精品视频| 78超碰| 自拍偷拍亚洲熟女妇人精品| 青青草国产亚洲精品久久| 欧美性夜| 婷婷久久综合| 天天躁日日躁狠狠狠躁| 丁香六月东京热| 韩日巨乳美女免费视频在线观看| 美女熟妇色| 麻豆av一区二区三区| 9精品久久久久| 久久HD| 久草毛片| 另类在线| 色图四区| 嗯啊啊啊轻点视频| 蜜臀一区二区三区在线| 97人妻色| 亚洲日韩精品久久久久一区壹牛| 花野真衣| 超碰在线欧美性爱激情| 亚洲色图欧美色图制服丝袜| 日本精品中文字幕视频| 亚洲成人精品久久久| 亚洲无码国产探花在线观看| 99国产天美| 老外又粗又长一晚做五次| 99热精品国产| 丰满人妻无码一区二区三区| 大香蕉92| 色999五月色| 欧美综色欧| 懂色AV一区二区三区| 人妻少妇精品视频一区二区三区| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 亚洲综合色图欧美| 91操操| 精品一区二区三区丰满熟女-亚洲欧美一区| 免費黃色視頻觀看一| av2014 日韩在线中文字幕| 丁香五月天啪啪| 欧美激情久| 国模无码人体一区二区三| 情色AV电影| 久久久久久网址| 91色综合激情| 欧美不卡二区| 少妇天堂| 国产SV一线| 精品久久久久av影院| 人妻美腿丝袜日韩| 国产欧美精品日韩区二区麻豆天美| 加勒比伊人| 亚洲情色图片区| 亚洲1区2区三区高清中文字幕| 蜜臀在线看片| 国产精品天美传媒| 久草国产在线视频| 夜夜爽夜夜操| 久久日本熟妇熟色高清| www.狠狠| 亚洲色 国产 欧美 日韩| 97超级久久| 久草色悠悠在线视频| 国产1769在线| 99e久久国产精品| 91网站18+| 亚洲色人妻综合| 蜜桃视频成a人v在线| 人妻第一页| 91激情网| 麻豆黄四叶草网站| 婷婷五月天激情四射| 黄色人人| 精品人妻一二三| 日韩人妻精品| 91夜夜蜜桃臀1区2区3区| 色情综合| 国产中文字幕曰本毛片| 伊人一级免费黄片| 婷婷爽人人婷婷爽视频| 人妻激情视频| 后入式999| 欧美一二在线| 看看小穴| 亚洲综合另类| 丁香六月啪| 无套内射人妻在线播放| 97天天日| 天天舔天天日天天射| 操一区| 青草成人免费视频一COm| 欧美色图在线视频少妇| 嗯嗯啊啊操死我| 婷婷五月av| 日本成人电影资源网| 精品亚洲一区在线观看| 丰满少妇一区二区三区免费看| 无码男人天堂| 很很很很操| 黄色成品网站| 色妹子A V| 色色五月婷婷| 91操人| 一块操欧美性爱| 国产剧情AV不卡在线观看| 天天操人人操狠狠插| 国产美女在线精品免费看| 亚洲色图 欧美| 久久啊啊啊| 亚洲自拍97| 高清无码人妻久久久一区二区三区aⅴ| 性欧美| 青青草原成人| 97超碰精品图片| 78精品| 91精片| 国内一区二区免费| 日语五十路和六十路亚洲国产精品| 亚洲资源站| 亚州一区二区| 乱性AV| 九九精品99| 亚洲天堂中文字| 免费啪啪一级视频| 日韩人妻无码专区| 一二三四免费视频| 久久嫩草国产成人一区| 亚洲自拍一区夜夜操 | 欧美性爱精品七区| 亚洲天堂一区二区久久| 大色综合网| AA丁香综合激情| 丝袜夫妻自拍| 久久久99999久网站| 啊啊啊啊好疼视频| 久久久久久999| 日日干天天干夜夜爽| 一区不卡在线观看av| 国产一区二区三区导航| 五月丁香啪| 欧美香蕉视xxx| 欧美中字不卡| 屁股久久久久久| 国产精品国产自产高清AV| 很很热性爱视频| 天天操av懂色| 日本免费一区二区不卡| 1240青青草一区二区三区视频天爱| 中日韩免费看男女操逼大全| 国模艳艳啪啪一区| 97超碰碰碰| 人妻丝袜肏逼| 羞涩视频| 色牛牛AV| 亚洲欧美setu| 亚洲天堂2020| 无色无码| 嫩草伊人久久精品| 欧成人精品H无码| 欧美成人四级在线播放| 中文字幕艹艹| 中文字幕乱妇免费视频| 人人操肉肉| 久久精精区一区二区一蜜桃一区二区| 人妻素股| 天天干干天天干干| 午夜情侣自拍网站| 青青草色AV| 日韩午夜精品一区二区三区电影| 超硑97精品| 风月影院十八禁| 久久婷婷热| 人人妻天天做天天爽| 蜜乳中文字幕a在线| 人妻少妇久久久| 日韩干B| 先锋色眉乱伦资源| 超碰1024久久| 国产午夜福利专区综合| 鲁鲁色综合网| 激情欧美97| 色色婷婷五月天| 热热色AV| 新版天堂中文资源8在线| 日韩一二三区| 国产精品免费视频不卡| julia ann久久| 日本操嫩b网| 欧美少妇性乱| 天天弄天天操| 熟女一区二区三区| 超碰国产精品久| 综合网亚| 九月激情婷婷| 色眯眯av| 国产树林里野战在线看| 加勒比久久av| 丁香六月啪| 美女t无毒不卡不卡| 日本综合久久| 欧美劲爆第一页| 亚洲另类综合欧美| 探花精品 一区二区| 欧美日韩国产中文精品字幕自在自线, | 免费网色网站| 亚洲AV无码AV吞精久久久久| 亚洲综合贴图91| 日本欧美亚洲高清在线看| 久热99999| 色色丁香| 日韩亚洲欧美中文字幕| 中文字幕版| 国产精品一区午夜福利| 黑人粗大V S日韩女优视频| 蜜乳AV色欲AVAV无码| 亚洲久久天堂| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 亚洲资源吧| 夜夜中出国产| 亚欧免费| 亚洲做性| 国产成人资源| 国产日韩精品无码去免费专区国产| 爱爱久久| 亚洲激情AV| 亚洲**2021在线观看| 久久婷婷亚洲欧| 性爱乱伦一区| 少妇综合| 中文字幕诱惑制服人妻丝袜美丝袜美| 久操不卡视频| 黄片视频观看| 青青草五月份天| 蜜色网色哟哟| 欧美成人黄网色网站| 亚州性色| 男人的天堂在线| 丁香六月综合激情| 国产最新小视频在线播放下载 | 亚洲第一精品在线视频 | 天天干少妇| 欧美黄色大片在线观看| 老熟女天天操| 蜜臀久久99精品| 亚洲激情AV| av强奸乱轮| 91精品人妻| 夜夜青青无码影院| 草b在线| 精品黑人一区二区| 久久中文字幕不卡人妻| 99久久久| 美女黄码视频午夜| 亚洲成人一二三区| 色婷婷狠狠| 99精品视频在线观看免费| 久久久久久九九九九| 福利大香蕉| 亚洲蜜臀懂色| 国产精品一区二区三区在线密挑| 青青久久手机线视频| 国产精品白领在线观看| 欧美性夜| 欧洲亚洲人妻无码久久三区四区| 1二区9| 免费农村成人少妇人妻Aa一区二区视频| 欧美精品久久久久久久久88| ji熟女.com| 日本一区二区中文字幕久久| 人妻另类| 97超碰伊人| 青青青草伊人精品| 日韩欧美水蜜桃人妻| 婷婷激情一区二区三区俺也去| 婷婷尹人大香蕉免费| 欧美,日韩,亚洲视频| 中日亚韩免费视频| 日本狂喷奶水在线播放212| 插欧洲美女欧美精品| 国模私拍一区二区三区神乳| 国产成年女黄特黄| 校园春色亚洲| 日韩亚洲欧美中文字幕| 无码人妻一区二区三区免费九色| 国产免费小视频| 日本幼女18+| 天天影视综合色| 99在线精品观看视频中文| 亚洲美女黄色| 欧美97se| 日本熟妇人妻一区二区三区| 亚洲色欧| 精品一级| 精品九九| 久久成人国产精品| 眼镜人妻101.com| 免费av在线播放二区| 操操吧亚洲乱伦视频| 亚洲国产尤物yw在线观看| 国产精品一区午夜福利| 狠狠色噜噜狠狠狠狠狠色综合久久 | 天美传媒婬乱| 无码人妻精品一区二区三区99不卡| 人妻少妇久久中文字幕一区二区 麻豆 | 免费看片黄| 午夜福利无毒不卡| 日本欧美一区二区三区免费| 囯产操逼片| 激情色色| 久久久99久9| 福利一级版子| 男人的天堂kva| 欧美色图亚洲色| 欧美18老人禁| 国产 热久久久久国产精品| av天堂手机版追回| 五月天婷婷欧美三区| 熟妇熟女一区二三区| 最新av在线| 玖玖无码超碰| 亚洲日韩在线a不卡99精品| 性爱免费视频成人| 色婷婷小说| 丝袜综合色图| 成人资源中文字幕在线观看| 九九九免费视频| 久久久久久久伊人精品| 中文字幕av乱伦| 香蕉99秘 精品一区丁香| 国产美女激情| 日本欧美不卡| 国产中文精品一区二区在线观看 | 黄页av| 秋霞久久亚洲精品成人| 精品久久一区二区三区四区五区| 天天摸天天碰天天添青青| 久久9999| 无码精品久久| 五月婷婷综合网| 色 亚洲 91| 97资源久久| 天堂中文日本在线观看| 亚洲日韩肥臀视频在线观看| 在线五区| 豆花视频操逼网址| 五月婷婷激情网| www被窝色com| AVE乱伦| 任你爽视频| 欧美精品久久| 亚洲天堂在线怕怕视频| 另类天堂| 97超碰欧美手机在线| 狠狠操官网| 九九毛片这里只有精品| 精品二区三四区五电影 | 热热热热日日漂亮永久永久国产日| 天天操妹子| 欧美日韩香蕉| 亚洲91网站| 国产女大学生AV| 久操操| 久久精品一区一起草| 欧美性生活免费网| 有码人妻系列| 97精品免费| 婷婷在线视频| 欧美日韩一二三| 人看人人摸人人操| 97超碰人操| 亚洲蜜乳av| 久久鲁夜| 欧美一区二区三区四区综合| 精品人妻一区二区三区-国产精品 一个人在线看的黄色电影网站 | 色噜噜人妻av中文字幕| 久久久无码av精| 欧美精品久久| 一区二区三区黄色片a| 久久久久久久久久久久久久久乱码 | 欧美黄片欧美黄片xxx| 九九国产热| 又大又长又粗又爽又黄| 欧美国产一区二区三区麻豆传媒| 日韩免费簧片| 欧美色图片91| 思思视频免费看网站| 爱欲AV| 亚洲精品成人动漫在线| 九九热三级片| 六月丁丁香| 97超碰美女| 大稥蕉免费视频这里只有精品| 色逼综合| 91国产丝袜足交精品视频| 日本在线观看网址| 四虎免费看黄| 欧美亚洲另类在线蜜桃| 色综九九九一区| 五月丁香综合网| 亚洲福利影院一区久久| 日本女厕偷拍| www.大香| 天天色综合影视网| 91在线欧色| 性饥渴少妇av无码毛片| 九九九九九精品十六| 人人天天干干| 亚州综合在线| 久久熟妇五十路一区| 久久av一级av少妇av高潮| 破处bbq| 婷婷色婷婷| AAAA欧美日韩| 欧美综合色综合| 中文字幕啊啊啊在线观看视频| 国产激情视频一区区三区| 插老姨肥穴| 粉嫩在线一区二区懂色| 超碰美国| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 久久免费精彩视频| 免费视频在线一区二区不卡| 日韩中文9| 97WW精品| 国产啊v在线免费播放| 日日骚av| 中文字幕日韩精品一区二区三区| 欧美黑人精品一区二区| 999久久久九九九九| 神马久久啊啊| 亚洲综合色男人网| 亚洲AV无码黄色强奸| 神马久久午夜| 午夜精品久久久久久久| 78综合网| 天天做日日爱夜夜爽| 精品一级毛片在线观看| 中文字幕精品亚洲熟女| 九九九久千久久激情蜜桃在线看 | 狠狠躁久久躁| 撸撸成人在线视频| 992这里有精品| 99热99在线播放激情| 97色碰| 四虎影视国产精品| 伊人国产视频| 久久婷婷色综合一区二区三区| 岛国AB视频| 香蕉国产精品麻豆亚洲欧美日韩| 正宗无毛一线天嫩逼| 歐美性天天| 精品久久在线区一区| 女人被添高潮免费视频| 天天谢天天干| 天天射夜夜操| 久久精品无码专区| 超碰 国产熟女精品一区| 亚洲限制级在线| 天天干天天拍| 翔田千里av一区二区三区| 久操网视频| 国产精品国产亚洲区艳妇糸列| 色欲久久99国产精品久久久久久| 加勒比东京热五月天天堂网| 美女高潮视频91| 欧美黑人猛交春色影视大全| 婷婷色播婷婷| 岛国成人av在线播放网址| 亚洲欧洲综合成人av一区| 91久久久亚洲| 久久免费少妇| 中欧人妻丝袜中文字幕| 91狠狠狠| chaopen97久久| 97超碰中文字幕| 美女黄码视频午夜| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 玖玖97综合 | 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 国产成人久久精品蜜臀| 国产一线二线三线av| 天天操熟妇| 热热色AV| 91亚洲黄色网| 人妻熟妇一区二区三区| 99精品无码| 就去色综合| 不卡视频一区蜜桃视频 | 中文字幕日本久久| 五月婷婷爱六月丁香色| A久久| 免费夜夜爱黄色视频毛片| 这里只有精品视频| 男女打扑克高清网站| 91亚洲精品青草| 偷拍亚洲高清图片| 蜜臀久久99精品| 91丝袜美腿片| 亚洲色系另类精品国产| 成人免费看吃奶视频网站| 亚洲性爱免费电影| 国产亚洲色婷婷久久99精品91葵花宝典 | 97蜜桃综合| www.99热在线只有精品| 久久久久国产| 91精品国| 欲香欲色| 吖在线不卡一区二区国产剧情| 久久av一级av少妇av高潮 | 玖玖大干人妻| 日夜伊人网| 中文字幕人成乱码熟女香港| 能在线播放的国产三级| 色欲日韩欧美在线一区| 狠狠色丁香| 亚熟在线| 97久久精品不卡| 大香蕉日韩| 思思视频免费看网站| 亚乱色| 天天影视色香色欲| 青青草乱入乱欲视频在线观看| 夜夜免费视频| 亚洲激情片| 十八禁的黄污污免费网站| 免费黄色视频网址| 天天日天天舔东京热| 性欧美| 日韩在线地址一| 在线性黄高清免费视频| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 啊啊啊啊二区好大| 青青草在线视频美女| AVE乱伦| 亚洲一区中文字幕一区| 激情露脸爱| 亚州黄站| 一起草欧美| 黑操B| 校园春色欧美| 国产综合日韩伦理| 2024人人操人人摸| 久久国99999| 久久久久夜夜夜夜| 5278欧美一区二区三区| 一及黄久一点| 91精品91久久久中77777| 色婷婷激一区二区三区 | 四虎午夜影院| 亚洲一区二区麻豆影院| 久久精品国产久精国产| 日韩成人高清一区二区| 99操碰| 欧美日韩人妻少妇 一区二区三区| 亚洲色图 欧美| 久综合网| 天天拍天| 日韩欧美成人午夜福利| 夜夜夜久久| 91亚洲网站| 日本护士高潮| 色娱乐色呦呦夜夜夜夜av| 乱伦强奸区日韩| 红杏大香蕉| 密臀在线视频| 国产AV超爽| 欧美综合777| 国产AV激情无码久久无码| 91精品丝袜久久久久久无码人妻| 欧美亚洲91| 国产原创自拍| 欧色网址| 色色丁香| 日韩99999| 一级免费啪啪片| 亚洲AV色图一区| 日逼国产| 日韩精品人妻中文字有码在线| 26uuu国产亚洲综合| 精品人妻夜夜草| 亚洲色婷婷久久91| 人妻一区二区三区| 一区二区三区国产在线播放| 97超级久久强资源| 东京热大香蕉| 天天日日舔舔| 亚洲无线观看久久| 亚洲 中文 女同| 亚洲 欧美 日韩 国产一区二区 | 日本成人免费一区二区三区| 久久a久久| 日本在线观看网址| 人人操天天爽| 日韩综合成人免费视频| 精品96久久| 盗摄女人妻在线| 一二视频神马久久传媒| 欧美刺激色黄片免费看| 欧美97免费| 天天舔天天| 中英熟女操女| 国产乱人妻精品入口| 日韩久久.一级黄色片| 国产精品毛片| 五月天色色网站| 青青草国产欧美非洲黑人| 丰满少妇一区二区三区专区| 日韩字幕一区| 国产第11页| 成人看片网站| 欧美人黑A片无码免视费| 麻豆AV短剧| 亚洲综合中文字幕有码 | 九久9热| 99国产精品视频尤物| 久草线上视频免费看| 丁香五月性爱| 色色毛片| 亚洲色图伊人网| 五月天精品| 超碰国产精品无码| 欧美黑人日韩少妇色情| 91久久精品蜜臀| 北约熟女超碰| 久久老熟女| 欧美激情超碰777| 在线观看av区| 久久在线观看免费视频| 亚洲综合贴图91 | 爱丝福利| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 黑丝制服中文字幕| 欧洲Au麻豆| 国产在线精品偷| 一级性爱视频免费观看| 中文字幕一品色图| 欧洲免费一区二| 日韩一级免费性爱| 夜夜草天天| 综合网亚洲在线| 性色av一区二区| 超碰av人人人| 亚洲av影音先锋| 香蕉欧美| 婷婷8月天青娱乐| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 情色大香蕉| 亚洲色图国产另类| 加勒比无码一区二区三区| 国产A v无码专区| 日产操逼| 本道综合精品| 物业黑人 AV一区| 色老汉色| 日韩精品一区二区三区四虎影视| 一区二区三区成人高清视频| 91 欧美| 大香蕉中文201| 丝袜色综合| 久久香蕉超碰97国产精品 | 一区二区三区激情在线观看| 在线观看一级α片刺激高潮视频| 亚洲资源一区| av日韩中文字幕| 亚洲色资源| 激情文学欧美| 欧美亚洲激情小说| 激情五月婷| 秋霞视频一区二区| 国产精品一二三在线看| 国产成人99久久亚洲综合| 男人天堂欧美| 97网色| 亚洲成成熟女人综合一区二区| 91少妇通奸网站| 欧美亚洲宗合色性图| 亚洲天堂自拍| 九九热免费在线国产视频伊人五月| 九九在线视频| 色色丁香| 丝袜大香蕉| 色情成人五月天| 婷婷五月天丁香| 在线不卡视频| 婷婷五月天伊人| 操碰91| 丁香五月天视频| 五月天啪啪| 日产狠狠干| 9久综合网| 99国内精品| 精品一区96| 熟女天天干| 大肉棒导航| 蜜桃臀一区二区aV| 男人成人黄色视频在线观看免费下载| 欧美91丝袜| 曰本道人妻久久久在线不卡色视频| 久久骚| 老鸭窝成人| 久久久久白虎| 九九九九9999| 男人女人18禁片免费看网站| 欧美福利视频啊啊啊啊| 99视频这有这里有精品| 黄色激情电影在线观看| 综合久久久久久久综合网| 久久久久国产精品喷潮免费观看臀| 黑人无码一区二区| 99久久婷婷| 色噜噜国产在线| 亚洲欧洲无码97久久精品| 加勒比人妻综合|