[教學]idx工作區保活

前置條件:
硬件:一臺24小時在線的運行着Windows的電腦
軟件:zTasker和cloudflared

正文:
保活只對應Android studio cloud的工作區,因爲這個使用noVNC,網頁一直開着就可以活,而且這個配置非常的高,8C16T,60G內存。這個保活保的是24小時以後Google會準時archive你的工作區,即使你開着網頁也沒用,所以需要這個保活去unarchive你的工作區,不是使用noVNC的工作區,這個方法不適合。

首先,在你的工作區的ubuntu裏,即使被archive了,/home下的東西是不會被刪除的。所以這裏我假設你所需要的東西,都已經放到了/home/的一個文件夾裏,包括前面所需要的cloudflared隧道的二進制文件。並且,我假設你已經設定好了開機啓動你想運行的程序(包括cloudflared隧道)。

然後,在你進行保活的Windows電腦上運行zTasker,新建一個複合任務,具體設定如下圖。
image

這個複合任務的計劃設定裏設定3分鐘執行一次
image

下面分項說明一下14個項目的設定和原理:
ID1:子任務-任務類型-程序-運行cmd命令,檢測你cloudflared隧道的在線狀態,並把檢測出來的http代碼寫入變量,變量名稱argocheck,取消勾選“等待運行完成”,如果勾選,設定超時5秒或者10秒。

curl -I -s "http://你的argo地址" | findstr /R "^HTTP\/" | findstr /R "[0-9][0-9][0-9]"

如果隧道在線,那麼結果中會得到輸出的字串 HTTP/1.1 404 Not Found
image

ID2:條件判斷-變量判斷,判斷變量中是否包含爲404 的字符串,如果包含,那麼條件成立不需要保活,退出流程,如果不包含,那麼條件不成立,繼續流程
image

ID3:延遲30000毫秒

ID4:變量操作-變量運算,如圖設定,將結果寫入變量f1,f1代表fail 1,表示隧道在線檢測失敗了1次
image

ID5:設定同ID2

ID6:設定同ID3,延遲30000毫秒

ID7:變量操作-變量運算,如圖設定,將結果寫入變量f2,f2代表fail 2,表示隧道在線檢測失敗了2次
image

ID8:設定同ID2

ID9:設定同ID3,延遲30000毫秒

ID10:變量操作-變量運算,如圖設定,將結果寫入變量f3,f3代表fail 3,表示隧道在線檢測失敗了3次
image

ID11:條件判斷-變量判斷,如圖設定,如果條件成立,f3的數值等於3,代表檢測了3次隧道都不通
image

ID12:子任務-任務類型-程序-結束進程,殺掉chrome.exe,你可以使用其它瀏覽器保活,我用的是chrome,所以殺掉的是chrome.exe
image

ID13:子任務-任務類型-網絡-打開網頁,打開你的工作區的地址,你可以登錄 https://idx.google.com/ 就可以看到你的工作區名字,右擊複製地址,添加到裏面即可。
image

ID14:退出流程

總結:

通過檢測cloudflared隧道是否在線來判斷是否啓動保活,檢測到隧道在線的404的http代碼,那麼就認爲不需要保活退出任務流程,如果沒檢測到404代碼,在變量記錄失敗1次,並且30秒後再次檢查,這是爲了避免網絡波動引起的檢測失敗,重複檢測到第三次,變量f3裏確認已經失敗了3次,那麼就啓動保活流程,殺掉用來保活的chrome,然後重新打開工作區地址,這裏注意我的chrome設定了啓動以後是新建標籤頁,不要設定成彈出窗口提示是否恢復上次未正常關閉的頁面。打開地址以後,你的工作區就開始unarchive,這個看idx的資源分配情況,有快有慢,還有可能分配失敗,這也是爲什麼腳本設定成了3分鐘運行一次,因爲即使分配得再慢,甚至分配失敗,3分鐘也足夠了,如果隧道還沒上線,保活會再次啓動,走一遍流程再去打開工作區頁面,直到成功unarchive了工作區,因爲前面你設定了開機就啓動你的程序和cloudflared通道,那麼腳本檢測就會成功,不會再啓動保活流程了。

PS:你可以對裏面的流程進行自己的修改,比如你覺得隧道檢測間隔30秒,還三次檢測失敗才啓動保活太久了,你可以改成失敗一次就啓動。或者你最後啓動了你的工作區地址以後你不想看到chrome,你可以加個任務最小化啓動chrome,眼不見心不煩。
總之,自由發揮吧。轉自NeoMan

相关推荐

暂无评论

发表评论

您的电子邮件地址不会被公开,必填项已用*标注。