Π ΡΠΏΠΈΡΡΠΊΠ° Π·Π° ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ 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 Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΡΠ΅Π½Π°ΡΠΈΠΈ (ΡΡΡΠ²ΡΡΠΈ, Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ).
- ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠ½Π΅ Π½Π° fallback-Π±Π΅ΠΊΠ΅Π½Π΄, ΠΊΠΎΠΉΡΠΎ ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΠΆΡΡΠ½Π°Π»ΠΈ Π² ΠΎΠΏΡΠΎΡΡΠ΅Π½ Π±ΠΈΠ½Π°ΡΠ΅Π½ ΡΠΎΡΠΌΠ°Ρ, Π·Π° ΡΠΈΡΡΠ΅ΠΌΠΈ, Π² ΠΊΠΎΠΈΡΠΎ SQLite ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΠΊΠ°ΠΆΠ΅ ΠΈΠ·Π»ΠΈΡΠ΅Π½ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Ρ ΡΠ΅ΠΆΠΊΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°).
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
