发布
社区首页 >问答首页 >关于如何在linux中与另一个shell交互使用shell的一些问题

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

Stack Overflow用户
提问于 2013-12-05 15:48:15
回答 2查看 74关注 0票数 1

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

这种情况是否可能,有人能提供任何实用的指点吗?

运行shell脚本

代码语言:javascript
代码运行次数:0
复制
shell_exec(bash script);

Bash脚本,如:

  • 运行一个外壳;
  • 读取文件输入;
  • 将输入传递到外壳;
  • 从壳中提取结果;
  • 写入另一个文件以供输出。
  • 保持无限循环。

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

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

回答 2

Stack Overflow用户

发布于 2013-12-05 15:58:04

我将留下一个无耻的链接到我演示这样做的帖子,"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

票数 1
EN

Stack Overflow用户

发布于 2013-12-05 17:33:08

为了避免部分读和写的问题(由于io缓冲和争用),您可能需要考虑使用这样的目录--即In /out框:

  1. 在dir中使用“临时”名称(例如"cmd_date +%s.txt.tmp")创建命令文件
  2. 当您完成对给定命令文件的写入时,关闭它(以刷新缓冲区),然后重命名它以删除".tmp“。重命名是文件系统中的原子名称。
  3. 让消费的bash“守护进程”只查看"cmd_*.txt“(而不是.tmp),当它使用给定的命令完成时,要么删除cmd文件,要么重命名它,使其具有".done”后缀。(如果您需要多个并行工作守护进程,您甚至可以在工作时将其重命名为".processing“以”索取“一个cmd。当您这样做时,一定要检查重命名的返回代码,以查看是否有另一个工作人员与您竞争。)

对于输出文件也要这样做。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20404416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档