Ansible - Uzak Ana Bilgisayarda çalışan herhangi bir linux işlemini Grep (ps -few) ve Kill nasıl yapılır?
Yayınlanan: 2022-02-24Ansible oldukça şaşırtıcı bir sistem yöneticisi aracıdır. Son birkaç hafta içinde Ansible'da uzak ana bilgisayarda dosyaların nasıl kopyalanacağı, Uzak Ana Bilgisayarlarda Komutların Nasıl Yürütüleceği, Java, Python'un uzak ana bilgisayara nasıl kurulacağı ve benzeri konularda çok sayıda makale yayınladık.
Bu eğitimde, uzak ana bilgisayarda çalışan java işleminin nasıl grep edileceğini ve basit ansible playbook kullanarak bu uzak işlemi nasıl sonlandıracağımızı gözden geçireceğiz.
İşte bu eğitimde yapacağımız adımlar:
- Uzak ana bilgisayarda CrunchifyAlwaysRunningProgram.java'yı çalıştırın
- Java'da Bir Programın Sonsuza Kadar Çalıştırılmasıyla ilgili öğreticiyi izleyin
-
nohup java CrunchifyAlwaysRunningProgram &
kullanarak java programını çalıştırın
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' |
Uzak ana bilgisayarda işlemin başlatılıp başlatılmadığı nasıl kontrol edilir?
işlem ID 18174
kontrol edin.
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 |
- uzak ana bilgisayar IP'sine sahip dosya
crunchify-hosts
dosyası oluşturun -
crunchify-grep-kill-process.yml
dosyasını oluşturun, java işlemini grep ve kill için ansible görevleri vardır - çalıştırma komutu: ansible-playbook -i ./crunchify-hosts crunchify-grep-kill-process.yml
- macOS terminal konsolunda sonucu kontrol edin
crunchify-hosts dosyası
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 |
Dosya, parola olmadan oturum açmaya yardımcı olacak uzak IP adresi ve kimlik bilgilerini içerir.
crunchify-grep-kill-process.yml dosyası
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 }}" |
Burada ansible playbook dosyası tüm Java işlemlerini alıyor ve basit kill -9
komutunu kullanarak öldürüyor.

Ansible Playbook'u yürütün:
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 |
Doğrulama nasıl yapılır?
Sadece uzak ana bilgisayarda işlemi tekrar grep yapmayı deneyin.
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 |
Fark ettiğiniz gibi, process ID 18174
listede görmeyeceksiniz ve çalışan herhangi bir Java işlemi yok.
Bu kadar.
Bu, Java sürecini ele almanın ve Ansible kullanarak öldürmenin en basit yoludur. Bu Ansible playbook
çalışma kitabını çalıştırırken herhangi bir sorunla karşılaşırsanız bana bildirin.