让 ssh 在目标机器上后台执行命令

2024-01-11

这是一个后续问题如何在 shell 脚本中使用 ssh? https://stackoverflow.com/questions/29061/how-do-you-use-ssh-in-a-shell-script问题。如果我想在远程机器上执行在该机器后台运行的命令,如何让 ssh 命令返回?当我尝试在命令末尾包含与号 (&) 时,它会挂起。该命令的确切形式如下所示:

ssh user@target "cd /some/directory; program-to-execute &"

有任何想法吗?需要注意的一件事是,登录到目标计算机总是会产生一个文本横幅,我有SSH密钥设置,因此不需要密码。


这应该可以解决您的问题:

nohup myprogram > foo.log 2> foo.err < /dev/null &

语法和不常见的用法< /dev/null解释得特别好在这个答案中 https://stackoverflow.com/a/19956266/23,为方便起见,在此引用。

< /dev/null用于立即向程序发送EOF,以便 不等待输入(/dev/null,空设备,是一个特殊文件 丢弃所有写入其中的数据,但报告写入 操作成功,并且不向任何读取的进程提供任何数据 从它,立即产生 EOF)。

所以命令:

nohup myscript.sh >myscript.log 2>&1 </dev/null &
#\__/             \___________/ \__/ \________/ ^
# |                    |          |      |      |
# |                    |          |      |  run in background
# |                    |          |      |
# |                    |          |   don't expect input
# |                    |          |   
# |                    |        redirect stderr to stdout
# |                    |           
# |                    redirect stdout to myscript.log
# |
# keep the command running 
# no matter whether the connection is lost or you logout

将移动到后台命令,输出 stdout 和 stderr 到 myscript.log 而不等待任何输入。


另请参阅维基百科文章nohup http://en.wikipedia.org/wiki/Nohup,为了您的方便也在这里引用。

Nohuping 后台作业适用于 通过 SSH 登录时有用的示例, 因为后台作业可能会导致 shell 由于竞争而挂在注销状态 健康)状况。这个问题还可以 通过重定向所有三个来克服 I/O 流。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

