Π ΡΠΏΠΈΡΡΠΊΠ° Π½Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ linux-api Π΅ ΠΏΠΎΡΡΠ°Π²Π΅Π½ΠΎ Π½Π° ΠΎΠ±ΡΡΠΆΠ΄Π°Π½Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ (RFC) Π·Π° Π·Π°ΠΌΡΠ½Π° Π½Π° ΠΎΡΡΠ°ΡΠ΅Π»ΠΈΡΠ΅ Π±ΠΈΠ½Π°ΡΠ½ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΠ΅ ΠΆΡΡΠ½Π°Π»ΠΈ lastlog, btmp, utmp ΠΈ wtmp Ρ Π½ΠΎΠ²ΠΈ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ SQLite ΠΊΠ°ΡΠΎ Π±Π΅ΠΊΠ΅Π½Π΄. ΠΠ½ΠΈΡΠΈΠ°ΡΠΈΠ²Π°ΡΠ° Π΅ Π½Π°ΡΠΎΡΠ΅Π½Π° ΠΊΡΠΌ ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° Π½Π°ΡΡΡΠΏΠ°Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΡΡΠ΅Π΄ ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π»ΠΈΠ²Π°Π½Π΅ Π½Π° 32-Π±ΠΈΡΠΎΠ²ΠΈ Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ Π±ΡΠΎΡΡΠΈ ΠΏΡΠ΅Π· 2038 Π³ΠΎΠ΄ΠΈΠ½Π°, Π»ΠΈΠΏΡΠ° Π½Π° ΡΠ°Π·ΡΠΈΡΡΠ΅ΠΌΠΎΡΡ, Π½ΠΈΡΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ ΠΈ Π»ΠΈΠΏΡΠ° Π½Π° Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΡΡ ΠΏΡΠΈ Π·Π°ΠΏΠΈΡΠΈΡΠ΅.
Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π·Π° ΡΠ΅ΡΠΈΠΈ ΠΈ ΠΎΠΏΠΈΡΠΈ Π·Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡ Π² Linux ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ Π±ΠΈΠ½Π°ΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Ρ ΡΠΈΠΊΡΠΈΡΠ°Π½Π° ΡΡΡΡΠΊΡΡΡΠ°:
- /var/log/lastlog β Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ Π²Ρ ΠΎΠ΄Π° (ΡΡΡΡΠΊΡΡΡΠ° Β«struct lastlogΒ» Ρ ΠΏΠΎΠ»Π΅ΠΌ Β«ll_timeΒ» 32-ΡΠ°Π·ΡΡΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° time_t);
- /var/log/btmp β Π½Π΅ΡΠ΄Π°ΡΠ½ΡΠ΅ ΠΏΠΎΠΏΡΡΠΊΠΈ Π²Ρ ΠΎΠ΄Π°;
- /var/run/utmp β ΡΠ΅ΠΊΡΡΠΈΠ΅ ΡΠ΅Π°Π½ΡΡ;
- /var/log/wtmp β ΠΈΡΡΠΎΡΠΈΡ Π²Ρ ΠΎΠ΄ΠΎΠ² ΠΈ Π²ΡΡ ΠΎΠ΄ΠΎΠ².
Π€ΠΎΡΠΌΠ°ΡΡΡ Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ Π²ΡΠ² ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΡΠ΅Π΄ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π΄Π΅ΡΠ΅ΡΠΈΠ»Π΅ΡΠΈΡ ΠΈ ΠΈΠΌΠ° ΡΠ΅Π΄ΠΈΡΠ° ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ:
- ΠΠΎΠ»Π΅ΡΠΎ 'tv_sec' Π² ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° 'utmpx' ΠΈ ΠΏΠΎΠ»Π΅ΡΠΎ 'll_time' Π² 'lastlog' ΠΈΠΌΠ°Ρ ΡΠΈΠΏ 'int32_t', ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° Π²ΡΠ΅ΠΌΠ΅Π²ΠΈΡΠ΅ Π±ΡΠΎΡΡΠΈ, Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ΅ ΠΏΡΠ΅Π»Π΅Π΅ Π½Π° 19 ΡΠ½ΡΠ°ΡΠΈ 2038 Π³ΠΎΠ΄ΠΈΠ½Π°. ΠΠΎΡΠ°Π΄ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ° Π·Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Π½Π° ABI, Π΄ΠΎΡΠΈ Π½Π° 64-Π±ΠΈΡΠΎΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΡΠ΅Π·ΠΈ ΠΏΠΎΠ»Π΅ΡΠ° ΠΎΡΡΠ°Π²Π°Ρ 32-Π±ΠΈΡΠΎΠ²ΠΈ, Π·Π°ΡΠΎΠ²Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡΡ ΡΠ΅ Π·Π°ΡΠ΅Π³Π½Π΅ Π²ΡΠΈΡΠΊΠΈ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΠΈ Π½Π° Linux.
- Π€ΠΈΠΊΡΠΈΡΠ°Π½ΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° Π·Π°ΠΏΠΈΡΠΈΡΠ΅ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ ΠΏΠΎΠ»Π΅ΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΠΈΠΌΠ΅ Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ°, IP Π°Π΄ΡΠ΅Ρ) Π±Π΅Π· ΠΏΡΠ»Π½Π° ΠΏΠΎΠ΄ΠΌΡΠ½Π° Π½Π° ΡΠΎΡΠΌΠ°ΡΠ° ΠΈ ΠΏΡΠ΅ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° Π½Π° Π²ΡΠΈΡΠΊΠΈ ΡΡΠΈΠ»ΠΈΡΠΈ.
- Π£ΡΠΈΠ»ΠΈΡΠΈΡΠ΅ last, lastb, who ΠΈ lastlog ΡΠ° ΠΏΡΠΈΠ½ΡΠ΄Π΅Π½ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Ρ ΠΏΡΠ΅Π· ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅. ΠΡΠΈ Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΈ Π½Π° ΠΆΡΡΠ½Π°Π»ΠΈΡΠ΅ Π±Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠΈΠ»ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°ΠΏΠΈΡΠΈΡΠ΅, Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° Π²Ρ ΠΎΠ΄/ΠΈΠ·Ρ ΠΎΠ΄ ΠΈ Π·Π°ΠΊΡΡΠ½Π΅Π½ΠΈΡΡΠ° ΠΏΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ ΡΡΠ°Π²Π°Ρ Π½Π΅ΠΏΡΠΈΠ΅ΠΌΠ»ΠΈΠ²ΠΈ.
- ΠΠ°ΠΏΠΈΡΡΡ Π² Π±ΠΈΠ½Π°ΡΠ΅Π½ ΡΠ°ΠΉΠ» Π½Π΅ Π΅ Π°ΡΠΎΠΌΠ°ΡΠ½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ. ΠΡΠΈ ΡΠ±ΠΎΠΉ Π·Π°ΠΏΠΈΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΏΠΎΠ²ΡΠ΅Π΄Π΅Π½.
- ΠΠ° Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π°Ρ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ ΠΏΡΠΈ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π΅Π½ Π·Π°ΠΏΠΈΡ Π² ΠΆΡΡΠ½Π°Π»ΠΈΡΠ΅ ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΎΡΠ΅ΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, sshd ΠΈ login), ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ flock-Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠ°Ρ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΡΡ ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π°Ρ Π΄ΠΎ Π²Π·Π°ΠΈΠΌΠ½ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ.
ΠΠ²ΡΠΎΡ Π½Π° RFC ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π½Π° ΠΏΡΠ»Π½ΠΎΡΠΎ ΠΎΡΠΊΠ°Π·Π²Π°Π½Π΅ ΠΎΡ Π±ΠΈΠ½Π°ΡΠ½ΠΈ ΡΠΎΡΠΌΠ°ΡΠΈ Π² ΠΏΠΎΠ»Π·Π° Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ SQLite. ΠΠ° Π²ΡΠ΅ΠΊΠΈ ΡΠΈΠΏ ΠΆΡΡΠ½Π°Π»ΠΈ ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π° ΠΎΡΠ΄Π΅Π»Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Ρ ΡΠ½ΠΈΡΠΈΡΠΈΡΠ°Π½ C-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ: liblastlog2, libbtmp2, libutmp2 ΠΈ libwtmp2. ΠΡΠΈΡΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ°Π±ΠΎΡΡΡ Ρ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, ΡΠΈΡΡΠΎ ΡΡ Π΅ΠΌΠ° Π²ΠΊΠ»ΡΡΠ²Π° 64-Π±ΠΈΡΠΎΠ²ΠΈ Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ ΠΏΠ΅ΡΠ°ΡΠΈ (ΡΠΈΠΏ INTEGER) ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ ΠΏΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΠΈ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ. ΠΠΌΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ ΠΏΠΎΠ»Π΅ΡΠ° Π±Π΅Π· Π½Π°ΡΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΠ° (ΡΡΠ΅Π· ALTER TABLE).
Π‘ΡΠ΅Π΄ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π² ΠΏΠΎΠ»Π·Π° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° SQLite ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°Π²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° 64-Π±ΠΈΡΠ΅Π½ ΡΠΈΠΏ INTEGER Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΅ΠΏΠΎΡ Π°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅, Π°Π½Π³Π°ΠΆΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈ Π·Π° Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° Π²Ρ ΠΎΠ΄Π½ΠΎ-ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ΅Π· ΡΠ΅Π»Π΅ΠΊΡΠΈΠ²Π΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π·Π°ΠΏΠΈΡΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΠ»Π½ΠΎ ΡΠΊΠ°Π½ΠΈΡΠ°Π½Π΅, Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ ΠΏΠΎΠ»Π΅ΡΠ° Π±Π΅Π· ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ACID ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΡΠ΅ΠΆΠΈΠΌ WAL (Write-Ahead Logging) Π·Π° ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ Π΄ΠΎΠΊΠ°Π·Π°Π½Π°ΡΠ° Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎΡΡ Π½Π° SQLite.
ΠΠ° ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠ»Π°Π²Π΅Π½ ΠΏΡΠ΅Ρ ΠΎΠ΄ ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ βΠ΄Π²ΠΎΠΉΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅β (dual-write):
- ΠΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Ρ Π² Π±ΠΈΠ½Π°ΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ (login, sshd, sudo, cron ΠΈ Π΄Ρ.), ΡΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠ°Ρ ΡΠ°ΠΊΠ°, ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΡΠ°ΡΠΈΡ Π±ΠΈΠ½Π°ΡΠ΅Π½ ΡΠ°ΠΉΠ» ΠΈ Π² Π½ΠΎΠ²Π°ΡΠ° SQLite Π±Π°Π·Π° ΡΡΠ΅Π· ΡΡΠΎΡΠ²Π΅ΡΠ½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°.
- Π Π°Π·ΡΠ°Π±ΠΎΡΠ²Π°Ρ ΡΠ΅ Π½ΠΎΠ²ΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° ΡΡΠΈΠ»ΠΈΡΠΈ (last2, lastb2, who2, lastlog2), ΠΊΠΎΠΈΡΠΎ ΡΠ΅ΡΠ°Ρ Π΄Π°Π½Π½ΠΈ ΠΎΡ SQLite Π±Π°Π·ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ Π·Π° Π±ΡΡΠ·Π° ΡΠ°Π±ΠΎΡΠ°. Π‘ΡΠ°ΡΠΈΡΠ΅ ΡΡΠΈΠ»ΠΈΡΠΈ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°Ρ Π΄Π° ΡΠ°Π±ΠΎΡΡΡ Ρ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅.
- Π‘Π»Π΅Π΄ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π³ΠΎΠ΄ΠΈΠ½ΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΡΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΈΡΡΠ΅ΠΌΠΈ Π±ΡΠ΄Π΅ ΠΎΠ±Π½ΠΎΠ²Π΅Π½ΠΎ, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π² ΡΡΠ°ΡΠΈ ΡΠΎΡΠΌΠ°ΡΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π°, Π° ΡΡΠ°ΡΠΈΡΠ΅ ΡΡΠΈΠ»ΠΈΡΠΈ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΎΠ±ΡΠ²Π΅Π½ΠΈ Π·Π° ΠΎΡΡΠ°ΡΠ΅Π»ΠΈ.
ΠΡΠΏΡΠΎΡΠΈΡΠ΅, ΠΏΠΎΡΡΠ°Π²Π΅Π½ΠΈ Π·Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π°Π½Π΅:
- Π¦Π΅Π»Π΅ΡΡΠΎΠ±ΡΠ°Π·Π½ΠΎΡΡΡΠ° Π½Π° ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ΡΠΎ Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈΠ»ΠΈ ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅ΡΠΎ ΠΈΠΌ Π² Π΅Π΄Π½Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ libsession2).
- ΠΠ·Π±ΠΎΡ Π½Π° ΠΈΠΌΠ΅Π½Π° Π·Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΡΡΠΈΠ»ΠΈΡΠΈ (Π΄Π° ΡΠ΅ Π·Π°ΠΏΠ°Π·ΡΡ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈΡΠ΅ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ ΠΊΡΠΌ ΠΏΠΎ-ΠΎΠ±ΡΠΈ).
- ΠΠΎΠΊΠ°ΡΠΈΡ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Π½Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ (/var/lib/ ΠΊΠ°ΡΠΎ Π·Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ /var/log/ ΠΊΠ°ΡΠΎ Π·Π° Π»ΠΎΠ³ΠΎΠ²Π΅ΡΠ΅).
- ΠΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Π·Π° Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡ Π΅ΠΌΠ°ΡΠ° ΠΈ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ.
- ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° SQLite Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠΈ (ΡΡΡΠ²ΡΡΠΈ, Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ).
- ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΡΠ΅Π·Π΅ΡΠ²Π΅Π½ Π±Π΅ΠΊΠ΅Π½Π΄, ΠΊΠΎΠΉΡΠΎ ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΠΆΡΡΠ½Π°Π»ΠΈ Π² ΠΎΠΏΡΠΎΡΡΠ΅Π½ Π±ΠΈΠ½Π°ΡΠ΅Π½ ΡΠΎΡΠΌΠ°Ρ, Π·Π° ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΊΡΠ΄Π΅ΡΠΎ SQLite ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ ΠΈΠ·Π»ΠΈΡΠ΅Π½ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Ρ ΡΡΡΠΎΠ³ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠ°ΠΌΠ΅Ρ).
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
