Ansible - How to Grep (ps -few) and Kill أي عملية linux تعمل على Remote Host؟
نشرت: 2022-02-24Ansible هي أداة رائعة لإدارة النظام. لقد نشرنا عددًا من المقالات حول Ansible في الأسابيع القليلة الماضية حول كيفية نسخ الملفات على المضيف البعيد ، وكيفية تنفيذ الأوامر على المضيفات البعيدة ، وكيفية تثبيت Java ، و Python على المضيف البعيد وما إلى ذلك.
في هذا البرنامج التعليمي ، سنتعرف على كيفية تشغيل عملية grep java على مضيف بعيد وقتل هذه العملية عن بُعد باستخدام كتاب قواعد اللعبة البسيط.
فيما يلي الخطوات التي سنفعلها في هذا البرنامج التعليمي:
- على المضيف البعيد ، قم بتشغيل CrunchifyAlwaysRunningProgram.java
- اتبع البرنامج التعليمي حول كيفية تشغيل برنامج للأبد في Java
- قم بتشغيل برنامج java باستخدام
nohup java CrunchifyAlwaysRunningProgram &
1 2 3 |
ubuntu @ ip - 172 - 31 - 10 - 150 : ~ $ nohup java CrunchifyAlwaysRunningProgram & [ 1 ] 18174 ubuntu @ ip - 172 - 31 - 10 - 150 : ~ $ nohup : ignoring input and appending output to 'nohup.out' |
كيفية التحقق من بدء العملية وتشغيلها على مضيف بعيد؟
تحقق من ID 18174
.
1 2 3 |
ubuntu @ ip - 172 - 31 - 10 - 150 : ~ $ ps - few | grep CrunchifyAlwaysRunningProgram ubuntu 18174 15069 1 15 : 15 pts / 0 00 : 00 : 00 java CrunchifyAlwaysRunningProgram ubuntu 18187 15069 0 15 : 16 pts / 0 00 : 00 : 00 grep -- color = auto CrunchifyAlwaysRunningProgram |
- قم بإنشاء ملف
crunchify-hosts
الملف الذي يحتوي على IP مضيف بعيد - إنشاء ملف
crunchify-grep-kill-process.yml
مع يحتوي على مهام سهلة لـ grep وقتل عملية جافا - تشغيل الأمر: ansible-playbook -i ./crunchify-hosts crunchify-grep-kill-process.yml
- تحقق من النتيجة على وحدة تحكم macOS الطرفية
crunchify-hosts الملف
1 2 3 4 5 6 7 8 9 10 |
[ local ] localhost ansible_connection = local ansible_python_interpreter = python [ crunchify ] 3.16.83.84 [ crunchify : vars ] ansible_ssh_user = ubuntu ansible_ssh_private_key_file =/ Users / crunchify / Documents / ansible / crunchify . pem ansible_python_interpreter =/ usr / bin / python3 |
يحتوي الملف على عنوان IP بعيد وبيانات اعتماد ستساعد في تسجيل الدخول بدون كلمة مرور.
crunchify-grep-kill-process.yml الملف
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
--- - hosts : crunchify become : yes tasks : - name : Get running processes list from remote host ignore_errors : yes shell : "ps -few | grep CrunchifyAlwaysRunningProgram | awk '{print $2}'" register : running_processes - name : Kill running processes ignore_errors : yes shell : "kill {{ item }}" with_items : "{{ running_processes.stdout_lines }}" - wait_for : path : "/proc/{{ item }}/status" state : absent with_items : "{{ running_processes.stdout_lines }}" ignore_errors : yes register : crunchify_processes - name : Force kill stuck processes ignore_errors : yes shell : "kill -9 {{ item }}" with_items : "{{ crunchify_processes.results | select('failed') | map(attribute='item') | list }}" |
هنا ملف playbook غير المألوف يحصل على جميع عمليات java ، مما يؤدي إلى قتلها باستخدام أمر kill -9
البسيط.

تنفيذ Ansible Playbook:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
bash1 . 2 $ ansible - playbook - i . / crunchify - hosts crunchify - grep - kill - process . yml PLAY [ crunchify ] ************************************************************************************************************************************************************** TASK [ Gathering Facts ] ******************************************************************************************************************************************************** ok : [ 3.16.83.84 ] TASK [ Get running processes list from remote host ] **************************************************************************************************************************** changed : [ 3.16.83.84 ] TASK [ Kill running processes ] ************************************************************************************************************************************************* changed : [ 3.16.83.84 ] = > ( item = 18174 ) failed : [ 3.16.83.84 ] ( item = 18342 ) = > { "changed" : true , "cmd" : "kill 18342" , "delta" : "0:00:00.002602" , "end" : "2019-05-10 15:20:36.957062" , "item" : "18342" , "msg" : "non-zero return code" , "rc" : 1 , "start" : "2019-05-10 15:20:36.954460" , "stderr" : "/bin/sh: 1: kill: No such process" , "stderr_lines" : [ "/bin/sh: 1: kill: No such process" ] , "stdout" : "" , "stdout_lines" : [ ] } failed : [ 3.16.83.84 ] ( item = 18344 ) = > { "changed" : true , "cmd" : "kill 18344" , "delta" : "0:00:00.002648" , "end" : "2019-05-10 15:20:38.479354" , "item" : "18344" , "msg" : "non-zero return code" , "rc" : 1 , "start" : "2019-05-10 15:20:38.476706" , "stderr" : "/bin/sh: 1: kill: No such process" , "stderr_lines" : [ "/bin/sh: 1: kill: No such process" ] , "stdout" : "" , "stdout_lines" : [ ] } . . . ignoring TASK [ wait_for ] *************************************************************************************************************************************************************** ok : [ 3.16.83.84 ] = > ( item = 18174 ) ok : [ 3.16.83.84 ] = > ( item = 18342 ) ok : [ 3.16.83.84 ] = > ( item = 18344 ) TASK [ Force kill stuck processes ] ********************************************************************************************************************************************* PLAY RECAP * ******************************************************************************************************************************************************************* 3.16.83.84 : ok = 4 changed = 2 unreachable = 0 failed = 0 |
كيف تتحقق؟
فقط حاول إجراء عملية grep مرة أخرى على المضيف البعيد.
1 2 |
ubuntu @ ip - 172 - 31 - 10 - 150 : ~ $ ps - few | grep CrunchifyAlwaysRunningProgram ubuntu 18484 15069 0 15 : 22 pts / 0 00 : 00 : 00 grep -- color = auto CrunchifyAlwaysRunningProgram |
كما لاحظت ، لن ترى process ID 18174
في القائمة ولا توجد أي عملية جافا قيد التشغيل.
هذا هو.
هذه هي أبسط طريقة لإجراء عملية grep Java وقتل باستخدام Ansible. اسمحوا لي أن أعرف إذا كنت تواجه أي مشكلة في تشغيل Ansible playbook
هذا.