Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«UNIX: Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сСтСвых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 104

Автор Уильям БтивСнс

ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ являСтся ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΌ эффСктом запуска ΠΈΠ· систСмного сцСнария ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² процСссС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°). Если ΠΆΠ΅ Π΄Π΅ΠΌΠΎΠ½ запускаСтся ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΎΡ‚ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ взаимодСйствия с систСмами управлСния Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ, сСансами Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅.

БущСствуСт нСсколько способов Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΄Π΅ΠΌΠΎΠ½:

1. Π’ΠΎ врСмя запуска систСмы ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Π΅ΠΌΠΎΠ½Ρ‹ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ сцСнариями ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ систСмы. Π­Ρ‚ΠΈ сцСнарии часто находятся Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /etc  ΠΈΠ»ΠΈ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, имя ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ начинаСтся с /etc/rc, Π½ΠΎ ΠΈΡ… располоТСниС ΠΈ содСрТаниС зависят ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’Π°ΠΊΠΈΠ΅ Π΄Π΅ΠΌΠΎΠ½Ρ‹ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

НСкоторыС сСтСвыС сСрвСры часто Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΈΠ· сцСнариСв ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ: супСрсСрвСр inetd (ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡƒΠ½ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ рассмотрим), Π²Π΅Π±-сСрвСр ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ сСрвСр (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° sendmail). Π”Π΅ΠΌΠΎΠ½ syslogd, обсуТдаСмый Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 13.2, Ρ‚ΠΎΠΆΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ запускаСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· этих сцСнариСв.

2. ΠœΠ½ΠΎΠ³ΠΈΠ΅ сСтСвыС сСрвСры Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ супСрсСрвСром inetd, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ опишСм Π΄Π°Π»Π΅Π΅ Π² этой Π³Π»Π°Π²Π΅. Π‘Π°ΠΌ inetd запускаСтся Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· сцСнариСв Π½Π° этапС 1. БупСрсСрвСр inetd ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π΅Ρ‚ сСтСвыС ΠΏΠΎΡ€Ρ‚Ρ‹ (Telnet, FTP ΠΈ Ρ‚.Π΄.), ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ запрос, Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ сСрвСр (сСрвСр Telnet, сСрвСр FTP ΠΈ Ρ‚.Π΄.).

3. Π—Π° пСриодичСскиС процСссы Π² систСмС ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π΄Π΅ΠΌΠΎΠ½ cron, ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π΄Π΅ΠΌΠΎΠ½Ρ‹. Π‘Π°ΠΌ Π΄Π΅ΠΌΠΎΠ½ cron запускаСтся Π½Π° этапС 1 Π²ΠΎ врСмя Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ систСмы.

4. Π•сли ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, примСняСтся ΠΊΠΎΠΌΠ°Π½Π΄Π° at. Π”Π΅ΠΌΠΎΠ½ cron ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅Ρ‚ эти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ врСмя ΠΈΡ… выполнСния, поэтому ΠΎΠ½ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π΄Π΅ΠΌΠΎΠ½Ρ‹.

5. Π”Π΅ΠΌΠΎΠ½Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠ², ΠΊΠ°ΠΊ Π² основном, Ρ‚Π°ΠΊ ΠΈ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ…. Π­Ρ‚ΠΎ часто осущСствляСтся ΠΏΡ€ΠΈ тСстировании Π΄Π΅ΠΌΠΎΠ½Π° ΠΈΠ»ΠΈ пСрСзапускС Π΄Π΅ΠΌΠΎΠ½Π°, Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎ Π½Π΅ΠΊΠΎΠ΅ΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρƒ Π΄Π΅ΠΌΠΎΠ½Π° Π½Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°, Π΅ΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ срСдства для Π²Ρ‹Π²ΠΎΠ΄Π° сообщСний ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… событиях β€” это ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ сообщСния ΠΈΠ»ΠΈ экстрСнныС сообщСния ΠΎΠ± Π°Π²Π°Ρ€ΠΈΠΉΠ½Ρ‹Ρ… ситуациях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ администратор. ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ syslog β€” стандартный способ Π²Ρ‹Π²ΠΎΠ΄Π° Ρ‚Π°ΠΊΠΈΡ… сообщСний. Π­Ρ‚Π° функция посылаСт сообщСния Π΄Π΅ΠΌΠΎΠ½Ρƒ syslogd.

13.2. Π”Π΅ΠΌΠΎΠ½ syslogd

БистСмы Unix ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ Π΄Π΅ΠΌΠΎΠ½ syslogd Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· сцСнариСв ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ систСмы, ΠΈ ΠΎΠ½ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚, ΠΏΠΎΠΊΠ° систСма Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ syslogd, происходящиС ΠΎΡ‚ Π‘Π΅Ρ€ΠΊΠ»ΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΏΡ€ΠΈ запускС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

