当前位置: 首页 > 知识库问答 >
问题:

关于如何在linux中与另一个shell交互使用shell的一些问题

段坚
2023-03-14

这篇文章是关于一些自动化任务的,也是为了满足我的好奇心。

这种情况可能吗,有人能提供任何实用的建议吗?

运行shell脚本

shell_exec(bash script);

Bash脚本类似于:

  • 运行一个外壳
  • 读取文件进行输入
  • 将输入传递给shell
  • 从shell获取结果
  • 写入另一个文件以进行输出
  • 保持无限循环

将输入命令写入文件,例如:

  • 等待几秒钟
  • 读取结果的输出文件
  • 根据输出,将新的输入命令写入文件
  • 循环继续

共有2个答案

祁聪
2023-03-14

为了避免部分读取和写入的问题(由于IO缓冲和种族),您可能需要考虑使用I/OK框的目录,例如:

  1. 在目录中用临时名称创建命令文件(例如cmd_'date%s'.txt.tmp)
  2. 写完给定的命令文件后,关闭它(刷新缓冲区),然后重命名它以删除. tmp。重命名在文件系统中是原子的。
  3. 让消耗bash守护程序只看cmd_*. txt(不是. tmp),当它用给定的命令完成时,要么删除cmd文件,要么重命名它,给它一个后缀。(如果您需要多个并行工作守护进程,您甚至可以重命名为“。处理”以“声明”一个cmd,同时处理它。当你这样做的时候,一定要检查重命名的返回代码,看看是否有另一个工人超越了你。)

对输出文件执行同样的操作。

郜玉石
2023-03-14

我将留下一个无耻的链接,链接到一篇文章,在那里我演示了如何使用“expect in php”:http://codehackit.blogspot.be/2012/04/automating-command-line-scripts-in-php.html

基本上,它只是proc_open()的一个包装器,它返回FDs,以便写入和读取另一个进程stdin/stdout。http://php.net/manual/en/function.proc-open.php

 类似资料:
  • 问题内容: 只是想知道,是否有可能单独使用PHP创建一个交互式shell。我的意思是您在数据库,python等方面拥有类似的东西。 如果是,怎么办? 问题答案: 是的,有可能。为了进行交互,该程序必须能够等待并从 stdin中 读取用户输入。在PHP中,您可以通过向打开文件描述符来从 stdin中 读取。从一个不同的问题的答案中获得,这是PHP中的交互式用户提示的示例(当然是从命令行运行时): 当

  • 1.8. 使用 Python 的交互 Shell 既然我们已经安装了 Python , 那么我们运行的这个交互shell是什么东西呢? Python 扮演着两种角色。 首先它是一个脚本解释器, 可以从命令行运行脚本, 也可以在脚本上双击, 象运行其他应用程序一样。它还是一个交互 shell, 可以执行任意的语句和表达式。 这一点对调试、快速组建和测试相当有用。我甚至知道一些人把 Python 的交

  • 本文向大家介绍Linux Shell的一些使用小技巧收集,包括了Linux Shell的一些使用小技巧收集的使用技巧和注意事项,需要的朋友参考一下 检查远程端口是否对bash开放: 让进程转入后台: 将进程转到前台: 产生随机的十六进制数,其中n是字符数: 在当前shell里执行一个文件里的命令: 截取前5个字符: SSH debug 模式: SSH with pem key: 用wget抓取完整

  • Ssh套接字已关闭。想要一个用于Linux的交互式Ssh shell自动化Box 回溯(最近一次调用last):stdin中第1行的文件“”。将('password')文件“C:\Users\venkar2\AppData\Local\Programs\Python36\lib\site packages\paramiko\File.py”写入write self的第402行_将所有(数据)文件“

  • 有没有办法只使用Docker Compose在容器中启动一个交互式shell?我在我的docker-compose.yml: 当我使用docker-compose up启动这个容器时,它会立即退出。是否有任何标志可以添加到命令中,或者作为的附加选项来启动交互式shell? 我知道有本机docker命令选项来实现这一点,只是好奇是否也可以只使用docker Compose。

  • 原文:Using matplotlib in a python shell 警告 该页面的内容已严重过时。 默认情况下,matplotlib 将绘图延迟到脚本结束,因为绘图可能是开销大的操作,并且你可能不想在每次更改单个属性时更新绘图,而是只在所有属性更改后更新一次。 但是在 python shell 中工作时,通常需要用每个命令更新绘图,例如,在更改xlabel()或一行的标记样式之后。 虽然这