Lancer流程

Lancer流程

工欲善其事分瘾,必先利其器

命令

在Lancer中胎围,會用到很多Shell相關(guān)的命令。

shell中的0芹敌,1痊远,2 : 0,標(biāo)準(zhǔn)輸入,1氏捞,標(biāo)出輸出碧聪,2:標(biāo)準(zhǔn)錯誤輸出

eval : 重新運(yùn)算求出參數(shù)內(nèi)容。再次執(zhí)行

export : 在shell執(zhí)行的時候液茎,會提供一組環(huán)境變量逞姿。export可以新增、修改或者刪除環(huán)境變量捆等,供后續(xù)執(zhí)行的程序使用滞造。但是export的效力僅限于該次登陸操作。

-f 代表[變量名稱]中為函數(shù)名稱

cut : cut剪切數(shù)據(jù)使用的栋烤。以每一行為一個處理對象谒养。
cut -b 按字節(jié) -c按字符 -f按域 -d指定分隔符 與awk相似

which sh : 在Linux系統(tǒng)中,sh是bash的一個軟鏈接明郭。which sh 運(yùn)行結(jié)果 /bin/sh

$$ : echo $$ 標(biāo)示當(dāng)前shell進(jìn)程的id买窟,即pid

$* : 傳遞給腳本或者函數(shù)的所有參數(shù)。

2>>/dev/null : 把錯誤流寫進(jìn)/dev/null中薯定。unix中始绍,0代表標(biāo)準(zhǔn)輸入流(stdin),1代表標(biāo)準(zhǔn)輸出流(stdout),2代表標(biāo)準(zhǔn)錯誤流(stderr). /dev/null是類Unix系統(tǒng)中的一個特殊文件設(shè)備,作用是接受一切輸入它的數(shù)據(jù)话侄,并丟棄這些數(shù)據(jù)亏推。通常被看作垃圾桶学赛。

inet addr ifconfig后,inet addr里面的值分別是 ip地址/網(wǎng)關(guān)/子網(wǎng)掩碼

$? : 上個命令的退出狀態(tài)吞杭,或函數(shù)的返回值盏浇。

curl --silent : 靜音模式,不顯示錯誤與進(jìn)度

head -n 1 : 顯示文件的第1行

php -r : 在命令行中直接執(zhí)行php代碼

tr : Linux中tr通常對來自標(biāo)準(zhǔn)輸入的字符進(jìn)行替換篇亭、壓縮和刪除缠捌。可以將一組字符變成另外一組字符译蒂。tr 'A-Z' 'a-z' 則為大小寫替換。
tr -d 刪除第一個字符集的字符

流程

1.定義變量谊却,包括獲取數(shù)據(jù)地址柔昼,數(shù)據(jù)確認(rèn)地址,數(shù)據(jù)完成地址炎辨。UA捕透。設(shè)定時間。定義文件夾碴萧,數(shù)據(jù)文件夾乙嘀,日志文件夾。日志文件名破喻。運(yùn)行地址虎谢。

2.定義變量方法,將函數(shù)定義為變量曹质。

3.獲取機(jī)器ip婴噩,獲取1號網(wǎng)卡的ip。如果沒有羽德,就獲取0號網(wǎng)卡的ip几莽,將ip賦值給變量。

client_ip=$(ifconfig eth1 2>>/dev/null |grep 'inet addr:'|awk  '{ print $2 }'|awk -F : '{ print $2 }')

if [ $client_ip"x" == "x" ]; then
    client_ip=$(ifconfig eth0 2>>/dev/null |grep 'inet addr:'|awk  '{ print $2 }'|awk -F : '{ print $2 }')
fi

4.如果不存在SERVER_ADDR則給他賦值當(dāng)前ip

5.如果不存在調(diào)用框架配置文件的腳本宅静,則異常推出

6.執(zhí)行配置文件章蚣,與框架相關(guān)聯(lián)

7.如果執(zhí)行配置文件出錯,即返回碼不為0姨夹,則報錯退出

8.如果配置文件中纤垂,沒有當(dāng)前機(jī)器的ip,則退出

9.如果不存在日志文件夾則創(chuàng)建日志文件夾匀伏,并記錄日志

