it-swarm-id.com

Untuk apa file pid dan kunci?

Saya sering melihat bahwa program menentukan file pid dan kunci. Dan saya tidak yakin apa yang mereka lakukan.

Misalnya, saat mengompilasi nginx:

--pid-path=/var/run/nginx.pid \
--lock-path=/var/lock/nginx.lock \

Adakah yang bisa menjelaskan hal ini?

80
Stann

file pid ditulis oleh beberapa program untuk merekam ID proses mereka saat mereka mulai. Ini memiliki beberapa tujuan:

  • Ini adalah sinyal bagi proses lain dan pengguna sistem bahwa program tertentu sedang berjalan, atau paling tidak mulai berhasil.
  • Hal ini memungkinkan seseorang untuk menulis skrip dengan sangat mudah untuk memeriksa apakah skrip berjalan dan mengeluarkan perintah kill biasa jika seseorang ingin mengakhirinya.
  • Ini adalah cara yang murah bagi suatu program untuk melihat apakah instance yang berjalan sebelumnya tidak berhasil keluar.

Kehadiran file pid tidak menjamin bahwa proses id tertentu berjalan, tentu saja, jadi metode ini tidak 100% sangat mudah tetapi "cukup baik" dalam banyak kasus. Memeriksa apakah ada PID tertentu dalam tabel proses tidak sepenuhnya portabel di seluruh sistem operasi mirip-UNIX kecuali Anda ingin bergantung pada utilitas ps, yang mungkin tidak diinginkan untuk memanggil semua kasus (dan saya percaya beberapa sistem operasi mirip UNIX mengimplementasikan ps secara berbeda pula).

File kunci digunakan oleh program untuk memastikan dua contoh program yang terpisah (berperilaku baik), yang mungkin berjalan bersamaan pada satu sistem, tidak mengakses sesuatu yang lain pada saat yang sama. Idenya adalah sebelum program mengakses sumber dayanya, ia memeriksa keberadaan file kunci, dan jika file kunci ada, apakah error keluar atau menunggu sampai hilang. Ketika tidak ada, program yang ingin "memperoleh" sumber daya membuat file, dan kemudian contoh lain yang mungkin muncul nanti akan menunggu proses ini selesai. Tentu saja, ini mengasumsikan program "memperoleh" kunci memang melepaskannya dan tidak lupa menghapus file kunci.

Ini berfungsi karena filesystem di bawah semua sistem operasi mirip UNIX memberlakukan serialisasi, yang berarti hanya satu perubahan pada filesystem yang benar-benar terjadi pada waktu tertentu. Semacam kunci suka dengan database dan semacamnya.

90
LawrenceC

File-file ini sering digunakan oleh daemon yang seharusnya hanya dijalankan sekali pada suatu sistem. File PID biasanya berisi nomor ID proses dari program yang sudah diluncurkan dan dijalankan jika ada. Juga, ketika dijalankan, itu menciptakan file kunci. Selama file kunci ada, itu tidak akan memulai yang lain tanpa campur tangan pengguna. Jika file kunci ada dan proses id yang disebutkan dalam file pid tidak berjalan, daemon dianggap dalam keadaan "mati", yang berarti itu seharusnya berjalan tetapi tidak mungkin karena crash atau shutdown yang tidak tepat . Ini mungkin memulai skenario startup/restart khusus untuk beberapa program. Mematikannya dengan benar akan menghapus file kunci.

14
Caleb

File PID akan berisi ID Proses dari proses yang sedang berjalan. Ini memiliki berbagai kegunaan; Anda dapat membacanya dan memeriksa apakah prosesnya masih berjalan dan mengambil tindakan yang sesuai atau membacanya dan mematikan prosesnya.

File kunci kemungkinan besar adalah spesifik aplikasi. File kunci digunakan untuk menunjukkan bahwa beberapa sumber daya sedang digunakan dan bahwa proses yang menginginkan akses harus menunggu sampai sumber daya dibebaskan sebelum melanjutkan.

8
user591