我正在尝试ssh到远程计算机并运行脚本,然后让脚本运行.下面是我的脚本.但是,当它运行时,脚本在计算机上成功运行,但ssh会话挂起.有什么问题?
ssh -x $username@$node 'rm -rf statuslist
mkdir statuslist
chmod u+x ~/monitor/concat.sh
chmod u+x ~/monitor/script.sh
nohup ./monitor/concat.sh &
exit;'
Run Code Online (Sandbox Code Playgroud)
Jay*_*yan 24
在某些情况下,您希望在远程计算机/服务器上执行/启动某些脚本(将自动终止)并断开与服务器的连接.
例如:在执行时在框上运行的脚本
我会使用以下命令:
ssh remoteserver 'nohup /path/to/script `</dev/null` >nohup.out 2>&1 &'
Run Code Online (Sandbox Code Playgroud)
@CKeven,您可以将所有这些命令放在一个脚本上,将其推送到远程服务器并按如下方式启动它:
echo '#!/bin/bash
rm -rf statuslist
mkdir statuslist
chmod u+x ~/monitor/concat.sh
chmod u+x ~/monitor/script.sh
nohup ./monitor/concat.sh &
' > script.sh
chmod u+x script.sh
rsync -azvp script.sh remotehost:/tmp
ssh remotehost '/tmp/script.sh `</dev/null` >nohup.out 2>&1 &'
Run Code Online (Sandbox Code Playgroud)
希望这工作;-)
编辑:你也可以使用ssh user @ host'screen -S SessionName -d -m"/ path/to/executable"'
这会创建一个分离的屏幕会话并在其中运行目标命令
Joh*_*nck 21
您对此使用有何看法screen
?您可以screen
通过ssh 运行来启动命令(concat.sh
),然后如果您想监视它,您将能够返回到屏幕会话(可能很方便,取决于concat的功能).
更具体地说,试试这个:
ssh -t $username@$node screen -dm -S testing ./monitor/concat.sh
Run Code Online (Sandbox Code Playgroud)
您应该会发现提示会立即返回,并且concat.sh
正在远程计算机上运行.我将解释一些选项:
ssh -t
做一个TTY.屏幕需要这个.screen -dm
使它以"分离"模式启动.这就像你的目的"背景".-S
测试为您的屏幕会话命名.它是可选的,但建议使用.现在,完成此操作后,您可以转到远程计算机并执行以下操作:
screen -r testing
Run Code Online (Sandbox Code Playgroud)
这会将您附加到包含您的程序的屏幕会话.从那里你可以控制它,杀死它,看它的输出,等等.按Ctrl-A,然后d将使您与屏幕会话分离. screen -ls
将列出所有正在运行的会话
归档时间: |
|
查看次数: |
39260 次 |
最近记录: |