Saya ingin memiliki skrip shell seperti ini:
my-app &
echo $my-app-pid
Tapi saya tidak tahu bagaimana cara mendapatkan pid dari perintah yang baru saja dieksekusi.
Saya tahu saya bisa menggunakan jobs -p my-app
perintah untuk menangkap pid. Tetapi jika saya ingin menjalankan shell beberapa kali, metode ini tidak akan berfungsi. Karena jobspec bersifat ambigu.
bash
shell
process
background-process
David S.
sumber
sumber
/bin/sh -c 'echo $$>/tmp/my.pid && exec program args' &
- sysfault 24 Nov '10 jam 14:28echo $!
my-app & myVar=$! ; fg
.fg
membawa proses ke latar depan lagi. Saya kemudian dapat mencetakecho $myVar
nanti dan saya cukup yakin bahwa aplikasi saya sudah selesai.Dapatkan
PID
:Simpan
PID
dalam variabel:Simpan semua contoh
PID
dalam file teks:Simpan output, kesalahan, dan
PID
dalam file terpisah:sumber
my-app
selesai, dan mungkin lebih buruk PID-nya akan digunakan kembali nanti, Anda akan memiliki informasi buruk di file Anda. Saya kira jawaban ini tidak banyak menambah nilai pada jawaban yang diterima yang adasleep 4 | grep INVALID & export MY_PID=$!; fg; echo $MY_PID returned with $?
`main &
cara untuk mengambil PID?Coba sesuatu seperti
sumber
Coba sesuatu seperti ini:
Menempatkan huruf pertama dari proses Anda antara
[
]
memastikan Anda tidak mendapatkangrep
proses dalam daftar Anda. Jika perlu Anda juga dapat menambahkan grep pada nama pengguna Anda.sumber
my-app
dijalankan lebih dari sekali - davidshen84 secara khusus khawatir tentang kasus itu.pgrep
.