1. Π‘читываСтся Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ /etc/syslog.conf, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ сообщСний, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Ρ… Π΄Π΅ΠΌΠΎΠ½ΠΎΠΌ. Π­Ρ‚ΠΈ сообщСния ΠΌΠΎΠ³ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒΡΡ Π² Ρ„Π°ΠΉΠ» (особой Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒΡŽ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° являСтся /dev/console, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ записываСт сообщСниС Π½Π° консоль), ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ (Ссли этот ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ вошСл Π² систСму) ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π΄Π΅ΠΌΠΎΠ½Ρƒ syslogd Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΡƒΠ·Π»Π΅.

2. Π‘оздаСтся Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹ΠΉ сокСт Unix ΠΈ связываСтся с ΠΏΠΎΠ»Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ /var/run/log (Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… систСмах /dev/log).

3. Π‘оздаСтся сокСт UDP ΠΈ связываСтся с ΠΏΠΎΡ€Ρ‚ΠΎΠΌ 514 (слуТба syslog).

4. ΠžΡ‚крываСтся Ρ„Π°ΠΉΠ» (устройство) /dev/klog. Π›ΡŽΠ±Ρ‹Π΅ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… Π²Π½ΡƒΡ‚Ρ€ΠΈ ядра ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° этом устройствС.

Π”Π΅ΠΌΠΎΠ½ syslogd выполняСтся Π² бСсконСчном Ρ†ΠΈΠΊΠ»Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ вызываСтся функция select, ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰Π°Ρ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… Π΅Π³ΠΎ дСскрипторов (ΠΈΠ· ΠΏ. 2, 3 ΠΈ 4) станСт Π³ΠΎΡ‚ΠΎΠ² для чтСния. Π­Ρ‚ΠΎΡ‚ Π΄Π΅ΠΌΠΎΠ½ считываСт сообщСниС ΠΈ выполняСт Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ прСдписываСт Π΄Π΅Π»Π°Ρ‚ΡŒ с этим сообщСниСм Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. Если Π΄Π΅ΠΌΠΎΠ½ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ сигнал SIGHUP, ΠΎΠ½ Π·Π°Π½ΠΎΠ²ΠΎ считываСт Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

ΠŸΠ Π˜ΠœΠ•Π§ΠΠΠ˜Π•

Π‘ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания сокСта UDP, Ссли ΠΎΠ½Π° Π½Π΅ Π·Π°Π΄Π°Π½Π° администратором, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ссли ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΡƒ ΡƒΠ³ΠΎΠ΄Π½ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΡ‹ UDP Π½Π° этот ΠΏΠΎΡ€Ρ‚ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, заполняя ΠΏΡ€ΠΈΠ΅ΠΌΠ½Ρ‹ΠΉ Π±ΡƒΡ„Π΅Ρ€ Π΅Π³ΠΎ сокСта), это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π·Π°ΠΊΠΎΠ½Π½Ρ‹Π΅ сообщСния Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ (Π°Ρ‚Π°ΠΊΠ° Ρ‚ΠΈΠΏΠ° ΠΎΡ‚ΠΊΠ°Π· Π² обслуТивании) ΠΈΠ»ΠΈ пСрСполнится файловая систСма ΠΈΠ·-Π·Π° Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ роста ΠΆΡƒΡ€Π½Π°Π»ΠΎΠ².

ΠœΠ΅ΠΆΠ΄Ρƒ рСализациями Π΄Π΅ΠΌΠΎΠ½Π° syslogd ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ различия. НапримСр, Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹Π΅ сокСты Unix ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π‘Π΅Ρ€ΠΊΠ»ΠΈ-рСализациями, Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ System V ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹ΠΉ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ (streams log driver). Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, происходящиС ΠΎΡ‚ Π‘Π΅Ρ€ΠΊΠ»ΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹Ρ… сокСтов Unix Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎΠ»Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС эти тонкости, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ syslog.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ сообщСния ΠΎ событиях для записи Π² ΠΆΡƒΡ€Π½Π°Π» (log messages) Π΄Π΅ΠΌΠΎΠ½Ρƒ syslogd ΠΈΠ· Π½Π°ΡˆΠΈΡ… Π΄Π΅ΠΌΠΎΠ½ΠΎΠ², создав Π΄Π΅ΠΉΡ‚Π°Π³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹ΠΉ сокСт Unix ΠΈ указывая ΠΏΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ имя, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ связан Π΄Π΅ΠΌΠΎΠ½, Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ простым интСрфСйсом являСтся функция syslog, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ описываСм Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅. Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ сокСт UDP ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ наши сообщСния Π½Π° адрСс Π·Π°ΠΊΠΎΠ»ΡŒΡ†ΠΎΠ²ΠΊΠΈ ΠΈ ΠΏΠΎΡ€Ρ‚ 514.