让 ssh 在目标机器上后台执行命令 的相关文章

  • 拼写检查 shell 脚本

    我有一些疑问 我对一个应该是简单拼写检查器的脚本有疑问 它的目的是 当发现错误的单词时 它会提示用户输入该单词的正确拼写 如果用户输入正确的拼写 则会显示更正的单词以及错误的单词 下面 在读完所有单词之后 但是 如果用户只是按 Enter
  • 使用 crypto/ssh 的 golang scp 文件

    我正在尝试通过 ssh 下载远程文件 以下方法在 shell 上运行良好 ssh hostname tar cz opt local folder gt folder tar gz 然而 golang 上的相同方法在输出工件大小方面存在一些
  • 如果文件没有行尾字符,则 wc -l 不计算文件的最后一个

    我需要计算 unix 文件的所有行数 该文件有 3 行 但是wc l仅给出 2 个计数 我知道它不计算最后一行 因为它没有行尾字符 任何人都可以告诉我如何计算这一行吗 grep c返回匹配行的数量 只需使用一个空字符串 作为您的匹配表达式
  • 何时用引号将 shell 变量括起来?

    我应该或不应该在 shell 脚本中用引号括住变量吗 例如 下列说法正确的是 xdg open URL eq 2 or xdg open URL eq 2 如果是这样 为什么 一般规则 如果它可以为空或包含空格 或实际上任何空格 或特殊字符
  • 如何在 Vim 中突出显示 Bash 脚本?

    我的 Vim 编辑器自动突出显示 PHP 文件 vim file php HTML 文件 vim file html 等等 但是当我输入 vim file在里面写一个Bash脚本 它不会突出显示它 我如何告诉 Vim 将其突出显示为 Bas
  • sed 替换为多行变量[重复]

    这个问题在这里已经有答案了 我正在尝试用跨多行的文本替换单词 我知道我可以简单地使用换行符 n 来解决这个问题 但我想保持字符串 干净 不包含任何不需要的格式 下面的例子显然是行不通的 read r d TEST lt
  • 如何根据 Bash 中的 VI 模式更改光标形状?

    我的 bashrc 中有以下行 set o vi 我希望我的光标在插入模式下具有管道形状 在命令模式下具有块形状 就像我在 vimrc 中放置以下内容时在 Vim 中的形状一样 let t SI e 6 q let t SR e 4 q l
  • Bash:将字符串添加到文件末尾而不换行

    如何将字符串添加到文件末尾而不换行 例如 如果我使用 gt gt 它将添加到文件末尾并换行 cat list txt yourText1 root host 37 echo yourText2 gt gt list txt root hos
  • unix 下日期字段排序

    我有包含数十万条记录的文本文件 其中一个字段是日期字段 有没有办法根据日期字段对文件进行排序 09 APR 12 04 08 43 632279000 AM 19 MAR 12 03 53 38 189606000 PM 19 MAR 12
  • 正则表达式删除块注释也删除 * 选择器

    我正在尝试使用 bash 从 css 文件中删除所有块注释 我有以下 sed 命令的正则表达式 sed r s w s w d 这可以很好地去除块注释 例如 This is a comment this is another comment
  • Linux无法删除文件

    当我找到文件时 我在删除它们时遇到问题 任务 必须找到带有空格的文件并将其删除 我的尝试 rm find L root grep i 但我有错误 rm cannot remove root test No such file or dire
  • Python 3.4.3 subprocess.Popen 在没有管道的情况下获取命令的输出?

    我试图将命令的输出分配给变量 而不让命令认为它正在通过管道传输 原因是 如果正在通过管道传输 则相关命令会给出未格式化的文本作为输出 但如果从终端运行 则会给出颜色格式化的文本 我需要获取这种颜色格式的文本 到目前为止我已经尝试了一些事情
  • Bash 中所有匹配的^单词^替换^?

    为了澄清 我正在寻找一种方法来执行global搜索并替换先前使用的命令 word replacement 似乎只替换了第一场比赛 有没有一些set我无法选择的选项 尝试这个 echo oneone oneone gs one two Rep
  • awk 在循环中使用时不打印任何内容[重复]

    这个问题在这里已经有答案了 我有一堆使用 file 1 a 1 txt 格式的文件 如下所示 A 1 B 2 C 3 D 4 并使用以下命令添加包含每个文件名称的新列 awk print FILENAME NF t 0 file 1 a 1
  • 在 docker 中重定向命令输出

    我想为我的服务器做一些简单的日志记录 它是一个在 Docker 容器中运行的小型 Flask 应用程序 这是 Dockerfile Dockerfile FROM dreen flask MAINTAINER dreen WORKDIR s
  • 如何为 VS Code SSH Remote 配置不同的 shell?

    当我连接到 VS Code 集成终端时 如何更改使用的 shell远程 ssh 工作区 https code visualstudio com docs remote ssh 添加 Matt Bierner 的答案 较新的版本vscode现
  • ssh 连接超时

    我无法在 git 中 ssh 到 github bitbucket 或 gitlab 我通常会收到以下错误消息 如何避免它 输出 ssh T email protected cdn cgi l email protection i ssh
  • 如何制作 Bash 脚本来查找项目中未使用的图像?

    如何制作一个 Bash shell 脚本 它可以识别所有 jpg gif 和 png 文件 然后识别文件夹中任何文本文件中哪些文件未通过 url href 或 src 链接 这就是我开始的 但我最终得到了与我想要的相反的结果 我不想知道引用
  • 使用 SIGINT 默认处理程序时从 system() 返回值

    我遇到了一些奇怪的返回值system 当子进程从终端接收到 SIGINT 时 解释一下 从 Perl 脚本parent pl I used system 运行另一个 Perl 脚本作为子进程 但我还需要通过 shell 运行子进程 所以我使
  • 在 .gitconfig 中隐藏 GitHub 令牌

    我想将所有点文件存储在 GitHub 上 包括 gitconfig 这需要我将 GitHub 令牌隐藏在 gitconfig 中 为此 我有一个 gitconfig hidden token 文件 这是我打算编辑并放在隐藏令牌的 git 下

