17.5. ÐÑклÑÑение ÑеÑвеÑа
СеÑÐ²ÐµÑ Ð±Ð°Ð· даннÑÑ
можно оÑклÑÑиÑÑ Ð½ÐµÑколÑкими ÑпоÑобами. ÐÑ Ð²ÑбиÑаеÑе ÑÐ¾Ñ Ð¸Ð»Ð¸ иной ваÑÐ¸Ð°Ð½Ñ Ð¾ÑклÑÑениÑ, поÑÑÐ»Ð°Ñ ÑазнÑе ÑÐ¸Ð³Ð½Ð°Ð»Ñ Ð³Ð»Ð°Ð²Ð½Ð¾Ð¼Ñ Ð¿ÑоÑеÑÑÑ postgres.
- SIGTERM
ÐапÑÑÐºÐ°ÐµÑ Ñак назÑваемое Ñмное вÑклÑÑение. ÐолÑÑив SIGTERM, ÑеÑÐ²ÐµÑ Ð¿ÐµÑеÑÑаÑÑ Ð¿ÑинимаÑÑ Ð½Ð¾Ð²Ñе подклÑÑениÑ, но позволÑÐµÑ Ð²Ñем ÑÑÑеÑÑвÑÑÑим ÑеанÑам законÑиÑÑ ÑабоÑÑ Ð² ÑÑаÑном Ñежиме. СеÑÐ²ÐµÑ Ð±ÑÐ´ÐµÑ Ð¾ÑклÑÑÑн ÑолÑко поÑле завеÑÑÐµÐ½Ð¸Ñ Ð²ÑÐµÑ ÑеанÑов. ÐÑли ÑеÑÐ²ÐµÑ Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð² Ñежиме аÑÑ Ð¸Ð²Ð°Ñии, ÑеÑÐ²ÐµÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑно Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ Ð²ÑÑ Ð¾Ð´Ð° из ÑÑого Ñежима. ÐÑи ÑÑом в данном ÑлÑÑае ÑеÑÐ²ÐµÑ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÑÐµÑ ÑÑÑанавливаÑÑ Ð½Ð¾Ð²Ñе подклÑÑениÑ, но ÑолÑко Ð´Ð»Ñ ÑÑпеÑполÑзоваÑелей (ÑÑо иÑклÑÑение позволÑÐµÑ ÑÑпеÑполÑзоваÑÐµÐ»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑÑиÑÑÑÑ Ð¸ пÑеÑваÑÑ Ð°ÑÑ Ð¸Ð²Ð°ÑиÑ). ÐÑли полÑÑÐ°Ñ ÑÑÐ¾Ñ Ñигнал, ÑеÑÐ²ÐµÑ Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð² пÑоÑеÑÑе воÑÑÑановлениÑ, воÑÑÑановление и поÑÐ¾ÐºÐ¾Ð²Ð°Ñ ÑепликаÑÐ¸Ñ Ð±ÑдÑÑ Ð¿ÑеÑÐ²Ð°Ð½Ñ ÑолÑко поÑле завеÑÑÐµÐ½Ð¸Ñ Ð²ÑÐµÑ Ð¾Ð±ÑÑнÑÑ ÑеанÑов.
- SIGINT
ÐапÑÑÐºÐ°ÐµÑ Ð±ÑÑÑÑое вÑклÑÑение. СеÑÐ²ÐµÑ Ð·Ð°Ð¿ÑеÑÐ°ÐµÑ Ð½Ð¾Ð²Ñе подклÑÑÐµÐ½Ð¸Ñ Ð¸ поÑÑÐ»Ð°ÐµÑ Ð²Ñем ÑабоÑаÑÑим ÑеÑвеÑнÑм пÑоÑеÑÑам Ñигнал SIGTERM, в ÑезÑлÑÑаÑе Ñего Ð¸Ñ ÑÑанзакÑии пÑеÑÑваÑÑÑÑ Ð¸ Ñами пÑоÑеÑÑÑ Ð·Ð°Ð²ÐµÑÑаÑÑÑÑ. УпÑавлÑÑÑий пÑоÑеÑÑ Ð¶Ð´ÑÑ, пока бÑдÑÑ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ñ Ð²Ñе ÑÑи пÑоÑеÑÑÑ Ð¸ заÑем завеÑÑаеÑÑÑ Ñам. ÐÑли ÑеÑÐ²ÐµÑ Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð² Ñежиме аÑÑ Ð¸Ð²Ð°Ñии, аÑÑ Ð¸Ð²Ð°ÑÐ¸Ñ Ð¿ÑеÑÑваеÑÑÑ, Ñак ÑÑо аÑÑ Ð¸Ð² оказÑваеÑÑÑ Ð½ÐµÐ¿Ð¾Ð»Ð½Ñм.
- SIGQUIT
ÐапÑÑÐºÐ°ÐµÑ Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾Ðµ вÑклÑÑение. СеÑÐ²ÐµÑ Ð¾ÑпÑавлÑÐµÑ Ð²Ñем доÑеÑним пÑоÑеÑÑам Ñигнал SIGQUIT и ждÑÑ Ð¸Ñ Ð·Ð°Ð²ÐµÑÑениÑ. ÐÑли какие-либо из Ð½Ð¸Ñ Ð½Ðµ завеÑÑаÑÑÑÑ Ð² ÑеÑение 5 ÑекÑнд, им поÑÑлаеÑÑÑ SIGKILL. ÐлавнÑй пÑоÑеÑÑ ÑеÑвеÑа завеÑÑаеÑÑÑ, как ÑолÑко бÑдÑÑ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ñ Ð²Ñе доÑеÑние пÑоÑеÑÑÑ, не вÑполнÑÑ Ð¾Ð±ÑÑнÑÑ Ð¿ÑоÑедÑÑÑ Ð¾ÑÑановки ÐÐ. Ð ÑезÑлÑÑаÑе пÑи поÑледÑÑÑем запÑÑке бÑÐ´ÐµÑ Ð·Ð°Ð¿ÑÑен пÑоÑеÑÑ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ (воÑпÑÐ¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ из жÑÑнала). Такой ваÑÐ¸Ð°Ð½Ñ Ð²ÑклÑÑÐµÐ½Ð¸Ñ ÑекомендÑеÑÑÑ ÑолÑко в ÑкÑÑÑеннÑÑ ÑиÑÑаÑиÑÑ .
УдобнÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð¾ÑпÑавлÑÑÑ ÑÑи ÑигналÑ, оÑклÑÑаÑÑие ÑеÑвеÑ, пÑедоÑÑавлÑÐµÑ Ð¿ÑогÑамма pg_ctl. ÐÑоме Ñого, в ÑиÑÑемаÑ
, оÑлиÑнÑÑ
Ð¾Ñ Windows, ÑооÑвеÑÑÑвÑÑÑий Ñигнал можно оÑпÑавиÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ kill. PID оÑновного пÑоÑеÑÑа postgres можно ÑзнаÑÑ, воÑполÑзовавÑиÑÑ Ð¿ÑогÑаммой ps, либо пÑоÑиÑав Ñайл postmaster.pid в каÑалоге даннÑÑ
. ÐапÑимеÑ, можно вÑполниÑÑ Ð±ÑÑÑÑое вÑклÑÑение Ñак:
$ kill -INT `head -1 /usr/local/pgsql/data/postmaster.pid`
Ðажно
ÐÐ»Ñ Ð²ÑклÑÑÐµÐ½Ð¸Ñ ÑеÑвеÑа не ÑледÑÐµÑ Ð¸ÑполÑзоваÑÑ Ñигнал SIGKILL. ÐÑи Ñаком вÑклÑÑении ÑеÑÐ²ÐµÑ Ð½Ðµ ÑÐ¼Ð¾Ð¶ÐµÑ Ð¾ÑвободиÑÑ ÑазделÑемÑÑ Ð¿Ð°Ð¼ÑÑÑ Ð¸ ÑемаÑоÑÑ, и, возможно, ÑÑо пÑидÑÑÑÑ Ð´ÐµÐ»Ð°ÑÑ Ð²ÑÑÑнÑÑ, ÑÑÐ¾Ð±Ñ ÑеÑÐ²ÐµÑ Ð¼Ð¾Ð³ запÑÑÑиÑÑÑÑ Ñнова. ÐÑоме Ñого, пÑи ÑниÑÑожении главного пÑоÑеÑÑа postgres Ñигналом SIGKILL, он не ÑÑÐ¿ÐµÐµÑ Ð¿ÐµÑедаÑÑ ÑÑÐ¾Ñ Ñигнал Ñвоим доÑеÑним пÑоÑеÑÑам, Ñак ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑÑÑ Ð·Ð°Ð²ÐµÑÑаÑÑ Ð¸ иÑ
вÑÑÑнÑÑ.
ЧÑÐ¾Ð±Ñ Ð·Ð°Ð²ÐµÑÑиÑÑ Ð¾ÑделÑнÑй ÑеанÑ, не пÑеÑÑÐ²Ð°Ñ ÑабоÑÑ Ð´ÑÑгиÑ
ÑеанÑов, воÑполÑзÑйÑеÑÑ ÑÑнкÑией pg_terminate_backend() (Ñм. ТаблиÑÑ 9.77) или оÑпÑавÑÑе Ñигнал SIGTERM доÑеÑÐ½ÐµÐ¼Ñ Ð¿ÑоÑеÑÑÑ, обÑлÑживаÑÑÐµÐ¼Ñ ÑÑÐ¾Ñ ÑеанÑ.