ΠΡΠ»Π½ΠΎΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π½Π° GNU Screen Π² Linux
GNU Screen Π΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅Π½ ΠΌΡΠ»ΡΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ, ΠΊΠΎΠΉΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅, ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠ΅ ΠΈ Π·Π°ΠΏΠ°Π·Π²Π°ΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ΅Π» ΡΠ΅ΡΠΈΠΈ ΠΎΡ Π΅Π΄ΠΈΠ½ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅Π½ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ. ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΎΡΠΊΠ°ΡΠΈΡΠ΅ ΠΎΡ Screen ΡΠ΅ΡΠΈΡ, Π²ΡΠ΅ΠΊΠΈ ΠΏΡΠΎΡΠ΅Ρ, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½ Π² Π½Π΅Ρ, ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ β ΠΎΡΠ΅Π»ΡΠ²Π°ΠΉΠΊΠΈ ΠΏΡΠΈ ΠΏΡΠ΅ΠΊΡΡΠ²Π°Π½ΠΈΡ Π½Π° SSH Π²ΡΡΠ·ΠΊΠ°ΡΠ°, ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΡΡΠΈΠ²ΠΎΠ²Π΅ ΠΈ Π·Π°ΡΠ²Π°ΡΡΠ½Π΅ Π½Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° β ΠΈ ΠΎΡΡΠ°Π²Π° Π½Π°ΠΏΡΠ»Π½ΠΎ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ°, Π² ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΎ.
ΠΠ° Π²ΡΠ΅ΠΊΠΈ, ΠΊΠΎΠΉΡΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ²Π° ΠΎΡΠ΄Π°Π»Π΅ΡΠ΅Π½ΠΈ ΡΡΡΠ²ΡΡΠΈ ΡΡΠ΅Π· SSH, ΡΠ°Π·ΠΈ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ° ΡΡΠ» ΠΊΠ»Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈ ΡΠΈΡΠΊΠΎΠ²Π΅: ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠ° Π²ΡΡΠ·ΠΊΠ° Π²Π΅ΡΠ΅ Π½Π΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΡΠ²Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠ° ΡΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, ΠΌΠ½ΠΎΠ³ΠΎΡΠ°ΡΠΎΠ²Π° Π·Π°Π΄Π°ΡΠ° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅Ρ Π·Π° Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΠΆΠΈΠ²ΠΈ Π»ΠΎΠ³ΠΎΠ²Π΅.
ΠΠ°ΡΠΎ GNU Screen ΠΎΡΡΠ°Π²Π° Π°ΠΊΡΡΠ°Π»Π΅Π½ Π² ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½Π°ΡΠ° Linux Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΡ
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΠΊΠ°ΡΠΎ tmux Π½Π°Π±ΡΠ°Ρ Π° ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡ, Π½ΠΎ Screen ΡΠ΅ Π΄ΠΎΡΡΠ°Π²Ρ ΠΊΠ°ΡΠΎ ΠΏΠ°ΠΊΠ΅Ρ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΈΠ»ΠΈ ΠΏΠΎΡΡΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΡΠΊΠ° ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½Π° Linux Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½ ΡΡΡΠ²ΡΡΠ΅Π½ ΠΎΠ±ΡΠ°Π·. ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ ΡΡΠ΅Π· SSH ΠΊΡΠΌ bare-metal ΠΌΠ°ΡΠΈΠ½Π° ΠΈΠ»ΠΈ Π½Π°ΡΠΊΠΎΡΠΎ ΠΎΡΠΈΠ³ΡΡΠ΅Π½ VPS Π₯ΠΎΡΡΠΈΠ½Π³ ΠΈΠ½ΡΡΠ°Π½Ρ, Screen Π΅ ΠΏΠΎΡΡΠΈ Π²ΠΈΠ½Π°Π³ΠΈ Π½Π°Π»ΠΈΡΠ΅Π½ Π±Π΅Π· Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ. ΠΠΈΡΠΊΠΈΡΡ ΠΌΡ ΡΠ°Π·Ρ ΠΎΠ΄ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΈ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ΡΠΎ Ρ POSIX Π³ΠΎ ΠΏΡΠ°Π²ΡΡ ΠΏΡΠ°Π³ΠΌΠ°ΡΠΈΡΠ½ΠΈΡ ΠΈΠ·Π±ΠΎΡ Π² ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈ ΠΈΠ»ΠΈ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈ ΡΡΠ΅Π΄ΠΈ.
ΠΡΠ½ΠΎΠ²Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Ρ Π΅Π΄ΠΈΠ½ ΠΏΠΎΠ³Π»Π΅Π΄:
- Π£ΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡ Π½Π° ΡΠ΅ΡΠΈΠΈΡΠ΅: ΠΡΠΎΡΠ΅ΡΠΈΡΠ΅ ΠΎΡΠ΅Π»ΡΠ²Π°Ρ ΠΏΡΠΈ ΠΏΡΠ΅ΠΊΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°, ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ Π½Π° SSH ΠΈ ΡΡΠΈΠ²ΠΎΠ²Π΅ ΠΎΡ ΡΡΡΠ°Π½Π° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
- ΠΡΠ»ΡΠΈΠΏΠ»Π΅ΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΡΠΈ: ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΈ ΡΠ΅Π» ΠΏΡΠΎΠ·ΠΎΡΡΠΈ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π΅Π΄Π½Π° ΡΠ΅ΡΠΈΡ
- Π‘ΠΏΠΎΠ΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΠ΅ΡΠΈΠΈ: ΠΠ²Π°ΠΌΠ° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠΊΠ°ΡΠ°Ρ ΠΊΡΠΌ Π΅Π΄Π½Π° ΠΈ ΡΡΡΠ° ΡΠ΅ΡΠΈΡ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π·Π° ΡΡΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ
- ΠΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ΅ΡΠΈΠΉΠ½Π° ΠΊΠΎΠ½Π·ΠΎΠ»Π°: Screen ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Ρ `/dev/ttyS*` ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΡΠ²ΡΡΠ° ΠΈΠ·Π²ΡΠ½ ΠΎΠ±Ρ Π²Π°ΡΠ°
- Π‘ΠΊΡΠΈΠΏΡΠΈΡΡΠ΅ΠΌΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅: ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈΡΡ ΡΠ°ΠΉΠ» `.screenrc` ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π°ΠΏΡΠ»Π½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ½ΠΈ ΡΡΠ΅Π΄ΠΈ ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅
GNU Screen ΡΡΠ΅ΡΡ tmux: ΠΠ·Π±ΠΎΡ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡ ΠΌΡΠ»ΡΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ
Π Π΄Π²Π°ΡΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° ΡΠ΅ΡΠ°Π²Π°Ρ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π΅Π½ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π½ΠΎ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠΈΠ»ΠΎΡΠΎΡΠΈΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ°Π½Π΅. Π’Π°Π±Π»ΠΈΡΠ°ΡΠ° ΠΏΠΎ-Π΄ΠΎΠ»Ρ ΠΎΠ±Ρ Π²Π°ΡΠ° ΡΠ°Π·Π»ΠΈΠΊΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ ΡΡΠ΅Π΄ΠΈ.
| Π€ΡΠ½ΠΊΡΠΈΡ | GNU Screen | tmux |
|---|---|---|
| ΠΠ°Π»ΠΈΡΠ½ΠΎΡΡ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ | ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ | ΠΠ·ΠΈΡΠΊΠ²Π° ΠΈΠ·ΡΠΈΡΠ½Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ |
| ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π΅Π½ ΡΠ°ΠΉΠ» | `~/.screenrc` | `~/.tmux.conf` |
| Π Π°Π·Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ (Ρ ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»Π½ΠΎ/Π²Π΅ΡΡΠΈΠΊΠ°Π»Π½ΠΎ) | ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ (ΡΠ°ΠΌΠΎ Π²Π΅ΡΡΠΈΠΊΠ°Π»Π½ΠΎ ΡΡΠ΅Π· ΡΠ΅Π³ΠΈΠΎΠ½ΠΈ) | ΠΡΠ»Π½ΠΎ, Π³ΡΠ²ΠΊΠ°Π²ΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ |
| Π‘ΠΏΠΎΠ΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΠ΅ΡΠΈΠΈ | ΠΠ°ΡΠΈΠ²Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΏΡΠΈΠΊΠ°ΡΠ²Π°Π½Π΅ | ΠΠ°ΡΠΈΠ²Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΏΡΠΈΠΊΠ°ΡΠ²Π°Π½Π΅ |
| Π‘ΠΊΡΠΈΠΏΡΠΈΡΠ°Π½Π΅ / Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ | ΠΠ½ΠΆΠ΅ΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΡΡΠ΅Π· `screen -X` | `tmux send-keys`, Π±ΠΎΠ³Π°Ρ API |
| Π Π°Π·Ρ ΠΎΠ΄ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ | ΠΠ½ΠΎΠ³ΠΎ Π½ΠΈΡΡΠΊ | ΠΠΈΡΡΠΊ |
| ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ΅ΡΠΈΠΉΠ½ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° | ΠΠ° (`screen /dev/ttyS0`) | ΠΠ΅ |
| ΠΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ°ΡΡΡ Π»Π΅Π½ΡΠ°ΡΠ° | Π£ΠΌΠ΅ΡΠ΅Π½ΠΎ (hardstatus) | ΠΠ½ΠΎΠ³ΠΎ Π³ΡΠ²ΠΊΠ°Π²ΠΎ |
| Π Π΅ΠΆΠΈΠΌ Π½Π° ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ | vi ΡΡΠΈΠ» | vi ΠΈΠ»ΠΈ emacs ΡΡΠΈΠ» |
| ΠΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΡ ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ | ΠΡΠΌΠ° | ΠΠΊΡΠΈΠ²Π½Π° (TPM) |
| ΠΠ΄Π΅Π°Π»Π΅Π½ ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π° | ΠΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ ΡΡΡΠ²ΡΡΠΈ, ΡΠ΅ΡΠΈΠΉΠ½ΠΈ ΠΊΠΎΠ½Π·ΠΎΠ»ΠΈ, legacy ΡΡΠ΅Π΄ΠΈ | Π Π°Π·ΡΠ°Π±ΠΎΡΡΠ΅ΡΠΊΠΈ ΡΠ°Π±ΠΎΡΠ½ΠΈ ΡΡΠ°Π½ΡΠΈΠΈ, ΡΠ»ΠΎΠΆΠ½ΠΈ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ |
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π°ΡΠΎΠΊΠΈ: ΠΠ° headless Dedicated Server, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ Π΄ΡΠ»Π³ΠΎΡΡΠΎΡΠ½ΠΈ ΡΠΎΠ½ΠΎΠ²ΠΈ Π·Π°Π΄Π°ΡΠΈ, ΠΏΡΠΎΡΡΠΎΡΠ°ΡΠ° ΠΈ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π½Π°ΡΠ° Π½Π°Π»ΠΈΡΠ½ΠΎΡΡ Π½Π° Screen Π³ΠΎ ΠΏΡΠ°Π²ΡΡ ΠΈΠ·Π±ΠΎΡΠ° Ρ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΡΡΠΈΠ»ΠΈΡ. ΠΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ ΠΎΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈ Π±ΠΎΠ³Π°ΡΠ° ΡΡΠ°ΡΡΡ Π»Π΅Π½ΡΠ°, tmux ΠΏΠ΅ΡΠ΅Π»ΠΈ.
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° GNU Screen
Screen Π΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ. ΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ Ρ:
β`bash
screen βversion
β`
ΠΠΊΠΎ Π»ΠΈΠΏΡΠ²Π°, ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ Π³ΠΎ Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΡ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ:
Debian / Ubuntu:
β`bash
sudo apt-get update && sudo apt-get install screen
β`
CentOS / RHEL 7:
β`bash
sudo yum install screen
β`
CentOS Stream / RHEL 8+ / AlmaLinux / Rocky Linux:
β`bash
sudo dnf install screen
β`
Fedora:
β`bash
sudo dnf install screen
β`
Arch Linux:
β`bash
sudo pacman -S screen
β`
Alpine Linux (ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ):
β`bash
apk add screen
β`
Π‘Π»Π΅Π΄ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡΠ° Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° Π΄Π΅ΠΌΠΎΠ½ ΠΈΠ»ΠΈ ΡΡΠ»ΡΠ³Π°. Screen ΡΠ°Π±ΠΎΡΠΈ ΠΈΠ·ΡΡΠ»ΠΎ ΠΊΠ°ΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΠΏΡΠΎΡΠ΅Ρ.
Π‘ΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Screen ΡΠ΅ΡΠΈΡ
ΠΡΠ½ΠΎΠ²Π½Π° ΡΠ΅ΡΠΈΡ
β`bash
screen
β`
Π’ΠΎΠ²Π° Π²ΠΈ ΠΏΡΠ΅Π½Π°ΡΡ Π² Π½ΠΎΠ²Π° ΡΠ΅ΡΠΈΡ ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ΅Π½ ΡΠ΅Π». ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡΡ Π΅ Π½Π΅ΡΠ°Π·Π»ΠΈΡΠΈΠΌ ΠΎΡ Π½ΠΎΡΠΌΠ°Π»Π΅Π½ ΡΠ΅ΡΠΌΠΈΠ½Π°Π», Π΄ΠΎΠΊΠ°ΡΠΎ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΠΏΡΠ΅ΡΠΈΠΊΡ Π½Π° Screen.
ΠΠΌΠ΅Π½ΡΠ²Π°Π½Π° ΡΠ΅ΡΠΈΡ (ΠΏΡΠ΅ΠΏΠΎΡΡΡΠΈΡΠ΅Π»Π½ΠΎ)
β`bash
screen -S session_name
β`
ΠΠΈΠ½Π°Π³ΠΈ ΠΈΠΌΠ΅Π½ΡΠ²Π°ΠΉΡΠ΅ ΡΠ΅ΡΠΈΠΈΡΠ΅ ΡΠΈ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π° ΡΡΠ΅Π΄Π°. ΠΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ΠΈΡΠ΅ ΡΠ΅ΡΠΈΠΈ ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Ρ ΡΠ°ΠΌΠΎ ΠΏΠΎ ΡΠ΅Ρ Π½ΠΈΡ PID, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ°Π²ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΡΠΎ ΠΏΡΠΈΠΊΠ°ΡΠ²Π°Π½Π΅ ΡΠΊΠ»ΠΎΠ½Π½ΠΎ ΠΊΡΠΌ Π³ΡΠ΅ΡΠΊΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΠΈΠΈ.
Π‘ΡΠ²Π΅Ρ Π·Π° ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΡ Π·Π° ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½Π΅: ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Π½ΠΈ ΠΈΠΌΠ΅Π½Π°, ΠΎΡΡΠ°Π·ΡΠ²Π°ΡΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ β `screen -S db-migration`, `screen -S log-monitor`, `screen -S build-php82`. Π’ΠΎΠ²Π° ΡΠ΅ ΠΎΡΠΏΠ»Π°ΡΠ°, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ Π²ΡΡΠ½Π΅ΡΠ΅ ΠΊΡΠΌ ΡΡΡΠ²ΡΡ ΡΠ»Π΅Π΄ ΡΠ°ΡΠΎΠ²Π΅ ΠΎΡΡΡΡΡΠ²ΠΈΠ΅.
Π‘ΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΡΠΈΡ ΠΈ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°
β`bash
screen -S backup-job bash -c 'rsync -avz /data/ user@remote:/backup/ && echo DONE'
β`
Π‘Π΅ΡΠΈΡΡΠ° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π° Π΄Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° Π΄ΠΎΡΠΈ ΡΠ»Π΅Π΄ ΠΏΡΠΈΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΠΉΠΊΠΈ Π²ΠΈ Π΄Π° ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΡΠ΅ ΠΈΠ·Ρ ΠΎΠ΄Π° ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ.
Π‘ΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΡΠΈΡ Π² ΠΎΡΠΊΠ°ΡΠ΅Π½ ΡΠ΅ΠΆΠΈΠΌ
β`bash
screen -dmS headless-job ./long_running_script.sh
β`
Π€Π»Π°Π³ΠΎΠ²Π΅ΡΠ΅ `-dm` ΡΡΠ·Π΄Π°Π²Π°Ρ ΡΠ΅ΡΠΈΡΡΠ° ΠΈ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Ρ ΠΎΡΠΊΠ°ΡΠ²Π°Ρ. Π’ΠΎΠ²Π° Π΅ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡΡ ΡΠ°Π±Π»ΠΎΠ½ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΎΠ½ΠΎΠ²ΠΈ Π·Π°Π΄Π°ΡΠΈ ΠΎΡ cron ΠΈΠ»ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π·Π° ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ β ΠΏΡΠΎΡΠ΅ΡΡΡ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Π² ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½Π°, Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌΠ° Screen ΡΠ΅ΡΠΈΡ, Π±Π΅Π· Π΄Π° ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π΅Π½ ΡΠ΅ΡΠΌΠΈΠ½Π°Π».
ΠΠΎΠΌΠ°Π½Π΄Π½ΠΈΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡ: Π Π°Π·Π±ΠΈΡΠ°Π½Π΅ Π½Π° Ctrl+A
ΠΡΠ΅ΠΊΠΈ ΠΊΠ»Π°Π²ΠΈΡΠ΅Π½ ΠΏΡΡΠΊ ΠΏΡΡ Π½Π° Screen Π·Π°ΠΏΠΎΡΠ²Π° Ρ escape ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΡΠ° `Ctrl+A`. Π’ΠΎΠ²Π° Π½Π°ΡΠΈΡΠΊΠ°Π½Π΅ Π½Π° ΠΊΠ»Π°Π²ΠΈΡ ΠΊΠ°Π·Π²Π° Π½Π° Screen, ΡΠ΅ ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΡ ΡΠΈΠΌΠ²ΠΎΠ» Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π° Π½Π΅ Π²Ρ ΠΎΠ΄ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠ°ΡΠ° ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°. Π Π°Π·Π±ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠ·ΠΈ ΠΌΠΎΠ΄Π΅Π» Π΅ ΠΎΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΠΈ Π·Π°ΠΏΠ°ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈΡΠ΅ ΠΏΡΠ΅ΠΊΠΈ ΠΏΡΡΠΈΡΠ°.
ΠΠΊΠΎ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Π²ΡΡΡΠ΅ Π² Screen, ΠΊΠΎΡΡΠΎ ΡΠ°ΠΌΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° `Ctrl+A` (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π½ΡΠΊΠΎΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΈ ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° `readline`), ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠΈΡΠ΅ Π±ΡΠΊΠ²Π°Π»Π΅Π½ `Ctrl+A` Π½Π° Π²ΡΡΡΠ΅ΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°, ΠΊΠ°ΡΠΎ Π½Π°ΡΠΈΡΠ½Π΅ΡΠ΅ `Ctrl+A` Π΄Π²Π° ΠΏΡΡΠΈ (`Ctrl+A, Ctrl+A`).
ΠΡΠΊΠ°ΡΠ²Π°Π½Π΅ ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΏΡΠΈΠΊΠ°ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅ΡΠΈΠΈ
ΠΡΠΊΠ°ΡΠ²Π°Π½Π΅ ΠΎΡ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠ° ΡΠ΅ ΡΠ΅ΡΠΈΡ
β`
Ctrl+A, D
β`
Π‘Π΅ΡΠΈΡΡΠ° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Π½Π° Π·Π°Π΄Π΅Π½ ΠΏΠ»Π°Π½. ΠΡΡΡΠ°ΡΠ΅ ΡΠ΅ Π² ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΊΠΈΡ ΡΠ΅Π». ΠΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ Π²ΡΡΡΠ΅ Π² ΡΠ΅ΡΠΈΡΡΠ° Π½Π΅ ΡΠ΅ ΠΏΡΠ΅ΠΊΡΡΠ²Π°Ρ.
ΠΠ·Π±ΡΠΎΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ΡΠΈΠΈ
β`bash
screen -ls
β`
ΠΡΠΈΠΌΠ΅ΡΠ΅Π½ ΠΈΠ·Ρ ΠΎΠ΄:
β`
There are screens on:
14231.db-migration (Detached)
14089.log-monitor (Attached)
13901.build-php82 (Detached)
3 Sockets in /var/run/screen/S-deploy.
β`
Π‘ΡΠ°ΡΡΡΡΡ `Attached` ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π΄ΡΡΠ³ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» Π΅ ΡΠ²ΡΡΠ·Π°Π½ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΊΡΠΌ ΡΠ°Π·ΠΈ ΡΠ΅ΡΠΈΡ. `Detached` ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°, Π½ΠΎ Π½ΡΠΌΠ° ΡΠ²ΡΡΠ·Π°Π½ ΡΠ΅ΡΠΌΠΈΠ½Π°Π».
ΠΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΏΡΠΈΠΊΠ°ΡΠ²Π°Π½Π΅ ΠΊΡΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π° ΡΠ΅ΡΠΈΡ
β`bash
screen -r db-migration
β`
ΠΠ»ΠΈ ΠΏΠΎ PID:
β`bash
screen -r 14231
β`
ΠΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠΈΠΊΠ°ΡΠ²Π°Π½Π΅ ΠΊΡΠΌ Π²Π΅ΡΠ΅ ΠΏΡΠΈΠΊΠ°ΡΠ΅Π½Π° ΡΠ΅ΡΠΈΡ
ΠΠΊΠΎ Π΄Π°Π΄Π΅Π½Π° ΡΠ΅ΡΠΈΡ ΠΏΠΎΠΊΠ°Π·Π²Π° `Attached`, Π½ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Ρ ΠΏΠΎΠ΅ΠΌΠ΅ΡΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΎΡΡΠ°ΡΡΠ»Π° SSH Π²ΡΡΠ·ΠΊΠ° Ρ Π΅ ΠΎΡΡΠ°Π²ΠΈΠ»Π° Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π°):
β`bash
screen -d -r log-monitor
β`
Π€Π»Π°Π³ΡΡ `-d` ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»Π½ΠΎ ΠΎΡΠΊΠ°ΡΠ° Π΄ΡΡΠ³Π°ΡΠ° Π²ΡΡΠ·ΠΊΠ° ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π²ΠΈ ΠΏΡΠΈΠΊΠ°ΡΠΈ ΠΎΡΠ½ΠΎΠ²ΠΎ. Π’ΠΎΠ²Π° Π΅ ΠΊΡΠΈΡΠΈΡΠ½Π° ΡΠ΅Ρ Π½ΠΈΠΊΠ° Π·Π° Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠ΅Π΄ΠΈΡΠ½Π° SSH ΡΠ΅ΡΠΈΡ Π΅ ΠΏΡΠ΅ΠΊΡΡΠ½Π°Π»Π° Π±Π΅Π· ΡΠΈΡΡΠΎ ΠΎΡΠΊΠ°ΡΠ²Π°Π½Π΅.
ΠΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΏΡΠΈΠΊΠ°ΡΠ²Π°Π½Π΅: ΠΠ²Π°ΠΌΠ° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π² Π΅Π΄Π½Π° ΡΠ΅ΡΠΈΡ
β`bash
screen -x session_name
β`
Π Π΄Π²Π°ΡΠ° ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° Π²ΠΈΠΆΠ΄Π°Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ΅Π½ ΠΈΠ·Ρ ΠΎΠ΄ Π² ΡΠ΅Π°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅. Π’ΠΎΠ²Π° Π΅ Π±Π΅Π·ΡΠ΅Π½Π½ΠΎ Π·Π° ΡΡΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΈΠ»ΠΈ ΡΡΠΊΠΎΠ²ΠΎΠ΄Π΅Π½ΠΈ ΠΎΠ±Ρ ΠΎΠ΄ΠΈ Π½Π° ΡΡΡΠ²ΡΡΠ° Ρ ΠΊΠΎΠ»Π΅Π³Π° β ΠΈ Π΄Π²Π΅ΡΠ΅ ΡΡΡΠ°Π½ΠΈ Π½Π°Π±Π»ΡΠ΄Π°Π²Π°Ρ ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π°Ρ Ρ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡ ΡΠ΅Π».
Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΡΠΈ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΠΈΡ
ΠΠ΄Π½Π° Screen ΡΠ΅ΡΠΈΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ΄ΡΡΠΆΠ° Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ Π±ΡΠΎΠΉ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ. ΠΡΠ΅ΠΊΠΈ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ Π΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌ ΡΠ΅Π» (ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅Ρ).
Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½ΠΎΠ² ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ
β`
Ctrl+A, C
β`
ΠΠ°Π²ΠΈΠ³Π°ΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ
| ΠΡΡΠΊ ΠΏΡΡ | ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ |
|---|---|
| `Ctrl+A, N` | Π‘Π»Π΅Π΄Π²Π°Ρ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ |
| `Ctrl+A, P` | ΠΡΠ΅Π΄ΠΈΡΠ΅Π½ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ |
| `Ctrl+A, 0β9` | ΠΡΠ΅ΡΠΊΠ°ΡΠ°Π½Π΅ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΊΡΠΌ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ |
| `Ctrl+A, "` | ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π΅Π½ ΡΠΏΠΈΡΡΠΊ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ |
| `Ctrl+A, '` | ΠΠΎΠ΄ΠΊΠ°Π½Π° Π·Π° Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π½ΠΎΠΌΠ΅Ρ ΠΈΠ»ΠΈ ΠΈΠΌΠ΅ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ |
ΠΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ
β`
Ctrl+A, A
β`
ΠΡΠ²Π΅Π΄Π΅ΡΠ΅ Π½ΠΎΠ²ΠΎΡΠΎ ΠΈΠΌΠ΅ ΠΈ Π½Π°ΡΠΈΡΠ½Π΅ΡΠ΅ Enter. Π‘ΠΌΠΈΡΠ»Π΅Π½ΠΈΡΠ΅ ΠΈΠΌΠ΅Π½Π° Π½Π° ΠΏΡΠΎΠ·ΠΎΡΡΠΈ ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ Π² hardstatus Π»Π΅Π½ΡΠ°ΡΠ°, ΠΊΠΎΠ΅ΡΠΎ ΠΏΡΠ°Π²ΠΈ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡΡΠ° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎ-Π±ΡΡΠ·Π° Π² ΡΠ΅ΡΠΈΠΈ Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ.
ΠΠ°ΡΠ²Π°ΡΡΠ½Π΅ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ
ΠΡΠ²Π΅Π΄Π΅ΡΠ΅ `exit` ΠΈΠ»ΠΈ Π½Π°ΡΠΈΡΠ½Π΅ΡΠ΅ `Ctrl+D` Π² ΡΠ΅Π»Π° Π½Π° ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ°. ΠΠΎΠ³Π°ΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΡ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ Π² Π΄Π°Π΄Π΅Π½Π° ΡΠ΅ΡΠΈΡ Π±ΡΠ΄Π΅ Π·Π°ΡΠ²ΠΎΡΠ΅Π½, ΡΠ΅ΡΠΈΡΡΠ° ΡΠ΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΡΠ²Π°.
Π Π°Π·Π΄Π΅Π»ΡΠ½Π΅ Π½Π° Π΅ΠΊΡΠ°Π½Π° Π½Π° ΡΠ΅Π³ΠΈΠΎΠ½ΠΈ
Screen ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²ΠΈΠ΄ΠΈΠΌΠΈ ΡΠ΅Π³ΠΈΠΎΠ½ΠΈ, Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π° ΡΠ°Π·Π»ΠΈΡΠ΅Π½ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
Π₯ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»Π½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ (Π³ΠΎΡΠ΅/Π΄ΠΎΠ»Ρ)
β`
Ctrl+A, S
β`
ΠΠ΅ΡΡΠΈΠΊΠ°Π»Π½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ (Π»ΡΠ²ΠΎ/Π΄ΡΡΠ½ΠΎ)
β`
Ctrl+A, |
β`
ΠΠ°Π±Π΅Π»Π΅ΠΆΠΊΠ°: ΠΠ΅ΡΡΠΈΠΊΠ°Π»Π½ΠΎΡΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° Screen 4.1.0 ΠΈΠ»ΠΈ ΠΏΠΎ-Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ.
ΠΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅Π³ΠΈΠΎΠ½ΠΈ
β`
Ctrl+A, Tab
β`
ΠΡΠΈΡΠ²ΠΎΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ ΠΊΡΠΌ ΡΠ΅Π³ΠΈΠΎΠ½
Π‘Π»Π΅Π΄ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠΎΠΊΡΡΠ° ΠΊΡΠΌ ΡΠ΅Π³ΠΈΠΎΠ½, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ `Ctrl+A, "`, Π·Π° Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠΎΠΉ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ Π΄Π° ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π° ΡΠ°ΠΌ.
ΠΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ Π½Π° ΡΠ΅Π³ΠΈΠΎΠ½
β`
Ctrl+A, X (remove current region)
Ctrl+A, Q (remove all regions except current)
β`
ΠΠ°ΠΆΠ½ΠΎ ΡΠ°Π·Π³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅: ΠΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅Π³ΠΈΠΎΠ½ Π½Π΅ Π·Π°ΡΠ²Π°ΡΡ ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ°, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½ Π² Π½Π΅Π³ΠΎ. ΠΡΠΎΠ·ΠΎΡΠ΅ΡΡΡ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°; ΠΏΡΠΎΡΡΠΎ ΡΠΏΠΈΡΠ°ΡΠ΅ Π΄Π° Π³ΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π°ΡΠ΅ Π² ΡΠΎΠ²Π° ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅.
ΠΠΎΠΏΠΈΡΠ°Π½Π΅ ΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠ½Π΅ (ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΏΡΠ΅Π²ΡΡΡΠ°Π½Π΅ Π½Π°Π·Π°Π΄)
Screen ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π±ΡΡΠ΅Ρ Π·Π° ΠΏΡΠ΅Π²ΡΡΡΠ°Π½Π΅ Π½Π°Π·Π°Π΄ Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ. ΠΠ° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π½Π΅Π³ΠΎ:
β`
Ctrl+A, [
β`
Π’ΠΎΠ²Π° Π²Π»ΠΈΠ·Π° Π² ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅. ΠΠ°Π²ΠΈΠ³Π°ΡΠΈΡΡΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ»Π°Π²ΠΈΡΠΈ Π² ΡΡΠΈΠ» vi:
- `h`, `j`, `k`, `l` β ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΡΡΡΠΎΡΠ°
- `Ctrl+F` / `Ctrl+B` β ΡΡΡΠ°Π½ΠΈΡΠ° Π½Π°ΠΏΡΠ΅Π΄ / Π½Π°Π·Π°Π΄
- `/` β ΡΡΡΡΠ΅Π½Π΅ Π½Π°ΠΏΡΠ΅Π΄
- `?` β ΡΡΡΡΠ΅Π½Π΅ Π½Π°Π·Π°Π΄
- `Space` β ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅ Π½Π° Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° ΡΠ΅Π»Π΅ΠΊΡΠΈΡΡΠ°
- `Space` (ΠΎΡΠ½ΠΎΠ²ΠΎ) β ΠΌΠ°ΡΠΊΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΡΠ°Ρ ΠΈ ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ Π² Π±ΡΡΠ΅ΡΠ°
ΠΠ° ΠΏΠΎΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΠΊΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ΅ΠΊΡΡ:
β`
Ctrl+A, ]
β`
ΠΡΡΠ΅ΡΡΡ Π·Π° ΠΏΡΠ΅Π²ΡΡΡΠ°Π½Π΅ Π½Π°Π·Π°Π΄ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΅ 100 ΡΠ΅Π΄Π°. ΠΠ° Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΡΠ²ΡΡΠ½ΠΈ Π»ΠΎΠ³ΠΎΠ²Π΅ ΡΠ²Π΅Π»ΠΈΡΠ΅ΡΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠΎΠ²Π° Π² `.screenrc` (ΡΠ°Π·Π³Π»Π΅Π΄Π°Π½ΠΎ ΠΏΠΎ-Π΄ΠΎΠ»Ρ).
ΠΠ°ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° Screen ΡΠ΅ΡΠΈΡ
β`
Ctrl+A, X
β`
Π‘Π΅ΡΠΈΡΡΠ° ΡΠ΅ Π·Π°ΠΊΠ»ΡΡΠ²Π° Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π° Π²Π°ΡΠ°ΡΠ° Unix ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠ° ΠΏΠ°ΡΠΎΠ»Π° ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΡΠ°Π·ΡΠ΅ΡΠΈ Π΄ΠΎΡΡΡΠΏ. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΡΠΎΠ²Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΎΡΠ΄Π°Π»Π΅ΡΠ°Π²Π°ΡΠ΅ ΠΎΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π», ΡΠ²ΡΡΠ·Π°Π½ ΠΊΡΠΌ ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»Π΅Π½ ΡΡΡΠ²ΡΡ β ΠΏΠΎ-Π±ΡΡΠ·ΠΎ Π΅ ΠΎΡ Π·Π°ΡΠ²Π°ΡΡΠ½Π΅ΡΠΎ Π½Π° SSH Π²ΡΡΠ·ΠΊΠ°ΡΠ° ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΡΠΎ ΠΏΡΠΈΠΊΠ°ΡΠ²Π°Π½Π΅.
ΠΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΊΡΠΌ ΡΠ΅ΡΠΈΡ Π±Π΅Π· ΠΏΡΠΈΠΊΠ°ΡΠ²Π°Π½Π΅
Π€Π»Π°Π³ΡΡ `-X` Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΈΠ½ΠΆΠ΅ΠΊΡΠΈΡΠ°ΡΠ΅ Screen ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π² ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠ° ΡΠ΅ ΡΠ΅ΡΠΈΡ ΠΎΡΠ²ΡΠ½:
β`bash
screen -S db-migration -X stuff "tail -f /var/log/mysql/error.logn"
β`
ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° `stuff` ΠΈΠ·ΠΏΡΠ°ΡΠ° Π½Π°ΡΠΈΡΠΊΠ°Π½ΠΈΡ Π½Π° ΠΊΠ»Π°Π²ΠΈΡΠΈ ΠΊΡΠΌ Π°ΠΊΡΠΈΠ²Π½ΠΈΡ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ Π½Π° ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½Π°ΡΠ° ΡΠ΅ΡΠΈΡ. `n` ΡΠΈΠΌΡΠ»ΠΈΡΠ° Π½Π°ΡΠΈΡΠΊΠ°Π½Π΅ Π½Π° Enter. Π’Π°Π·ΠΈ ΡΠ΅Ρ Π½ΠΈΠΊΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ΡΠΎ Π·Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Π΄ΡΠ»Π³ΠΎΡΡΠ°ΠΉΠ½ΠΈ Screen ΡΠ΅ΡΠΈΠΈ Π±Π΅Π· ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½Π΅ Π·Π° ΡΡΡΠ½ΠΎ ΠΏΡΠΈΠΊΠ°ΡΠ²Π°Π½Π΅.
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Screen Ρ .screenrc
Π€Π°ΠΉΠ»ΡΡ `~/.screenrc` ΡΠ΅ ΡΠ΅ΡΠ΅ ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Screen ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅. ΠΠΎΠ±ΡΠ΅ ΠΈΠ·ΡΠ°Π±ΠΎΡΠ΅Π½ `.screenrc` ΡΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΠ° Screen ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π΅Π½ ΠΌΡΠ»ΡΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ Π² Π½Π°ΠΈΡΡΠΈΠ½Π° Π΅ΡΠ³ΠΎΠ½ΠΎΠΌΠΈΡΠ½Π° ΡΡΠ΅Π΄Π°.
Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ ΠΈΠ»ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°ΠΉΡΠ΅ Π³ΠΎ:
β`bash
nano ~/.screenrc
β`
ΠΡΠ΅ΠΏΠΎΡΡΡΠΈΡΠ΅Π»Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° .screenrc
β`bash
Disable the startup message
startup_message off
Set scrollback buffer to 10,000 lines (critical for log monitoring)
defscrollback 10000
Enable UTF-8
defutf8 on
Set default shell
shell -$SHELL
Visual bell instead of audible
vbell on
Hardstatus bar: shows hostname, window list, and current time
hardstatus on
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %d/%m %{W}%c %{g}]'
Bind F2 to create a new window
bindkey -k k2 screen
Change escape key to Ctrl+B (useful if Ctrl+A conflicts with other tools)
escape ^Bb
Auto-detach on hangup signal (critical for SSH session drops)
autodetach on
Disable flow control (prevents Ctrl+S from freezing the terminal)
defflow off
β`
ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° `autodetach on` Π΅ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½Π° Π·Π° SSH ΡΠΏΠΎΡΡΠ΅Π±Π°. ΠΠ΅Π· Π½Π΅Ρ, Π°ΠΊΠΎ SSH Π²ΡΡΠ·ΠΊΠ°ΡΠ° Π²ΠΈ ΠΏΡΠ΅ΠΊΡΡΠ½Π΅ Π½Π΅ΠΎΡΠ°ΠΊΠ²Π°Π½ΠΎ (Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° Π½Π°ΡΠΈΡΠ½Π΅ΡΠ΅ `Ctrl+A, D`), Screen ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈ ΡΠ΅ΡΠΈΡΡΠ° Π²ΠΌΠ΅ΡΡΠΎ Π΄Π° Ρ ΠΎΡΠΊΠ°ΡΠΈ. Π‘ `autodetach on`, ΡΠΈΠ³Π½Π°Π» SIGHUP (ΠΈΠ·ΠΏΡΠ°ΡΠ΅Π½ ΠΏΡΠΈ ΠΏΡΠ΅ΠΊΡΡΠ²Π°Π½Π΅ Π½Π° SSH) Π·Π°Π΄Π΅ΠΉΡΡΠ²Π° ΡΠΈΡΡΠΎ ΠΎΡΠΊΠ°ΡΠ²Π°Π½Π΅ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅ΡΠΈΡΡΠ°.
`defflow off` ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΡΠ²Π° ΡΠ΅ΡΡΠΎΡΠΎ ΡΠ°Π·ΠΎΡΠ°ΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ Π½Π°ΡΠΈΡΠΊΠ°Π½Π΅ Π½Π° `Ctrl+S` ΠΈ ΠΏΡΠΈΠ²ΠΈΠ΄Π½ΠΎ Π·Π°ΠΌΡΠ°Π·ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°. ΠΠ½ΠΎΠ³ΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΈ Π³ΡΠ±ΡΡ ΠΌΠΈΠ½ΡΡΠΈ Π² ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π½Π΅ΠΈΠ·ΠΏΡΠ°Π²Π½ΠΎΡΡΠΈ Π½Π° βΠ·Π°ΠΌΡΠ°Π·Π΅Π½β ΡΠ΅ΡΠΌΠΈΠ½Π°Π», ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΎΡΡΠΎ Π΅ Π² ΠΏΠ°ΡΠ·Π° Π½Π° XON/XOFF ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° ΠΏΠΎΡΠΎΠΊΠ°.
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ ΡΠ»ΡΡΠ°ΠΈ Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π°
ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ
β`bash
screen -S db-migrate
Inside the session:
php artisan migrate βforce 2>&1 | tee /var/log/migration-$(date +%F).log
Detach: Ctrl+A, D
Reattach later to check progress:
screen -r db-migrate
β`
ΠΠΊΠΎ SSH Π²ΡΡΠ·ΠΊΠ°ΡΠ° ΠΏΡΠ΅ΠΊΡΡΠ½Π΅ ΠΏΠΎ ΡΡΠ΅Π΄Π°ΡΠ° Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡΠ°, ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°. ΠΡΠΈΠΊΠ°ΡΠ²Π°ΡΠ΅ ΡΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΎ ΠΈ Π³ΠΎ Π½Π°ΠΌΠΈΡΠ°ΡΠ΅ ΠΈΠ»ΠΈ Π²ΡΠ΅ ΠΎΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΡΠ΅, ΠΈΠ»ΠΈ Π·Π°Π²ΡΡΡΠ΅Π½ Ρ ΠΏΡΠ»Π½ΠΈΡ ΠΈΠ·Ρ ΠΎΠ΄, Π·Π°ΠΏΠ°Π·Π΅Π½ Π² Π»ΠΎΠ³Π° ΠΈ Π±ΡΡΠ΅ΡΠ° Π·Π° ΠΏΡΠ΅Π²ΡΡΡΠ°Π½Π΅ Π½Π°Π·Π°Π΄.
ΠΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π»ΠΎΠ³ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅
β`bash
screen -S monitoring
Window 0: nginx access log
tail -f /var/log/nginx/access.log
Ctrl+A, C β new window
Window 1: application error log
tail -f /var/log/app/error.log
Ctrl+A, C β new window
Window 2: system messages
journalctl -f
β`
ΠΠ°Π²ΠΈΠ³ΠΈΡΠ°ΠΉΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΠ·ΠΎΡΡΠΈΡΠ΅ Ρ `Ctrl+A, "`, Π·Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΊΠΎΠΉ Π»ΠΎΠ³ Π³Π΅Π½Π΅ΡΠΈΡΠ° Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ.
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ ΡΠΊΡΠΈΠΏΡ Π·Π° ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ Ρ Screen
β`bash
#!/bin/bash
screen -dmS deploy bash -c '
git pull origin main &&
composer install βno-dev &&
php artisan config:cache &&
systemctl reload php8.2-fpm &&
echo "Deployment complete at $(date)" >> /var/log/deploy.log
'
echo "Deployment started in background screen session 'deploy'"
echo "Monitor with: screen -r deploy"
β`
Π’ΠΎΠ·ΠΈ ΡΠ°Π±Π»ΠΎΠ½ Π΅ ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π½Π° VPS Ρ cPanel, ΠΊΡΠ΄Π΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·Π³ΡΡΡΠ°Π½ΠΈΡ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΡ Π΅Π΄ΠΈΠ½ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π΅Π½ ΡΠ΅Π».
ΠΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ΅ΡΠΈΠΉΠ½Π° ΠΊΠΎΠ½Π·ΠΎΠ»Π°
β`bash
screen /dev/ttyS0 115200
β`
Screen ΡΠ΅ ΡΠ΄Π²ΠΎΡΠ²Π° ΠΊΠ°ΡΠΎ Π΅ΠΌΡΠ»Π°ΡΠΎΡ Π½Π° ΡΠ΅ΡΠΈΠ΅Π½ ΡΠ΅ΡΠΌΠΈΠ½Π°Π». Π’ΠΎΠ²Π° Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ° ΡΠ΅Ρ Π½ΠΈΠΊΠ° Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΊΠΎΠ½Π·ΠΎΠ»Π°ΡΠ° Π½Π° ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΡΡΡΠ²ΡΡ, ΠΌΡΠ΅ΠΆΠΎΠ² ΠΊΠΎΠΌΡΡΠ°ΡΠΎΡ ΠΈΠ»ΠΈ Π²Π³ΡΠ°Π΄Π΅Π½ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΡΡΠ΅Π· ΡΠ΅ΡΠΈΠΉΠ½Π° Π²ΡΡΠ·ΠΊΠ° β Π±Π΅Π· Π΄Π° ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° minicom ΠΈΠ»ΠΈ picocom.
Π§Π΅ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΈ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΈ ΠΈΠ·Π±Π΅Π³Π½Π΅ΡΠ΅
ΠΠ»ΠΎΠΆΠ΅Π½ΠΈ Screen ΡΠ΅ΡΠΈΠΈ: ΠΠΊΠΎ ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ ΡΡΠ΅Π· SSH ΠΎΡ Screen ΡΠ΅ΡΠΈΡ Π½Π° ΠΠ°ΡΠΈΠ½Π° A ΠΊΡΠΌ ΠΠ°ΡΠΈΠ½Π° B ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Screen ΡΠ°ΠΌ, Π²Π΅ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ Π΄Π²Π° ΡΠ»ΠΎΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° `Ctrl+A`. ΠΡΡΡΠ΅ΡΠ½Π°ΡΠ° Screen ΡΠ΅ΡΠΈΡ ΠΏΡΠΈΡ Π²Π°ΡΠ° `Ctrl+A` ΠΏΡΠ΅Π΄ΠΈ Π²ΡΠ½ΡΠ½Π°ΡΠ° Π΄Π° Π³ΠΎ Π²ΠΈΠ΄ΠΈ. ΠΠ° Π΄Π° ΠΈΠ·ΠΏΡΠ°ΡΠΈΡΠ΅ `Ctrl+A` ΠΊΡΠΌ Π²ΡΠ½ΡΠ½Π°ΡΠ° ΡΠ΅ΡΠΈΡ, Π½Π°ΡΠΈΡΠ½Π΅ΡΠ΅ `Ctrl+A, Ctrl+A`. ΠΠ° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΡΠ΅ ΠΎΠ±ΡΡΠΊΠ²Π°Π½Π΅, ΠΏΡΠΎΠΌΠ΅Π½Π΅ΡΠ΅ escape ΠΊΠ»Π°Π²ΠΈΡΠ° Π½Π° Π²ΡΡΡΠ΅ΡΠ½Π°ΡΠ° ΡΠ΅ΡΠΈΡ Π² Π½Π΅ΠΉΠ½ΠΈΡ `.screenrc` Ρ `escape ^Bb`.
ΠΡΡΡΠ²ΠΈ ΡΠ΅ΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ΅ ΠΏΠΎΡΠΈΡΡΠ²Π°Ρ: ΠΠΊΠΎ Screen ΡΠ΅ ΡΡΠΈΠ½Π΅ ΠΈΠ»ΠΈ Ρ ΠΎΡΡΡΡ ΡΠ΅ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ° Π½Π΅ΡΠΈΡΡΠΎ, ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΡΠΎΠΊΠ΅ΡΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡΡΠ°Π½Π°Ρ Π² `/var/run/screen/` ΠΈΠ»ΠΈ `~/.screen/`, ΠΏΠΎΠΊΠ°Π·Π²Π°ΠΉΠΊΠΈ ΡΠ΅ΡΠΈΠΈ ΠΊΠ°ΡΠΎ `Dead`. ΠΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π³ΠΈ Ρ:
β`bash
screen -wipe
β`
Π‘Π΅ΡΠΈΡ, ΠΏΡΠΈΡΠ΅ΠΆΠ°Π²Π°Π½Π° ΠΎΡ root ΡΡΠ΅ΡΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»: Screen ΡΠ΅ΡΠΈΡ, ΡΡΠ°ΡΡΠΈΡΠ°Π½Π° ΠΊΠ°ΡΠΎ root, Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΏΡΠΈΠΊΠ°ΡΠ΅Π½Π° ΠΎΡ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π», ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΡΠΎ. ΠΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ `sudo su` Π²ΡΡΡΠ΅ Π² Screen ΡΠ΅ΡΠΈΡ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΠΎΡΠΊΠ°ΡΠΈΡΠ΅, ΠΏΡΠΈΠΊΠ°ΡΠ΅ΡΠ΅ ΡΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΎ ΠΊΠ°ΡΠΎ root ΠΈΠ»ΠΈ ΡΡΠ΅Π· `sudo screen -r`.
ΠΠ΅ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° `TERM`: ΠΡΠΊΠΎΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²ΡΡΡΠ΅ Π² Screen ΡΠ΅ Π΄ΡΡΠΆΠ°Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ, Π·Π°ΡΠΎΡΠΎ `TERM` Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ Π½Π° `screen` ΠΈΠ»ΠΈ `screen-256color` Π²ΠΌΠ΅ΡΡΠΎ Π½Π° `xterm-256color`. ΠΠΊΠΎ TUI ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠ° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ, ΠΏΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ Ρ `echo $TERM` ΠΈ Π·Π°ΠΌΠ΅Π½Π΅ΡΠ΅ Π² `.screenrc` Ρ `term xterm-256color` ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡ.
ΠΠ·ΡΠ΅ΡΠΏΠ²Π°Π½Π΅ Π½Π° Π±ΡΡΠ΅ΡΠ° Π·Π° ΠΏΡΠ΅Π²ΡΡΡΠ°Π½Π΅ Π½Π°Π·Π°Π΄: ΠΡΡΠ΅ΡΡΡ Π·Π° ΠΏΡΠ΅Π²ΡΡΡΠ°Π½Π΅ Π½Π°Π·Π°Π΄ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΎΡ 100 ΡΠ΅Π΄Π° Π΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠ΅Π½ Π·Π° ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΎ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ Π½Π° Π»ΠΎΠ³ΠΎΠ²Π΅. ΠΠΈΠ½Π°Π³ΠΈ Π·Π°Π΄Π°Π²Π°ΠΉΡΠ΅ `defscrollback 10000` ΠΈΠ»ΠΈ ΠΏΠΎ-Π²ΠΈΡΠΎΠΊΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π² `.screenrc` Π½Π° ΡΡΡΠ²ΡΡΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° Π°ΠΊΡΠΈΠ²Π½Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΡ.
ΠΡΡΠ·Π° ΡΠΏΡΠ°Π²ΠΊΠ°: ΠΡΠ½ΠΎΠ²Π½ΠΈ Screen ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ
| ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ | ΠΠΎΠΌΠ°Π½Π΄Π° / ΠΡΡΠΊ ΠΏΡΡ | |
|---|---|---|
| Π‘ΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π½ΠΎΠ²Π° ΡΠ΅ΡΠΈΡ | `screen` | |
| Π‘ΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½Π° ΡΠ΅ΡΠΈΡ | `screen -S name` | |
| Π‘ΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΡΠΊΠ°ΡΠ΅Π½Π° ΡΠ΅ΡΠΈΡ | `screen -dmS name` | |
| ΠΠ·Π±ΡΠΎΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅ΡΠΈΠΈ | `screen -ls` | |
| ΠΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΏΡΠΈΠΊΠ°ΡΠ²Π°Π½Π΅ ΠΏΠΎ ΠΈΠΌΠ΅ | `screen -r name` | |
| ΠΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΏΡΠΈΠΊΠ°ΡΠ²Π°Π½Π΅ | `screen -d -r name` | |
| ΠΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΏΡΠΈΠΊΠ°ΡΠ²Π°Π½Π΅ | `screen -x name` | |
| ΠΡΠΊΠ°ΡΠ²Π°Π½Π΅ | `Ctrl+A, D` | |
| ΠΠΎΠ² ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ | `Ctrl+A, C` | |
| Π‘Π»Π΅Π΄Π²Π°Ρ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ | `Ctrl+A, N` | |
| ΠΡΠ΅Π΄ΠΈΡΠ΅Π½ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ | `Ctrl+A, P` | |
| Π‘ΠΏΠΈΡΡΠΊ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΡΠΈΡΠ΅ | `Ctrl+A, "` | |
| ΠΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ | `Ctrl+A, A` | |
| Π₯ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»Π½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ | `Ctrl+A, S` | |
| ΠΠ΅ΡΡΠΈΠΊΠ°Π»Π½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ | `Ctrl+A, | ` |
| ΠΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅Π³ΠΈΠΎΠ½ΠΈ | `Ctrl+A, Tab` | |
| ΠΠ»ΠΈΠ·Π°Π½Π΅ Π² ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅/ΠΏΡΠ΅Π²ΡΡΡΠ°Π½Π΅ | `Ctrl+A, [` | |
| ΠΠΎΡΡΠ°Π²ΡΠ½Π΅ ΠΎΡ Π±ΡΡΠ΅ΡΠ° | `Ctrl+A, ]` | |
| ΠΠ°ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅ΡΠΈΡ | `Ctrl+A, X` | |
| ΠΠ°ΡΠ²Π°ΡΡΠ½Π΅ Π½Π° ΡΠ΅ΠΊΡΡΠΈΡ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ | `Ctrl+A, K` | |
| ΠΠ°ΡΠ²Π°ΡΡΠ½Π΅ Π½Π° ΡΡΠ»Π°ΡΠ° ΡΠ΅ΡΠΈΡ | `Ctrl+A, ` | |
| ΠΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΊΡΠΌ ΡΠ΅ΡΠΈΡ | `screen -S name -X stuff "cmdn"` | |
| ΠΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΠΌΡΡΡΠ²ΠΈ ΡΠ΅ΡΠΈΠΈ | `screen -wipe` |
ΠΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π° ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅: Screen Π² ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Π½ΠΈ Ρ ΠΎΡΡΠΈΠ½Π³ ΡΡΠ΅Π΄ΠΈ
Screen ΡΠ°Π±ΠΎΡΠΈ Π½Π° Π½ΠΈΠ²ΠΎ ΡΠ΅Π», ΠΊΠΎΠ΅ΡΠΎ Π³ΠΎ ΠΏΡΠ°Π²ΠΈ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ Π²ΡΡΠΊΠ° Linux ΡΡΠ΅Π΄Π°, ΠΊΡΠ΄Π΅ΡΠΎ ΠΈΠΌΠ°ΡΠ΅ SSH Π΄ΠΎΡΡΡΠΏ. Π’ΠΎΠ²Π° Π²ΠΊΠ»ΡΡΠ²Π° bare-metal ΡΡΡΠ²ΡΡΠΈ, Dedicated Servers ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈ VPS Π₯ΠΎΡΡΠΈΠ½Π³ ΠΈΠ½ΡΡΠ°Π½ΡΠΈ. ΠΠ΅ Π΅ Π½Π°Π»ΠΈΡΠ΅Π½ Π² ΡΡΠ΅Π΄ΠΈ Π·Π° ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ Ρ ΠΎΡΡΠΈΠ½Π³, ΠΊΡΠ΄Π΅ΡΠΎ SSH Π΄ΠΎΡΡΡΠΏΡΡ Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ ΠΈΠ»ΠΈ Π»ΠΈΠΏΡΠ²Π°.
ΠΠ° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ, Π²ΠΊΠ»ΡΡΠ²Π°ΡΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½Π° ΡΠΎΠ½ΠΎΠ²Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° β ΠΊΠ°ΡΠΎ GPU-ΡΡΠΊΠΎΡΠ΅Π½ΠΎ ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ Π½Π°Π±ΠΎΡΠΈ ΠΎΡ Π΄Π°Π½Π½ΠΈ ΠΈΠ»ΠΈ Π΄ΡΠ»Π³ΠΎΡΡΠ°ΠΉΠ½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΈ Π·Π°Π΄Π°ΡΠΈ β ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Screen Ρ GPU Π₯ΠΎΡΡΠΈΠ½Π³ ΡΡΠ΅Π΄Π° Π²ΠΈ Π΄Π°Π²Π° ΠΊΠ°ΠΊΡΠΎ ΠΈΠ·ΡΠΈΡΠ»ΠΈΡΠ΅Π»Π½ΠΈΡΠ΅ ΡΠ΅ΡΡΡΡΠΈ, ΡΠ°ΠΊΠ° ΠΈ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡΠ° Π½Π° ΡΠ΅ΡΠΈΠΈΡΠ΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡΠ°ΡΠΎΠ²ΠΈ Π·Π°Π΄Π°ΡΠΈ.
ΠΠΊΠΎ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π²ΠΈ Π²ΠΊΠ»ΡΡΠ²Π° ΡΠ΅Π±-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ΠΈ ΡΡΠ»ΡΠ³ΠΈ Π½Π°ΡΠ΅Π΄ Ρ ΡΠΎΠ½ΠΎΠ²Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°, ΡΡΡΠ΅ΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° Screen-ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Π½ΠΈ backend Π·Π°Π΄Π°ΡΠΈ Ρ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ Π·Π°ΡΠΈΡΠ΅Π½ΠΈ SSL Π‘Π΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ Π½Π° ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈΡΠ΅ Π²ΠΈ ΠΊΡΠ°ΠΉΠ½ΠΈ ΡΠΎΡΠΊΠΈ Π³Π°ΡΠ°Π½ΡΠΈΡΠ°, ΡΠ΅ ΡΠ΅Π»ΠΈΡΡ ΡΡΠ΅ΠΊ β ΠΊΠ°ΠΊΡΠΎ Π²ΠΈΠ΄ΠΈΠΌΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ ΡΠ»ΠΎΠΉ, ΡΠ°ΠΊΠ° ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΠΈΡΡ backend β ΡΠ°Π±ΠΎΡΠΈ Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈ Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ.
ΠΠ°ΡΡΠΈΡΠ° Π·Π° Π²Π·Π΅ΠΌΠ°Π½Π΅ Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΡ: ΠΠΎΠ³Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Screen
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ Screen ΠΊΠΎΠ³Π°ΡΠΎ:
- ΠΠΌΠ°ΡΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡ Π½Π° ΡΠ΅ΡΠΈΠΈΡΠ΅ Π½Π° ΡΡΡΠ²ΡΡ, ΠΊΡΠ΄Π΅ΡΠΎ Π΅ Π½Π°Π»ΠΈΡΠ΅Π½ ΡΠ°ΠΌΠΎ Screen
- ΠΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠ΅ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ΅ΡΠΈΠΉΠ½Π° ΠΊΠΎΠ½Π·ΠΎΠ»Π° ΠΈΠ»ΠΈ Π²Π³ΡΠ°Π΄Π΅Π½ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ
- ΠΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠ΅ Π΅Π΄ΠΈΠ½ Π΄ΡΠ»Π³ΠΎΡΡΠ°Π΅Π½ ΠΏΡΠΎΡΠ΅Ρ ΠΈ Π½Π΅ ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ΡΠ΅ ΠΎΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ
- Π Π°Π±ΠΎΡΠΈΡΠ΅ Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°, Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° Alpine ΠΈΠ»ΠΈ BusyBox
- Π’ΡΡΠ±Π²Π° Π΄Π° ΡΠΏΠΎΠ΄Π΅Π»ΠΈΡΠ΅ ΡΠ΅ΡΠΈΡ Ρ Π΄ΡΡΠ³ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ Π² ΡΠ΅Π°Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅
ΠΠ±ΠΌΠΈΡΠ»Π΅ΡΠ΅ tmux Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ²Π° ΠΊΠΎΠ³Π°ΡΠΎ:
- ΠΠ·ΠΈΡΠΊΠ²Π°ΡΠ΅ Π³ΡΠ²ΠΊΠ°Π²ΠΎ Ρ ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»Π½ΠΎ ΠΈ Π²Π΅ΡΡΠΈΠΊΠ°Π»Π½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ
- ΠΡΠΊΠ°ΡΠ΅ Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΡ ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π° ΡΡΠ°ΡΡΡ Π»Π΅Π½ΡΠ°ΡΠ°
- ΠΠ·Π³ΡΠ°ΠΆΠ΄Π°ΡΠ΅ ΡΡΠ΅Π΄Π° Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠ΅ΡΠΊΠ° ΡΠ°Π±ΠΎΡΠ½Π° ΡΡΠ°Π½ΡΠΈΡ ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΈ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ
- ΠΠ°ΡΠΈΡΡ Π΅ΠΊΠΈΠΏ Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠ°Π» ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° tmux ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ°
ΠΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ Π½ΠΈΡΠΎ Π΅Π΄Π½ΠΎΡΠΎ (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ systemd ΠΈΠ»ΠΈ supervisor Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ²Π°) ΠΊΠΎΠ³Π°ΡΠΎ:
- Π¦Π΅Π»ΡΠ° Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΡΠΎΠ½ΠΎΠ²Π° ΡΡΠ»ΡΠ³Π°, ΠΊΠΎΡΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΡΠ΅Π»Π΅Π΅ ΠΏΡΠΈ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅
- ΠΠ΅ ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ΡΠ΅ ΠΎΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠΈΡ ΡΠ΅ ΠΏΡΠΎΡΠ΅Ρ
- ΠΡΠΎΡΠ΅ΡΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΡΠΈ ΠΏΠΎΠ²ΡΠ΅Π΄Π°
ΠΠΎΠ½ΡΡΠΎΠ»Π΅Π½ ΡΠΏΠΈΡΡΠΊ Ρ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠ»ΡΡΠΎΠ²ΠΈ ΠΈΠ·Π²ΠΎΠ΄ΠΈ
ΠΡΠ΅Π΄ΠΈ Π΄Π° ΡΠ°Π·ΡΠΈΡΠ°ΡΠ΅ Π½Π° Screen Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π° ΡΡΠ΅Π΄Π°, ΠΏΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ:
- `autodetach on` Π΅ ΠΏΡΠΈΡΡΡΡΠ²Π°Ρ Π² `~/.screenrc` β Π±Π΅Π· Π½Π΅Π³ΠΎ, ΠΏΡΠ΅ΠΊΡΡΠ²Π°Π½ΠΈΡΡΠ° Π½Π° SSH ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ½ΠΈΡΠΎΠΆΠ°Ρ ΡΠ΅ΡΠΈΠΈΡΠ΅
- `defscrollback` Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ Π½Π° ΠΏΠΎΠ½Π΅ 5000 ΡΠ΅Π΄Π° Π·Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π»ΠΎΠ³ΠΎΠ²Π΅
- `defflow off` Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ Π·Π° ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ»ΡΡΠ°ΠΉΠ½ΠΈ Π·Π°ΠΌΡΠ°Π·ΡΠ²Π°Π½ΠΈΡ ΠΎΡ `Ctrl+S`
- ΠΡΠΈΡΠΊΠΈ Π΄ΡΠ»Π³ΠΎΡΡΠ°ΠΉΠ½ΠΈ ΡΠ΅ΡΠΈΠΈ ΡΠ° ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ΠΈ (`-S flag`) β Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ ΡΠ°Π·ΡΠΈΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΌΠΎ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΠΎ PID
- ΠΠΎΠ·Π½Π°Π²Π°ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Π·Π° Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ `screen -d -r` Π·Π° ΠΎΡΡΠ°ΡΠ΅Π»ΠΈ ΠΏΡΠΈΠΊΠ°ΡΠ΅Π½ΠΈ ΡΠ΅ΡΠΈΠΈ
- ΠΡΡΡΠ²ΠΈΡΠ΅ ΡΠΎΠΊΠ΅ΡΠΈ Π½Π° ΡΠ΅ΡΠΈΠΈ ΡΠ΅ ΠΏΠΎΡΠΈΡΡΠ²Π°Ρ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎ Ρ `screen -wipe`
- ΠΠΊΠΎ ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ, ΡΠ°Π·Π±ΠΈΡΠ°ΡΠ΅ Π³ΡΠ°Π½ΠΈΡΠ°ΡΠ° Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΎΡΡ Π½Π° ΡΠ΅ΡΠΈΠΈΡΠ΅ root/ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»
- ΠΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° `TERM` Π΅ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π°, Π°ΠΊΠΎ TUI ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° ΡΠ΅ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ Π²ΡΡΡΠ΅ Π² Screen
- ΠΠ° Π½Π°ΠΏΡΠ»Π½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠΎΠ½ΠΎΠ²ΠΈ Π·Π°Π΄Π°ΡΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° `screen -dmS` Π²ΠΌΠ΅ΡΡΠΎ `nohup` ΠΈΠ»ΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ `&`, Π΄Π°Π²Π°ΠΉΠΊΠΈ Π²ΠΈ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌΠ°, ΠΈΠ½ΡΠΏΠ΅ΠΊΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ΅ΡΠΈΡ
Π§ΠΠ
ΠΡΠ΅Π»ΡΠ²Π° Π»ΠΈ GNU Screen ΠΏΡΠΈ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΡΠ²ΡΡΠ°?
ΠΠ΅. Screen ΡΠ΅ΡΠΈΠΈΡΠ΅ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΊΠ°ΡΠΎ ΠΏΡΠΎΡΠ΅ΡΠΈ. ΠΡΠ»Π½ΠΎΡΠΎ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΡΠ²ΡΡΠ° ΠΏΡΠ΅ΠΊΡΠ°ΡΡΠ²Π° Π²ΡΠΈΡΠΊΠΈ Screen ΡΠ΅ΡΠΈΠΈ ΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ Π΄ΡΡΠ΅ΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ. ΠΠ° ΠΏΡΠΎΡΠ΅ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΡΠ΅Π»Π΅ΡΡ ΠΏΡΠΈ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ systemd Π΅Π΄ΠΈΠ½ΠΈΡΠΈ ΠΈΠ»ΠΈ Π½Π°Π΄Π·ΠΎΡΠ½ΠΈΠΊ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΊΠ°ΡΠΎ Supervisor. Screen Π΅ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Π° ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡ ΠΏΡΠΈ ΠΏΡΠ΅ΠΊΡΡΠ²Π°Π½ΠΈΡ Π½Π° Π²ΡΡΠ·ΠΊΠ°ΡΠ°, Π° Π½Π΅ ΠΏΡΠΈ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅.
ΠΠ°ΠΊΠ²Π° Π΅ ΡΠ°Π·Π»ΠΈΠΊΠ°ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ `screen -r` ΠΈ `screen -x`?
`screen -r` ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΏΡΠΈΠΊΠ°ΡΠ° ΠΊΡΠΌ ΠΎΡΠΊΠ°ΡΠ΅Π½Π° ΡΠ΅ΡΠΈΡ β Π½Π΅ΡΡΠΏΠ΅ΡΠ΅Π½ Π΅, Π°ΠΊΠΎ ΡΠ΅ΡΠΈΡΡΠ° Π²Π΅ΡΠ΅ Π΅ ΠΏΡΠΈΠΊΠ°ΡΠ΅Π½Π° Π΄ΡΡΠ³Π°Π΄Π΅. `screen -x` ΠΏΡΠΈΠΊΠ°ΡΠ° ΠΊΡΠΌ ΡΠ΅ΡΠΈΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠ΅ΠΊΡΡΠΎΡΠΎ ΠΉ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° ΠΏΡΠΈΠΊΠ°ΡΠ²Π°Π½Π΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΠΉΠΊΠΈ Π½Π° Π΄Π²Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° Π΄Π° ΡΠΏΠΎΠ΄Π΅Π»ΡΡ Π΅Π΄Π½Π° ΠΈ ΡΡΡΠ° ΡΠ΅ΡΠΈΡ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ `-x` Π·Π° ΡΡΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ; ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ `-r` Π·Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΏΡΠΈΠΊΠ°ΡΠ²Π°Π½Π΅.
ΠΠ°ΠΊ Π΄Π° ΠΏΡΠ΅Π²ΡΡΡΠ°ΠΌ Π½Π°Π³ΠΎΡΠ΅ Π²ΡΡΡΠ΅ Π² Screen ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ?
ΠΠ»Π΅Π·ΡΠ΅ Π² ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ Ρ `Ctrl+A, [`, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠΈΡΠ΅ Π·Π° ΡΡΡΠ΅Π»ΠΊΠΈ, `Page Up`/`Page Down`, ΠΈΠ»ΠΈ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡ Π² ΡΡΠΈΠ» vi (`Ctrl+F`, `Ctrl+B`). ΠΠ°ΡΠΈΡΠ½Π΅ΡΠ΅ `Escape` ΠΈΠ»ΠΈ `q` Π·Π° ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ ΠΎΡ ΡΠ΅ΠΆΠΈΠΌΠ° Π½Π° ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅. Π£Π²Π΅ΡΠ΅ΡΠ΅ ΡΠ΅, ΡΠ΅ `defscrollback` Π² `.screenrc` Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π²ΠΈΡΠΎΠΊΠΎ, Π·Π° Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°ΡΠ° Π²ΠΈ ΠΈΡΡΠΎΡΠΈΡ.
ΠΠΎΠΆΠ΅ Π»ΠΈ Screen Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π±Π΅Π· root ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ?
ΠΠ°. Screen ΡΠ°Π±ΠΎΡΠΈ ΠΈΠ·ΡΡΠ»ΠΎ ΠΊΠ°ΡΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°ΡΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π». ΠΠ΅ ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ root ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅, ΠΏΡΠΈΠΊΠ°ΡΠ²Π°Π½Π΅ ΠΈΠ»ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΠΈΠΈ. Π€Π°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΡΠΎΠΊΠ΅ΡΠΈΡΠ΅ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» (ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ `/var/run/screen/S-username/`). ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎΡΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΅ Π°ΠΊΠΎ Screen Π½Π΅ Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ β ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡΠ° ΠΈΠ·ΠΈΡΠΊΠ²Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π° root ΠΈΠ»ΠΈ sudo.
ΠΠ°ΡΠΎ Screen ΡΠ΅ΡΠΈΡΡΠ° ΠΌΠΈ ΠΏΠΎΠΊΠ°Π·Π²Π° βAttachedβ, ΠΊΠΎΠ³Π°ΡΠΎ Π½ΠΈΠΊΠΎΠΉ Π½Π΅ Π΅ ΡΠ²ΡΡΠ·Π°Π½?
Π’ΠΎΠ²Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π°, ΠΊΠΎΠ³Π°ΡΠΎ SSH Π²ΡΡΠ·ΠΊΠ° Π΅ ΠΏΡΠ΅ΠΊΡΡΠ½Π°Π»Π° Π±Π΅Π· ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΡΠΈΡΡ SIGHUP β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΡΠ°Π΄ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΎ ΠΈΠ·ΡΠ°ΠΊΠ²Π°Π½Π΅, Π° Π½Π΅ ΠΈΠ·ΡΠΈΡΠ½ΠΎ ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅. Π‘Π΅ΡΠΈΡΡΠ° Π·Π°ΠΏΠ°Π·Π²Π° ΡΠ²ΠΎΠ΅ΡΠΎ `Attached` ΡΡΡΡΠΎΡΠ½ΠΈΠ΅, Π·Π°ΡΠΎΡΠΎ Screen Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ» ΡΠΈΠ³Π½Π°Π»Π° Π·Π° ΠΏΡΠ΅ΠΊΡΡΠ²Π°Π½Π΅. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ `screen -d -r session_name` Π·Π° ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»Π½ΠΎ ΠΎΡΠΊΠ°ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ·ΡΠ°ΡΠ½Π°ΡΠ° Π²ΡΡΠ·ΠΊΠ° ΠΈ ΡΠΈΡΡΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΏΡΠΈΠΊΠ°ΡΠ²Π°Π½Π΅.
ΠΎΡ Π²ΡΠΈΡΠΊΠΈ Ρ
ΠΎΡΡΠΈΠ½Π³ ΡΡΠ»ΡΠ³ΠΈ