๐Ÿ”™ Back to Top

Mon May 07 2018

GNU screen ใ‚’ใƒ‡ใƒ—ใƒญใ‚คๅ ดๆ‰€ใซไฝฟใ†

่ถฃๅ‘ณใ‚ตใƒผใƒใฎไธŠใงใ„ใใคใ‚‚ใฎใ‚ตใƒผใƒ“ใ‚นใƒ—ใƒญใ‚ฐใƒฉใƒ ใ‚’ๅ‹•ใ‹ใ—ใŸใ„. ๆฅญๅ‹™ใ ใจใ€ใƒ—ใƒญใ‚ฐใƒฉใƒ ใฎไพๅญ˜้–ขไฟ‚ใฎ่ก็ชใ ใจใ‹ใ€่‡ชๅ‹•ใงๅ†่ตทๅ‹•ใจใ‹ใฎใŸใ‚ใซใ€ใ“ใฎใŸใ‚ใซdockerใ‚’ไฝฟใ†ใŒใ€่ถฃๅ‘ณใ‚ตใƒผใƒใงใใ“ใพใงๅคง่ขˆ่ฃŸใชใ“ใจใ‚’ใ—ใŸใใชใ„. ไปŠใพใงใฉใ†ใ‚„ใฃใฆใ„ใŸใ‹ใจ่จ€ใˆใฐใ€GNU screen ใ‚’้ฉๅฎœใ‚ธใƒฃใƒณใƒซใ”ใจใซ็ซ‹ใฆใฆใ€ใใฎไธญใฎ window ใ”ใจใซใƒ—ใƒญใ‚ปใ‚นใ‚’ๆ‰‹ใงๅ‹•ใ‹ใ—ใฆใ„ใŸ. ใ“ใ‚Œใ‚’ ansible ใจใ‹ใงใ‚ทใƒŸใƒฅใƒฌใƒผใ‚ทใƒงใƒณใ™ใ‚‹ใ‚ˆใ†ใซใ—ใฆใŠใ‘ใฐใ„ใ„.

ใƒ‡ใƒ—ใƒญใ‚คใซไฝฟใ†ใŸใ‚ใฎ screen ใ‚’ไฝœใฃใฆใŠใ

ไปฎใซ deploy ใจใ„ใ†ๅๅ‰ใฎ screen ใ‚’่ตทๅ‹•ใ—ใฆใŠใ.

screen -S deploy

ใ“ใ‚Œใ‚’ใšใฃใจๆฎ‹ใ—ใฆใŠใ„ใฆใ€ใ“ใฎไธญใซ1ใคใšใคใƒ—ใƒญใ‚ฐใƒฉใƒ ใ‚’็”Ÿใ‚„ใ—ใฆใ„ใ.

ใƒ‡ใƒ—ใƒญใ‚คใ™ใ‚‹

deploy ใฎไธญใง window ใ‚’็ซ‹ใฆใฆใ€ใ‚ณใƒžใƒณใƒ‰ใ‚’ๅ…ฅๅŠ›ใ™ใ‚‹. window ใซใฏไธ€ๆ„ใชๅๅ‰ใ‚’ไธŽใˆใฆ็ฎก็†ใ™ใ‚‹ใฎใŒ่‰ฏใ„ใจๆ€ใ†. ไธ‹ใฎไพ‹ใงใฏไปฎใซ test ใจใ—ใฆใŠใ.

# test ใจใ„ใ†ๅๅ‰ใฎ window ใ‚’้–‹ใ„ใฆ bash ใ‚’ exec ใ™ใ‚‹
# ๆœ€ๅพŒใฎ bash ใ‚’็œ็•ฅใ™ใ‚Œใฐใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฎ shell ใŒ่ตทๅ‹•ใ™ใ‚‹ใฎใงใใ‚Œใงใ„ใ„ใชใ‚‰ใใ‚Œใงใ„ใ„
screen -S deploy -X screen -t test bash

