Dalam situasi saat ini, skrip tertentu 'calling.sh' meluncurkan skrip lain 'dipanggil.sh' di latar belakang, melakukan operasi lain, tidur sebentar, dan kemudian mengakhiri 'dipanggil.sh' dengan a pkill called.sh
. Ini berfungsi dengan baik.
Kemudian, saya juga ingin meluncurkan 'dipanggil.sh' dari terminal lain sebagai skrip mandiri di waktu lain, baik sebelum atau setelah meluncurkan calling.sh. Contoh independen ini tidak boleh dibunuh oleh 'calling.sh'.
Bagaimana saya bisa mencapai ini? Intuition mengatakan bahwa skrip panggilan harus dapat memberi tahu proses itu dimulai dari nama yang lain yang sedang berjalan saat ini.
Sebagai varian, 'calling.sh' juga dapat meluncurkan 'dipanggil' yang merupakan tautan simbolis ke 'called.sh'. Apakah ini menyulitkan dalam mengelola situasi di atas? Peringatan dan penyesuaian spesifik manakah yang membutuhkan tautan simbolis?
Jawaban:
Jangan gunakan nama untuk membunuhnya. Karena
calling.sh
skrip memanggil proses yang nanti ingin Anda bunuh, cukup gunakan$!
(dariman bash
):Jadi, jika Anda
calling.sh
seperti ini:Ubah ke ini:
sumber
$calledPid
PID induknya adalah PID daricalled.sh
.Saya harus memilih ini tetapi keluar dari skrip berkali-kali; bahkan lebih menyenangkan ketika skrip dipanggil sebagai bagian dari jadwal otomatis yang kompleks. Anda benar-benar tidak harus bergantung pada sesuatu seperti
pkill
memilih skrip mana yang akan dibunuh.Di dalam calling.sh Anda harus merekam PID dari pekerjaan yang telah Anda mulai dan bunuh secara eksplisit oleh PID.
Di dalam calling.sh:
sumber