Bouk la tann tèt li pandan 35 èdtan: pgrep -f ak pkill -f sou SSH
Operasyon
Nan 31 oktòb, nou te kòmanse yon ti bouk sou SSH: tann jiska yon travay tradiksyon sou yon lòt machin fini, epi kouri yon travay swivi. Travay tradiksyon an te fini aswè sa a. Lè nou te gade ankò de jou apre, bouk la te tann pandan 35 èdtan, epi travay swivi a pa t janm kouri.
Sa bouk la te ye
ssh build-host 'while pgrep -f "i18n_job.py example.com" >/dev/null; do sleep 30; done; ./follow-up.sh'
pgrep -f konpare yon modèl ak liy kòmand konplè chak pwosesis. SSH kouri kòmand ki nan sitasyon an kòm bash -c 'while pgrep -f "i18n_job.py example.com" …', epi liy kòmand sa a gen modèl la. pgrep pa pran pwòp pwosesis li a nan rezilta yo, men li pran shell ki te lanse l la. Se konsa, tant ke bouk la te vivan, li te jwenn yon konparezon: tèt li.
Jimo l: pkill -f touye shell li kouri ladan l
Menm bagay la rive ak pkill -f, ak rezilta ki pi mal:
ssh build-host 'pkill -f "worker.py --queue a"; nohup python3 worker.py --queue a &'
Liy kòmand shell la gen modèl la, se konsa pkill touye shell la. Travayè a sispann epi li pa janm rekòmanse, epi SSH soti ak kòd 255 san yon mesaj erè. Li sanble ak yon pwoblèm sitasyon, se sa nou te panse premye fwa a.
Ant septanm ak fen oktòb, nou te tonbe nan youn oswa lòt omwen yon douzèn fwa: rekòmansman ki pa t janm fèt, yon bouk ki te kenbe yon tcheke pandan twa èdtan ak yon demi, yon lòt ki te kenbe yon liy tradiksyon pandan 50 minit, epi sa a.
Sa nou fè kounye a
- Yon bracket nan modèl la:
pgrep -f "[i]18n_job.py example.com". Kòm yon ekspresyon regilye,[i]konpare ak lèt i, se konsa travay la toujou konpare; liy kòmand shell la gen karaktè[i], ke ekspresyon an pa konpare. Li sèlman ede si modèl senp la pa parèt okenn kote nan liy sa a: yon kòmand rekòmansman apre nan menm liy la konpare ankò. - Jwenn, sispann ak kòmanse nan apèl SSH separe. Yon apèl lis pwosesis yo ak
pgrep -af, pwochen an touye PID li te enprime yo, yon twazyèm kòmanse nouvo pwosesis la. - Tann sou yon PID, pa yon modèl:
tail --pid=1234 -f /dev/null, oswawhile kill -0 1234; do sleep 30; done. - Pi bon toujou, kite systemd pran kontwòl travay la. Egzekite l kòm yon inite epi mande
systemctl is-active, oswa kòmanse l aksystemd-run --wait. Pa gen okenn modèl pou w fè erè. - Chak tann gen yon dat limit (
timeout 3h) epi li di lè li abandone. Yon bouk san dat limit echwe san avètisman.
Factory Floor, kit lojisyèl ki fè machin nou yo mache, travay atravè inite systemd: li pa janm chèche yon pwosesis pa liy kòmand li. Bouk ki te ban nou pwoblèm yo se sa yo nou te tape manyèlman.