Ini bisa rumit, karena Anda dapat memiliki contoh terpisah dari proses yang sama yang hidup secara mandiri. Misalnya server mendengarkan pada port yang berbeda, atau layanan berjalan sebagai pengguna yang berbeda. Untuk membedakan di antara contoh-contoh ini, Anda perlu memberi mereka masing-masing tag unik. Tag sering berupa file, tetapi bisa berupa soket lokal di namespace abstrak, port TCP, dll. - pengidentifikasi unik apa pun akan melakukannya. Ketika tag adalah file, itu bisa berupa file biasa yang berisi ID proses (pidfile), atau pipa atau soket bernama tempat file itu mendengarkan, dll. Idealnya, tag adalah titik akhir komunikasi yang memungkinkan klien untuk terhubung untuk proses itu.
Setiap jenis tag yang berbeda ini menghasilkan cara yang berbeda untuk memeriksa apakah instance yang Anda cari sudah aktif dan berjalan. Misalnya, dengan soket file lokal, coba sambungkan ke sana, dan mulai prosesnya jika tidak ada proses mendengarkan pada soket itu. Jika tag tersebut adalah pidfile, periksa apakah ada proses dengan ID proses itu, tetapi berhati-hatilah bahwa ini rapuh, karena jika prosesnya telah mati, mungkin ada proses yang tidak terkait yang telah menggunakan kembali ID-nya. Berhati-hatilah bahwa jika dua klien mencoba mencapai proses dalam kerangka waktu yang singkat, mereka mungkin menemukan bahwa proses tersebut tidak ada dan keduanya berusaha untuk memulainya; melindungi dengan benar dari kondisi balapan ini bisa rumit.
Lebih mudah untuk mengelola instance ketika mereka semua dimulai oleh proses penyelia yang sama, dan proses pengawas mendeteksi ketika instance mati dan bereaksi sesuai. Banyak program pemantauan layanan yang dapat melakukan ini.
Jika program tidak merespons pada titik akhir komunikasi yang diketahui dan tidak dikelola oleh program pengawas, tag orang miskin adalah pidfile: file yang berisi ID proses. Saat Anda memulai proses, tulis pid ke file dengan nama yang sudah diatur sebelumnya. Ketika Anda membutuhkan proses untuk eksis, baca pidfile dan lihat apakah ada proses dengan pid itu. Saat Anda membunuh prosesnya, hapus pidfile. Masalah yang paling menonjol dengan pidfile yang tidak diawasi adalah bahwa jika proses mati, pidnya dapat digunakan kembali oleh beberapa proses yang tidak terkait. Anda setidaknya harus memeriksa nama proses atau proses yang dapat dieksekusi untuk memastikan bahwa Anda berbicara dengan proses yang benar. Banyak varian unix yang memiliki perintah pgrep :pgrep SOMENAME mencantumkan proses yang namanya mengandung SOMENAME sebagai substring, dengan opsi tambahan untuk membatasi pengguna tertentu, untuk memerlukan kecocokan yang tepat, untuk mengubah mana dari beberapa kemungkinan gagasan "nama proses" yang digunakan, dll.
ps -ef | grep -v grep | grep "process_name" || run_command_here