文章目錄
- 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 &"