对于跳板机登录和执行耗时任务的情况,我们希望能够快速恢复会话并且不受办公电脑断电影响。
这个时候 screen 就派上用场了,我们可以创建screen会话。
createScreen.sh
createScreen.sh
可以创建一个screen会话并执行任意命令(包括需要交互的命令)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#!/bin/bash
if [ $# -lt 2 ]
then
echo "Usage: ${prog##*/} sessName cmd1 cmd2 ..."
exit -1
fi
sessName=$1
shift
# 杀掉旧的同名session
screen -X -S $sessName quit > /dev/null 2>&1
# 创建session
screen -dmS $sessName
until [ $# -eq 0 ]
do
cmd=$1
echo "exec cmd: $cmd"
# stuff是命令参数,不能省略
screen -S $sessName -p 0 -X stuff "$cmd"$'\n'
shift;
done
|
createScreens.sh
1
2
3
4
5
6
7
8
9
|
#!/bin/bash
screen -wipe
# 免密登录的服务器
sh createScreen.sh test-srv 'ssh 服务器IP' 'sudo -i'
# 权限受限需要密码登录的服务器
sh createScreen.sh dev-srv 'ssh 服务器IP' '密码' '可选执行的命令'
|
由于 createScreen.sh
支持交换命令的执行,因此可以ssh到服务器(是否需要输入密码都可以)。
这样我们就可以批量创建screen会话,达到类似自动登录的效果,快速恢复日常办公的场景。
screen常用操作
1
2
3
4
5
|
# 列出所有会话
screen -ls
# 恢复会话
screen -r 会话名
|
通过按键 Ctrl-a d
可以从当前会话detach离开。