我有一个工作的shell脚本,它调用另一个shell脚本在服务器上运行的一些进程上执行一些操作。这个内部shell脚本有时会提示输入用户and和密码。如果发生这种情况,我希望得到这个内部脚本,并希望对该进程执行kill -9。有没有人能建议一下如何做到这一点?
还有一点,无论我的shell脚本做什么,我都会将其记录在日志文件中,所以我假设当脚本提示输入用户is和密码时,这些信息也会记录在log.So中,这应该是在日志文件中检查这一点的一种方法。
我在Linux操作系统上工作。请查收并提出建议。
发布于 2016-08-09 16:20:54
你可以在超时后杀死你的子脚本:
( cmdpid=$BASHPID; (sleep 10; kill -9 $cmdpid) & exec my-child-script )在这种情况下,您将在给定的时间段(10秒)后杀死my-child-script。
你不能(很容易)检测到你的脚本是否在等待输入(在标准输入上),唯一有效的方法是使用strace/ptrace,但它太复杂了,我不认为这样做真的值得。到目前为止,基于超时的方法似乎更加自然。
您可以在此问题中找到此方法的一些其他示例:
关于日志文件:
您可以使用grep/sed从日志文件中提取数据。为了使答案更具体,我们需要一些额外的数据。
https://stackoverflow.com/questions/38845195
复制相似问题