拉取文件

10.獲取要執(zhí)行的tasks洒忧,使用curl的靜默模式(-s)請求獲取tasks接口,如果沒值够颠,停20ms熙侍,重試。如果有返回,則判斷返回參數(shù)蛉抓,是不是100000庆尘,如果不是,則重試巷送。

11.如果非正常退出驶忌,則Lancer客戶端也退出。

文件處理

12.輸出tasks的返回值笑跛。同時使用php -r在命令行中直接執(zhí)行php代碼付魔。代碼邏輯為:獲取命令行輸出,獲取到data里面的值飞蹂。然后將data里的值几苍,echo出來。知道讀不出來為止陈哑,同時將task_id queue_id command 作為變量保存下來

 echo "$tasks" | $php_executor -r '$in=file_get_contents("php://stdin");$in=json_decode($in,true);foreach($in["data"] as $t){echo trim($t["task_id"])."@".trim($t["queue_id"])."@".trim($t["command"],"&; \t\n\r\0\x0B")."\n";}' | sed 's/\([\\\"]\)/\\\1/g' | while read line; do [ ! -z "$line" ] && exec_task "$line" ; done

然后后臺執(zhí)行exec腳本妻坝。

執(zhí)行

父shell中包含子shell,里面export的值惊窖,是可以在子shell中使用的刽宪。

1.建立對應(yīng)的對應(yīng)的正確|錯誤的輸出文件

2.調(diào)用確認(rèn)接口,為對應(yīng)的task進(jìn)行確認(rèn)界酒。傳入數(shù)值為queue_id,與task_id.

3.根據(jù)返回值圣拄,記錄正確或者錯誤日志。

4.再次執(zhí)行從接口取出的(設(shè)定好的)crontab指令盾计。

5.獲取執(zhí)行的退出碼售担,記錄執(zhí)行時間。

6.將標(biāo)準(zhǔn)輸出與錯誤輸出都格式化輸出署辉。這個挺屌的

lancer_stdout=$(dd if="${LANCER_LOG_STDOUT}" bs=1000 count=1 2>/dev/null | od -An -tx1 | tr ' ' % | tr -d '\n')

7.然后調(diào)用完成接口族铆,完成本次shell全部執(zhí)行,并且更新數(shù)據(jù)哭尝。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末哥攘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子材鹦,更是在濱河造成了極大的恐慌逝淹,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件桶唐,死亡現(xiàn)場離奇詭異栅葡,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)尤泽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門欣簇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來规脸,“玉大人,你說我怎么就攤上這事熊咽∧迹” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵横殴,是天一觀的道長被因。 經(jīng)常有香客問我,道長衫仑,這世上最難降的妖魔是什么梨与? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮惑畴,結(jié)果婚禮上蛋欣,老公的妹妹穿的比我還像新娘。我一直安慰自己如贷,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布到踏。 她就那樣靜靜地躺著杠袱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪窝稿。 梳的紋絲不亂的頭發(fā)上楣富,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天,我揣著相機(jī)與錄音伴榔,去河邊找鬼纹蝴。 笑死,一個胖子當(dāng)著我的面吹牛踪少,可吹牛的內(nèi)容都是我干的塘安。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼援奢,長吁一口氣:“原來是場噩夢啊……” “哼兼犯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起集漾,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤切黔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后具篇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纬霞,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年驱显,在試婚紗的時候發(fā)現(xiàn)自己被綠了诗芜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞳抓。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖绢陌,靈堂內(nèi)的尸體忽然破棺而出挨下,到底是詐尸還是另有隱情,我是刑警寧澤脐湾,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布臭笆,位于F島的核電站,受9級特大地震影響秤掌,放射性物質(zhì)發(fā)生泄漏愁铺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一闻鉴、第九天 我趴在偏房一處隱蔽的房頂上張望茵乱。 院中可真熱鬧,春花似錦孟岛、人聲如沸瓶竭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽斤贰。三九已至,卻和暖如春次询,著一層夾襖步出監(jiān)牢的瞬間荧恍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工屯吊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留送巡,地道東北人。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓盒卸,卻偏偏與公主長得像骗爆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子世落,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容