# -p test ใง test ใ‚’้ธใ‚“ใง (pre-select) stuff ใ‚ณใƒžใƒณใƒ‰ใงๆ–‡ๅญ—ๅˆ—ใ‚’ๅ…ฅๅŠ›ใ™ใ‚‹
# ๆœ€ๅพŒใซๆ”น่กŒใ‚’ๅ…ฅใ‚Œใ‚Œใฐใ€้€šๅธธใฎใ‚ทใ‚งใƒซใธใฎๅ…ฅๅŠ›ใฎใ‚ˆใ†ใซใ€ใ‚ณใƒžใƒณใƒ‰ใŒๅฎŸ่กŒใ•ใ‚Œใ‚‹
# $'...' ใฏ \n ใŒๆ”น่กŒใซใชใ‚‹ใŸใ‚ใฎๆง‹ๆ–‡
screen -S deploy -p test -X stuff $'while :; do date; sleep 1; done\n'

ใ‚‚ใฃใจใ„ใ„ๆ–นๆณ•ใŒใ‚ใ‚‹ใชใ‚‰็Ÿฅใ‚ŠใŸใ„ใงใ™.

man screen ใ™ใ‚‹ใจ -p ใ‚ชใƒ—ใ‚ทใƒงใƒณใซใฏใ‚‚ใฃใจ็‰นๅˆฅใชๆ–‡ๅญ—ใ‚’ไธŽใˆใ‚‹ใ“ใจใงใ€window ใ‚’ๆ–ฐใ—ใ้–‹ใ„ใฆใใ“ใงใ‚ณใƒžใƒณใƒ‰ใ‚’ๅฎŸ่กŒใงใใ‚‹ใจใ„ใ†้ขจใซๆ›ธใ„ใฆใ‚‹ใจๆ€ใ†ใฎใ ใŒใ€ใ“ใ‚ŒใฏไธŠๆ‰‹ใๅ‹•ใ‹ใชใ‹ใฃใŸใฎใงใ€ใ‚ใ–ใ‚ใ– window ใ‚’้–‹ใใŸใ‚ใฎใ“ใจใ‚’ใ™ใ‚‹. ๆณจๆ„ใจใ—ใฆใ€้–‹ใใ ใ‘ใ ใจใ€

  1. number ใŒ้ฉๅฝ“ใซๆŒฏใ‚‰ใ‚Œใ‚‹ใ ใ‘
  2. ๆฌกใฎใ‚ณใƒžใƒณใƒ‰ๅฎŸ่กŒๆ™‚ใซใฏใ€ๆœ€่ฟ‘้–‹ใ„ใŸ window ใŒ้ธๆŠžใ•ใ‚Œใฆใ„ใ‚‹็Šถๆ…‹ใงใฏใชใ„

ใจใ“ใ‚ใง

window title (name) ใซ็งใฏ current directory ใ‚’่กจ็คบใ™ใ‚‹ใ‚ˆใ†ใซใ—ใฆใ„ใŸ. zsh ๅดใฎ่จญๅฎšใง. zsh ใ‚’้–‹ใ็ต‚ใ‚ใฃใŸๆ™‚็‚นใงๅ‹ๆ‰‹ใซ name ใŒๅค‰ใ‚ใ‚‹ใฎใงใ€ -p ใงๆŒ‡ๅฎšใ—ใฆใ‚‚ Cound not find ใจ่จ€ใ‚ใ‚Œใฆ่ฉฐใพใฃใฆใŸ. ๅนธใ„ bash ใ‚’้–‹ใ‘ใฐๅ›ž้ฟใงใใ‚‹ใฎใงใ€ไธŠใฎไพ‹ใงใฏ bash ใ‚’้–‹ใใ‚ˆใ†ใซใ—ใฆใ„ใ‚‹.

<ESCAPE_SEQUENCE> " ใง window list ใŒ่กจ็คบใงใใฆใ€็ขบใ‹ใซ -t ใงๆŒ‡ๅฎšใ—ใŸ name ใฎ window ใŒ็”Ÿใˆใฆใ‚‹ใ‹ใ‚’็ขบใ‹ใ‚ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚‹. -p ใงๆŒ‡ๅฎšใงใใ‚‹ใฎใฏ ใ“ใ“ใซใ‚ใ‚‹็•ชๅทใพใŸใฏ name ใงใ‚ใ‚‹.