文章目录
- 1. 背景
- 2. 命令
- 2.1 命令分隔符
- 2.2 多行脚本
- 2.3 单行脚本
- 3. SSH 任务后台运行
1. 背景
有时我们只需要远程执行一次任务然后就关闭,而不需要长时间 ssh 登录到远程服务器。同时一次任务可能需要执行多条命令,那么我们该如何做呢?
2. 命令
在SSH(Secure Shell)中,一次性执行多条命令可以通过几种方式实现:
2.1 命令分隔符
在 SSH 命令后面可以直接跟上多条命令,通过分号 ;
或逻辑运算符(如 && 和 ||)分隔。下面是一些例子:
ssh user@hostname 'command1; command2; command3'
或者
ssh user@hostname 'command1 && command2' # 如果command1成功则执行command2ssh user@hostname 'command1 || command2' # 如果command1失败则执行command2
2.2 多行脚本
将多条命令写入一个临时脚本文件,然后通过 SSH 在远程主机上执行这个脚本:
cat << EOF > script.sh
command1
command2
command3
EOF
chmod +x script.sh
ssh user@hostname './script.sh'
或者直接在一行内构造脚本并通过bash执行:
ssh user@hostname 'bash -s' < script.sh
其中script.sh
是你本地创建的包含多条命令的脚本文件。
2.3 单行脚本
使用引号包含多条命令:
ssh user@hostname "command1 && command2 && command3"
3. SSH 任务后台运行
如果 SSH 执行命令后,命令阻塞在前台,那么需要用 /dev/null
结合 &
让进程后台运行:
ssh root@{ip} "mkdir /root/tmp && sh /root/start_task.sh > /dev/null 2>&1 &"