随机推荐

  • Blackberry 9800 模拟器在启动浏览器时崩溃

    Blackberry 9800 模拟器在启动浏览器时崩溃 抛出异常 JVM 错误 104 未捕获 非法状态异常 这是模拟器的全新安装 没有安装任何第三方应用程序 我非常想用它来测试 Web 应用程序 设备上的所有其他应用程序似乎都可以正常运
  • UIDEVICE方向

    大家好 我有我的启动屏幕 我想以横向模式显示它 并以纵向模式显示所有其他屏幕 我的根视图控制器充当启动屏幕我正在 viewdidload 方法中编写此代码 UIDevice currentDevice setOrientation UIIn
  • 部署 Symfony2 项目

    我们正在开发一个 Symfony2 项目 现在 它已完成并准备部署 我们将整个项目文件上传到服务器 当然通过 ftp 和数据库 现在 当我们打开它的任何页面时 我们都只是一个空白页面 空源代码 缓存是干净的 日志没有显示任何新内容 我们在
  • beautifulSoup中attrMap和attrs的区别

    我想知道有什么区别attrMap and attrs in 美丽汤 http www crummy com software BeautifulSoup 更具体地说 哪些标签有attrs以及哪些有attrMap gt gt gt soup
  • 没有为 WebJob 注册路由

    我已经设置了一个链接到网站的 Azure WebJob 工作正常 我似乎遇到了很多这样的错误 Http Action Response from host site scm azurewebsites net NotFound Respon
  • 使用实体框架迁移删除或重新创建数据库(代码优先)

    这是命令recreate or drop使用实体框架迁移时的数据库 not Initializers 我应该在上面写什么package manager console COMMENT 我正在寻找一些可以为我提供相同功能的命令Database
  • CSS 过滤器反转规则打破了 Chrome 68 上的固定位置[重复]

    这个问题在这里已经有答案了 我使用的是 Chrome 68 每当我有filter invert xxx on the 任何定位为fixed不会粘在屏幕上 它会随所有内容一起滚动 演示与filter invert xxx body heigh
  • ListBox.SelectedIndexChanged 第一次不会触发[重复]

    这个问题在这里已经有答案了 我有一个绑定到 BindingList 的 ListBox 默认情况下该 ListBox 为空 当选定的索引更改时 它应该使用选定对象中的数据更新其他控件 问题是 SelectedIndexChanged 事件不
  • 如何在 android studio (Camera2) 中获得相机分辨率

    我只需要设备的相机分辨率 以像素为单位 我已经尝试过这个 但它在我的应用程序上没有显示任何内容 我想我错过了一些东西 RequiresApi api Build VERSION CODES LOLLIPOP Override protect
  • SQL 不等于或为空

    我们想写这个查询 select from table where col1 blah and col2 something 我们希望查询包含 col1 为 null 并且 col2 something 的行 目前 查询不会对 col1 为空
  • 如何使用 Azure Monitor 或 ADF 本身触发 Azure 数据工厂 V2 中长时间运行的进程的警报通知?

    我一直在尝试找到当 ADF 任务 即 CopyActivity 或存储过程任务 运行超过 N 小时时触发警报的最佳方法 我想使用 Azure Monitor 因为它是推荐的通知之一Azure 中的服务 但是我无法找到 正在运行 的标准 因此
  • django 中的 django NoReverseMatch 异常

    我已经尝试了该网站上的许多解决方案来解决该问题 但仍然收到错误消息 我在这里放置了所有需要的信息 视图 py def about request return render to response homepage about html u
  • PWA:强制 window.open 打开浏览器而不是 PWA

    我构建了一个带有角度前端的 ASP NET Core 应用程序 角度应用程序有 angular pwa节点包设置 因此它是一个渐进式 Web 应用程序 可以安装在 android windows 上 表现得像本机应用程序 我已经使用 Mic
  • 从列表中查找两个数字相加等于特定数字

    这非常糟糕而且混乱 我对此很陌生 请帮助我 基本上 我试图从列表中找到两个加起来等于目标数字的数字 我已经设置了一个例子lst 2 4 6 10 和目标值target 8 这个例子中的答案是 2 6 and 6 2 下面是我的代码 但它又长
  • Wiremock 日期格式

    我想生成以下格式的日期2019 03 28T15 30 59 12 00使用wiremock I tried currentDateTime now timezone Australia Sydney format yyyy MM dd T
  • 添加 Xamarin.Forms.Visual.Material nuget 后,XF Android 项目无法构建

    我有一个 Xamarin Forms 项目 现在我想使用新的视觉 材质功能来改进它 在 IOS 上 它就像一个魅力 在 Android 上 我遇到了奇怪的问题 添加 Xamarin Forms Visual Material nuget 后
  • 将 CLLocation 移动 x 米

    我定义了一个 CLLocation 我想将该点向东移动 x 米 向南移动 y 米 我怎样才能做到这一点 到 Swift 的转换 取自这个答案 https stackoverflow com questions 26490313 calcul
  • 使用 FFmpeg 从 Mac 进行网络摄像头流传输

    我想使用 FFmpeg 从 Mac 流式传输我的网络摄像头 首先我使用检查了支持的设备ffmpeg f avfoundation list devices true i Output AVFoundation input device 0x
  • PL/SQL 的代码覆盖率

    有人有 PL SQL 代码覆盖率的工具或经验吗 我相信使用 DBMS PROFILER 可以做到这一点 http www toadworld com BLOGS tabid 67 EntryID 267 Default aspx http
  • 让 ssh 在目标机器上后台执行命令

    这是一个后续问题如何在 shell 脚本中使用 ssh https stackoverflow com questions 29061 how do you use ssh in a shell script问题 如果我想在远程机器上执行在