រង្វិលជុំរង់ចាំរបស់យើងបានរង់ចាំរយៈពេល 35 ម៉ោងសម្រាប់ខ្លួនឯង៖ pgrep -f និង pkill -f តាមរយៈ SSH

ប្រតិបត្តិការ

នៅថ្ងៃទី 31 ខែតុលា យើងបានចាប់ផ្តើមរង្វិលជុំតូចមួយតាមរយៈ SSH៖ រង់ចាំរហូតដល់ការងារបកប្រែនៅលើម៉ាស៊ីនផ្សេងទៀតបញ្ចប់ បន្ទាប់មកដំណើរការការងារបន្ត។ ការងារបកប្រែបានបញ្ចប់នៅយប់នោះ។ នៅពេលដែលយើងពិនិត្យម្តងទៀតពីរថ្ងៃក្រោយមក រង្វិលជុំបានរង់ចាំរយៈពេល 35 ម៉ោង ហើយការងារបន្តមិនបានដំណើរការសោះ។

អ្វីដែលរង្វិលជុំនោះបានធ្វើ

ssh build-host 'while pgrep -f "i18n_job.py example.com" >/dev/null; do sleep 30; done; ./follow-up.sh'

pgrep -f ផ្គូផ្គងលំនាំទៅនឹងបន្ទាត់ពាក្យបញ្ជាពេញលេញនៃដំណើរការនីមួយៗ។ SSH ដំណើរការពាក្យបញ្ជាដែលបានដាក់សញ្ញាសម្រង់ជា bash -c 'while pgrep -f "i18n_job.py example.com" …' ហើយបន្ទាត់ពាក្យបញ្ជានោះមានផ្ទុកលំនាំ។ pgrep មិនរាប់បញ្ចូលដំណើរការរបស់វាខ្លួនឯងក្នុងលទ្ធផលទេ ប៉ុន្តែមិនមែនជា shell ដែលបានចាប់ផ្តើមវាទេ។ ដូច្នេះ ដរាបណារង្វិលជុំនៅតែដំណើរការ វានឹងរកឃើញការផ្គូផ្គង៖ ខ្លួនឯង។

ភាពដូចគ្នា៖ pkill -f សម្លាប់ shell ដែលវាដំណើរការនៅក្នុងនោះ

អ្វីដែលដូចគ្នាកើតឡើងជាមួយ pkill -f ជាមួយនឹងលទ្ធផលអាក្រក់ជាង៖

ssh build-host 'pkill -f "worker.py --queue a"; nohup python3 worker.py --queue a &'

បន្ទាត់ពាក្យបញ្ជារបស់ shell ខ្លួនឯងមានផ្ទុកលំនាំ ដូច្នេះ pkill សម្លាប់ shell។ កម្មវិធី worker ត្រូវបានបញ្ឈប់ ហើយមិនត្រូវបានចាប់ផ្តើមឡើងវិញទេ ហើយ SSH ចេញក្រៅជាមួយកូដ 255 ដោយគ្មានសារកំហុស។ វាហាក់ដូចជាបញ្ហាសញ្ញាសម្រង់ ដែលជាអ្វីដែលយើងបានគិតថាជាបញ្ហានោះនៅពេលដំបូង។

ចន្លោះខែកញ្ញា និងចុងខែតុលា យើងបានជួបប្រទះមួយក្នុងចំណោមបញ្ហាទាំងពីរនេះយ៉ាងតិចម្តងដប់ពីរ៖ ការចាប់ផ្តើមឡើងវិញដែលមិនបានកើតឡើង រង្វិលជុំមួយដែលបានរក្សាពិនិត្យរយៈពេលបីម៉ោងកន្លះ មួយទៀតដែលបានរក្សាជួរការងារបកប្រែរយៈពេល 50 នាទី និងករណីនេះ។

អ្វីដែលយើងធ្វើឥឡូវនេះ

Factory Floor គឺជាឈុតកម្មវិធីដែលដំណើរការម៉ាស៊ីនរបស់យើង ដំណើរការតាមរយៈឯកតា systemd៖ វាមិនព្យាយាមស្វែងរកដំណើរការតាមបន្ទាត់ពាក្យបញ្ជាទេ។ រង្វិលជុំដែលធ្វើឱ្យយើងមានបញ្ហា គឺជាអ្វីដែលយើងវាយដោយដៃ។

បានធ្វើបច្ចុប្បន្នភាព: