Ansible – Bagaimana cara Grep (ps -few) dan Membunuh semua proses linux yang berjalan di Remote Host?
Diterbitkan: 2022-02-24Ansible adalah alat admin sistem yang sangat menakjubkan. Kami telah menerbitkan sejumlah artikel tentang Ansible dalam beberapa minggu terakhir tentang cara menyalin file di host jarak jauh, Cara Menjalankan Perintah di Host jarak jauh, cara menginstal Java, Python di host jarak jauh, dan sebagainya.
Dalam tutorial ini, kita akan membahas cara grep proses java yang berjalan di host jarak jauh dan mematikan proses jarak jauh itu menggunakan buku pedoman sederhana yang memungkinkan.
Berikut adalah langkah-langkah yang akan kita lakukan dalam tutorial ini:
- Pada host jarak jauh, jalankan CrunchifyAlwaysRunningProgram.java
- Ikuti tutorial Cara Menjalankan Program selamanya di Java
- jalankan program java menggunakan
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' |
Bagaimana cara memeriksa apakah proses dimulai dan berjalan pada host jarak jauh?
periksa 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 |
- buat file
crunchify-hosts
yang memiliki IP host jarak jauh - buat file
crunchify-grep-kill-process.yml
dengan tugas yang memungkinkan untuk grep dan kill proses java - jalankan perintah: ansible-playbook -i ./crunchify-hosts crunchify-grep-kill-process.yml
- periksa hasil di konsol terminal macOS
file 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 |
File berisi alamat IP jarak jauh dan kredensial yang akan membantu memungkinkan untuk masuk tanpa kata sandi.
file 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 }}" |
Di sini file playbook yang memungkinkan mendapatkan semua proses Java, membunuhnya menggunakan perintah kill -9
sederhana.

Jalankan Playbook yang Mungkin:
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 |
Bagaimana cara memverifikasi?
Coba saja proses grep lagi di Host jarak jauh.
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 |
Seperti yang Anda perhatikan, Anda tidak akan melihat process ID 18174
dalam daftar dan tidak ada proses Java yang berjalan.
Itu dia.
Ini adalah cara paling sederhana untuk mengambil proses Java dan membunuh menggunakan Ansible. Beri tahu saya jika Anda menghadapi masalah dalam menjalankan Ansible playbook
ini.