相关疑难解决方法(0)

在shell脚本运行时编辑它

您可以在shell脚本运行时编辑它并让更改影响正在运行的脚本吗?

我很好奇csh脚本的具体情况,我有批处理运行一堆不同的构建风格并运行一整夜.如果我在操作过程中发生了某些事情,我想进入并添加其他命令,或者注释掉未执行的命令.

如果不可能,是否有任何shell或批处理机制可以让我这样做?

当然我已经尝试过了,但是在我看到它是否有效之前还需要几个小时,而且我很好奇幕后发生了什么或者没有发生什么.

linux shell csh

81
推荐指数
5
解决办法
4万
查看次数

可以用新版本替换bash脚本会导致脚本的运行实例失败

我正在从服务器上的java程序运行bash脚本.我刚上传了一个新版本的脚本,打算在下一次运行脚本时使用该版本.我并不打算中断现有的,运行的脚本实例.但是,我刚从300台服务器收到100多个崩溃通知.我猜测用新版本替换正在运行的bash脚本导致了这个问题.但是,这将要求运行的bash脚本在进入每个新步骤时从磁盘读取.这是怎么回事?

bash脚本的运行版本运行一些光线跟踪软件.每次运行需要2个小时.子步骤需要5分钟到1.5小时.在脚本中完成一个步骤后,脚本始终报告崩溃.它永远不会报告已经运行的子步骤崩溃.一些崩溃报告没有找到我在脚本中找不到的命令.不同的崩溃报告不同的地方.

救命!

编辑:我使用scp将脚本复制到所有300台服务器.该文件已在文件系统上替换.这不是共享文件.

bash

18
推荐指数
1
解决办法
3668
查看次数

在脚本运行时编辑脚本会发生什么?

如果我是脚本文件并在它仍在运行时保存它会发生什么,并且它会打印我需要的结果.

linux shell

13
推荐指数
1
解决办法
4183
查看次数

如何使shell脚本在运行时对源进行更改

有人注意到,如果修改shell脚本的源代码,那么当前运行的任何实例都可能会失败吗?

这在我看来非常糟糕; 这意味着我必须确保在进行更改之前停止脚本的所有实例.我的首选行为是现有脚本继续使用旧源代码运行,新实例使用新代码(例如perl和python程序会发生什么).

除了将shell脚本预先复制到临时文件并从中运行之外,人们对此行为有什么好的解决方法吗?

谢谢,/ YGA

shell

11
推荐指数
1
解决办法
1360
查看次数

shell脚本是否可以指示其行最初是否已加载到内存中?

更新:这是如何使shell脚本在运行时更改源代码的重新发布

这是一个困扰我的小事情:

  1. 我为一个快速而肮脏的工作编写了一个shell脚本(bash)
  2. 我运行脚本,它运行了很长一段时间
  3. 在它运行时,我在脚本中编辑了几行,为不同的工作配置它
  4. 但是第一个进程仍在读取相同的脚本文件并且搞砸了.

显然,脚本是通过在需要时从文件中加载每一行来解释的.有没有什么方法可以让脚本向shell指示整个脚本文件应该一次性读入内存?例如,Perl脚本似乎这样做:编辑代码文件不会影响当前正在解释它的进程(因为它最初是解析/编译的?).

我知道有很多方法可以解决这个问题.例如,我可以尝试这样的事情:

cat script.sh | sh
Run Code Online (Sandbox Code Playgroud)

要么

sh -c "`cat script.sh`"
Run Code Online (Sandbox Code Playgroud)

...尽管如果脚本文件很大并且流缓冲区和命令行参数的大小有限,那些可能无法正常工作.我还可以编写一个辅助包装器,将脚本文件复制到锁定的临时文件然后执行它,但这看起来不太便携.

所以我希望最简单的解决方案只涉及对脚本的修改,而不是调用它的方式.我可以在脚本开头添加一行或两行吗?我不知道这样的解决方案是否存在,但我猜它可能会使用$ 0变量......

bash shell scripting

10
推荐指数
1
解决办法
2613
查看次数

可以检查它是否在调用时被回调的Shell脚本

我编写了一个依赖于其他服务器响应的脚本(使用wget来提取数据),我希望它始终在后台运行,毫无疑问.我知道一个解决方案就是编写一个包装脚本,它将使用附加的'&'调用我的脚本,但我想避免这种混乱.

有没有办法让bash(或zsh)脚本确定是否用./foo.sh&调用它,如果没有,退出并重新启动它本身?

谢谢大家!

bash shell zsh

3
推荐指数
1
解决办法
1764
查看次数

标签 统计

shell ×5

bash ×3

linux ×2

csh ×1

scripting ×1

zsh ×1