13.3. Ѐункция syslog

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρƒ Π΄Π΅ΠΌΠΎΠ½Π° Π½Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π°, ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ просто Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ fprintf для Π²Ρ‹Π²ΠΎΠ΄Π° Π² стандартный ΠΏΠΎΡ‚ΠΎΠΊ сообщСний ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… (stderr). ΠžΠ±Ρ‹Ρ‡Π½Π°Ρ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° записи Π² ΠΆΡƒΡ€Π½Π°Π» сообщСний для Π΄Π΅ΠΌΠΎΠ½Π° β€” это Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ syslog.

#include <syslog.h>


void syslog(int priority, const char *message, ...);

Π₯отя эта функция ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»Π°ΡΡŒ для BSD, Π² настоящСС врСмя ΠΎΠ½Π° прСдоставляСтся Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ систСм Unix. ОписаниС syslog Π² POSIX соотвСтствуСт Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ пишСм здСсь. RFC 3164 содСрТит Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, ΠΊΠ°ΡΠ°ΡŽΡ‰ΡƒΡŽΡΡ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° syslog BSD.

АргумСнт priority β€” это комбинация Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² level ΠΈ facility, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π² Ρ‚Π°Π±Π». 13.1 ΠΈ 13.2. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎΠ± этом Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² RFC 3164. АргумСнт message Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ строкС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ printf с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ спСцификации %m, которая замСняСтся сообщСниСм ΠΎΠ± ошибкС, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ errno. Π‘ΠΈΠΌΠ²ΠΎΠ» ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π² ΠΊΠΎΠ½Ρ†Π΅ строки message, Π½ΠΎ ΠΎΠ½ Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.

БообщСния для ΠΆΡƒΡ€Π½Π°Π»Π° ΠΈΠΌΠ΅ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ level (ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ) ΠΎΡ‚ 0 Π΄ΠΎ 7, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π² Ρ‚Π°Π±Π». 13.1. Π­Ρ‚ΠΎ упорядочСнныС значСния. Если ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚Π΅Π»ΡŒ Π½Π΅ Π·Π°Π΄Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ level, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ LOG_NOTICE.


Π’Π°Π±Π»ΠΈΡ†Π° 13.1. АргумСнт level ΠΆΡƒΡ€Π½Π°Π»ΡŒΠ½Ρ‹Ρ… сообщСний

Level Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ОписаниС LOG_EMERG 0 БистСма Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, экстрСнная ситуация (Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚) LOG_ALERT 1 Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ ΠΌΠ΅Ρ€Ρ‹, срочная ситуация LOG_CRIT 2 ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ ситуация LOG_ERR 3 БостояниС ошибки LOG_WARNING 4 ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ LOG_NOTICE 5 НСобычноС, хотя ΠΈ Π½Π΅ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠ΅ состояниС (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° level ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ) LOG_INFO 6 Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ΅ сообщСниС LOG_DEBUG 7 ΠžΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Π΅ сообщСния (низший ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚)

БообщСния Ρ‚Π°ΠΊΠΆΠ΅ содСрТат Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ facility для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ‚ΠΈΠΏΠ° процСсса, ΠΏΠΎΡΡ‹Π»Π°ΡŽΡ‰Π΅Π³ΠΎ сообщСниС. ΠœΡ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π΅Π³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ значСния Π² Ρ‚Π°Π±Π». 13.2. Если Π½Π΅ Π·Π°Π΄Π°Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° facility, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ β€” LOG_USER.


Π’Π°Π±Π»ΠΈΡ†Π° 13.2. АргумСнт facility ΠΆΡƒΡ€Π½Π°Π»ΡŒΠ½Ρ‹Ρ… сообщСний

facility ОписаниС LOG_AUTH БообщСния no бСзопасности/Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ LOG_AUTHPRIV БообщСния ΠΏΠΎ бСзопасности/Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ (частныС) LOG_CRON Π”Π΅ΠΌΠΎΠ½ cron LOG_DAEMON БистСмныС Π΄Π΅ΠΌΠΎΠ½Ρ‹ LOG_FTP Π”Π΅ΠΌΠΎΠ½ FTP LOG_KERN БообщСния ядра LOG_LOCAL0 Π›ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ использованиС LOG_LOCAL1 Π›ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ использованиС LOG_LOCAL2 Π›ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ использованиС LOG_LOCAL3 Π›ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ использованиС LOG_LOCAL4 Π›ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ использованиС LOG_LOCAL5 Π›ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ использованиС LOG_LOCAL6 Π›ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ использованиС LOG_LOCAL7 Π›ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ использованиС LOG_LPR Π”Π΅ΠΌΠΎΠ½ ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€Π° LOG_MAIL ΠŸΠΎΡ‡Ρ‚ΠΎΠ²Π°Ρ систСма LOG_NEWS БистСма Ρ‚Π΅Π»Π΅ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΉ LOG_SYSLOG Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ сообщСния систСмы syslog LOG_USER БообщСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ уровня (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° facility ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ) LOG_UUCP БистСма UUCP

НапримСр, Π΄Π΅ΠΌΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π·ΠΎΠ², ΠΊΠΎΠ³Π΄Π° Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ rename Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ оказываСтся Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΌ: