GNU/Linux >> Belajar Linux >  >> Linux

Cara membunuh skrip python dengan skrip bash

Anda dapat menggunakan ! untuk mendapatkan PID dari perintah terakhir.

Saya menyarankan sesuatu yang mirip dengan yang berikut, yang juga memeriksa apakah proses yang ingin Anda jalankan sudah berjalan:

#!/bin/bash

if [[ ! -e /tmp/test.py.pid ]]; then   # Check if the file already exists
    python test.py &                   #+and if so do not run another process.
    echo $! > /tmp/test.py.pid
else
    echo -n "ERROR: The process is already running with pid "
    cat /tmp/test.py.pid
    echo
fi

Lalu, ketika Anda ingin membunuhnya:

#!/bin/bash

if [[ -e /tmp/test.py.pid ]]; then   # If the file do not exists, then the
    kill `cat /tmp/test.py.pid`      #+the process is not running. Useless
    rm /tmp/test.py.pid              #+trying to kill it.
else
    echo "test.py is not running"
fi

Tentu saja jika pembunuhan harus dilakukan beberapa saat setelah perintah diluncurkan, Anda dapat memasukkan semuanya ke dalam skrip yang sama:

#!/bin/bash

python test.py &                    # This does not check if the command
echo $! > /tmp/test.py.pid          #+has already been executed. But,
                                    #+would have problems if more than 1
sleep(<number_of_seconds_to_wait>)  #+have been started since the pid file would.
                                    #+be overwritten.
if [[ -e /tmp/test.py.pid ]]; then
    kill `cat /tmp/test.py.pid`
else
    echo "test.py is not running"
fi

Jika Anda ingin dapat menjalankan lebih banyak perintah dengan nama yang sama secara bersamaan dan dapat mematikannya secara selektif, diperlukan sedikit pengeditan skrip. Katakan padaku, aku akan mencoba membantumu!

Dengan sesuatu seperti ini Anda yakin Anda membunuh apa yang ingin Anda bunuh. Perintah seperti pkill atau mengambil ps aux bisa berisiko.


Gunakan pkill perintah sebagai

pkill -f test.py

(atau) cara yang lebih bodoh menggunakan pgrep untuk mencari id proses yang sebenarnya

kill $(pgrep -f 'python test.py')

Atau jika lebih dari satu instance dari program yang sedang berjalan teridentifikasi dan semuanya perlu dimatikan, gunakan killall(1) di Linux dan BSD

killall test.py 

Linux
  1. Bagaimana Cara Men-debug Skrip Bash?

  2. Cara Memisahkan String dalam Skrip Bash

  3. Periksa Berapa Lama Skrip Bash Dijalankan Dengan Perintah Waktu

  1. Bagaimana cara menambahkan akun pengguna DAN kata sandi secara otomatis dengan skrip Bash?

  2. Bagaimana cara meneruskan parameter ke skrip Bash?

  3. nama dasar dengan spasi dalam skrip bash?

  1. Cara Dockerize Aplikasi Python Dengan Miniconda

  2. Panggil skrip Python dari bash dengan argumen

  3. Bagaimana cara menjalankan skrip bash?